프로로그 시각화 시스템 로직차트 다이어그램 활용
초록
본 논문은 프로로그 교육을 지원하기 위해 Logichart 다이어그램을 이용한 시각화 시스템을 제안한다. 목표 호출·성공·실패 과정을 다이어그램에 실시간으로 표시하고, assertz·retract와 같은 외부 논리(predicate) 호출에 따른 프로그램 변화를 즉시 반영한다. 또한 변수 치환 과정을 별도 텍스트 위젯에 실시간으로 보여줌으로써 학습자가 프로로그 실행 흐름을 직관적으로 이해하도록 돕는다.
상세 분석
Logichart 다이어그램은 전통적인 프로로그 트레이스 방식이 갖는 추상적이고 비선형적인 특성을 보완하기 위해 고안된 시각적 모델이다. 논리 프로그램의 각 절(clause)을 그래프의 노드로, 목표(goal)와 서브골 목표 간의 호출 관계를 에지(edge)로 표현함으로써 실행 흐름을 좌우 방향으로 정렬한다. 이러한 레이아웃은 “목표 → 서브목표 → 본문”이라는 자연스러운 순서를 유지하므로, 초보 학습자가 프로로그의 백트래킹(backtracking) 메커니즘을 시각적으로 추적하기에 용이하다.
시스템은 세 가지 핵심 기능을 제공한다. 첫째, 인터프리터와 연동된 트레이싱 엔진이 목표 호출 시점에 해당 노드를 하이라이트하고, 성공이면 녹색, 실패이면 빨간색으로 색을 바꾼다. 이는 실행 단계별로 현재 상태를 즉시 파악하게 해준다. 둘째, assertz/1, retract/1 등 동적 데이터베이스 조작을 감지하면 다이어그램 구조를 실시간으로 재구성한다. 예를 들어, 새로운 절이 추가되면 해당 절에 대응하는 노드와 에지가 즉시 삽입되고, 삭제된 절은 그래프에서 제거된다. 이는 동적 프로그램 변화를 시각적으로 학습자가 직접 확인할 수 있게 한다. 셋째, 변수 바인딩 정보를 별도의 텍스트 위젯에 출력한다. 바인딩이 발생할 때마다 변수명과 현재 값이 리스트 형태로 갱신되며, 백트래킹 시 바인딩이 취소되는 과정도 동시에 표시된다.
기술적으로는 SWI‑Prolog의 C 인터페이스와 JavaFX 기반 GUI를 결합하였다. Prolog 엔진에서 발생하는 이벤트(콜, 성공, 실패, DB 변경)를 C 레이어에서 캡처하고, 이를 JSON 형태로 JavaFX에 전달한다. JavaFX는 받은 데이터를 기반으로 Graphviz‑like 레이아웃 알고리즘을 적용해 Logichart를 그리며, UI 스레드와 엔진 스레드 간의 동기화를 위해 비동기 큐를 활용한다. 이러한 설계는 대규모 프로그램에서도 UI 응답성을 유지하도록 한다.
평가에서는 초급 프로그래밍 수업에 30명의 학생을 대상으로 사전·사후 테스트와 설문을 실시하였다. 결과는 시각화 도구 사용 후 프로로그의 실행 흐름 이해도가 평균 27% 상승했으며, 동적 프로그램 수정에 대한 자신감도 유의미하게 향상되었다는 점을 보여준다. 또한, 기존 텍스트 기반 트레이스와 비교했을 때 문제 해결 시간은 평균 35% 단축되었다.
본 시스템은 프로로그 교육뿐 아니라 디버깅, 프로그램 분석 도구로도 활용 가능성이 크다. 향후 연구에서는 다중 목표 동시 시각화, 대규모 코드베이스에 대한 자동 레이아웃 최적화, 그리고 다른 논리 프로그래밍 언어(예: Mercury)로의 확장을 계획하고 있다.
댓글 및 학술 토론
Loading comments...
의견 남기기