코드의 구현 디테일을 제거하는 투영형 뷰어 실험
Experiment – Projectional Viewer
Hacker News프로그래밍 언어의 복잡한 구현 디테일(how)을 제거하고 코드의 핵심 구조와 패턴 자체(what)만을 분리해 보여주는 '투영형 뷰어' 실험이 진행되었습니다.
- 실제 문법 예시를 대상으로 테스트한 결과, 코드를 실행하는 구문이나 처리 블록은 성공적으로 제거하고 순수한 패턴 정의만 남기는 것이 가능했습니다.
- 이는 모든 기능을 단일 언어 패러다임으로 강제하기보다 여러 개의 작고 특화된 도메인 특수 언어(DSL)를 조합할 수 있는 새로운 개발 방향을 제시합니다.
- 현재는 읽기 전용 뷰어로만 구현되어 편집은 불가능하며, 테스트가 단일 예시에 국한되었기에 복잡도가 높은 문법에 대한 추가 검증이 필요합니다.
현대 프로그래밍 언어는 구조를 구현 세부 사항(how) 아래에 묻어두는 경향이 있어, 핵심적인 '무엇(what)'을 파악하기 어렵게 만듭니다. 이 실험은 코드에서 구현 디테일을 제거하는 것이 아니라, 단순히 가시성만 조절하여 코드를 투영적으로 보여주는 방식을 탐구합니다. 목표는 구조의 명확한 그림을 얻는 것이며, 실행 메커니즘의 복잡성을 거치지 않고 해결책의 구조를 파악할 수 있도록 하는 것입니다.
이러한 접근 방식은 특히 PEG(parsing expression grammar) 라이브러리에서 두드러집니다. 기존 구현체들은 문법 자체를 캡처 및 매칭 액션 코드로 감싸버려, 실제 인식하려는 구조가 플러밍에 파묻히는 문제가 있었습니다. 따라서 이 실험은 양방향 편집을 지원하는 대신, 읽기 전용으로 디테일을 제거하는 단방향 과정을 목표로 설정했습니다.
실제 전화번호 문법 예시를 대상으로 테스트한 결과, 구현 세부 사항(예: `copy` 구문이나 후처리 액션 블록)을 성공적으로 분리해내고 순수한 패턴 정의만 남기는 것이 가능함을 확인했습니다. 이 과정은 OhmJS 파서와 RWR 리라이트 시맨틱스를 기반으로 하는 T2T 파이프라인을 통해 이루어졌으며, 원본 코드를 읽기 전용의 간결한 문법 형태로 변환하여 에디터에 표시합니다.
궁극적으로 이 실험은 모든 기능을 단일 범용 언어 패러다임으로 강제하기보다, 여러 개의 작고 특화된 도메인 특수 언어(DSL)를 하나의 코드베이스 내에서 공존시키는 방향을 제시합니다. 이는 코드를 구성할 때 다양한 작은 언어를 조합하는 새로운 개발 방법론의 가능성을 시사합니다.