Each language version is independently generated for its own context, not a direct translation.
1. 문제: "코드는 텍스트지만, 프로그램은 구조물이다"
우리가 코드를 작성할 때는 키보드로 글자 (텍스트) 를 입력합니다. 하지만 컴퓨터가 이해하는 코드는 단순한 글자 나열이 아니라, **나무 가지처럼 연결된 복잡한 구조 (트리)**입니다.
- 기존의 딜레마:
- 텍스트 편집기 (일반적인 코드 에디터): 글자를 입력하고 지우기 쉽지만, "이 글자가 어떤 구조의 일부인지"를 실시간으로 파악하기 어렵습니다. 예를 들어, 코드를 수정할 때 툴이 "아, 이 부분이 변했구나!"라고 알아차리려면 매번 코드를 다시 해석 (파싱) 해야 해서 번거롭고, 실수하면 툴이 제자리를 잃어버립니다.
- 구조 편집기 (레고 방식): 코드를 글자가 아닌 '블록'으로 다룹니다. 구조가 항상 정확하므로 툴이 정보를 얻기 쉽습니다. 하지만 사용자가 글자를 치듯 자유롭게 코드를 수정하기 어렵고, 배우는 데 시간이 많이 걸립니다.
이 논문은 이 두 세계를 섞으려 합니다. 사용자는 익숙한 **텍스트 (글자)**로 코드를 수정할 수 있지만, 그 뒤에서는 **구조 (레고 블록)**가 자동으로 정리되어 툴이 항상 정확한 위치에 붙어 있도록 해주는 것입니다.
2. 해결책: "보이지 않는 마법사 (HybridSE)"
이 시스템의 핵심은 **하이브리드 구조 편집 (HybridSE)**이라는 '마법사'입니다. 이 마법사는 다음과 같은 일을 합니다.
① 구조 추적 (Structure Tracking): "이름표가 붙은 레고"
코드를 수정할 때, 마법사는 "이 글자가 삭제된 게 아니라, 그냥 위치가 바뀐 거야"라고 알아냅니다.
- 비유: 레고 성을 짓다가 벽돌 하나를 옮겼다고 해서, 그 벽돌 위에 붙여둔 '작은 전구 (툴)'가 떨어지는 게 아니라, 벽돌이 이동할 때 전구도 자연스럽게 따라가게 만드는 것입니다.
② 중첩 편집 (Nested Editors): "작은 창문 속의 또 다른 창문"
코드 중 특정 부분만 떼어내어 별도의 편집창으로 보여주는 기능이 있습니다.
- 비유: 책 한 장을 찢어내어 작은 창문으로 만든 뒤, 그 창문 안에서도 다시 책을 읽거나 수정할 수 있게 하는 것입니다. 이때 원래 책의 들여쓰기 (인덴테이션) 가 깨지지 않도록 마법사가 자동으로 정리해 줍니다.
③ 구조 접근 (Structured Access): "실시간 데이터 연결"
코드를 실행했을 때의 값 (예: 변수의 현재 숫자) 을 코드 바로 옆에 보여줍니다.
- 비유: 요리할 때 냄비 위에 온도계를 꽂아두는 것처럼, 코드를 실행하는 순간 그 부분의 '온도 (값)'가 바로 표시되는 것입니다.
3. 실제 작동 원리: "잠시 멈춤과 되돌리기"
사용자가 코드를 수정하다가 문법 오류를 만들면 어떻게 될까요?
- 기존 방식: 에디터가 "오류!"라고 붉게 표시하고, 툴이 사라지거나 엉뚱한 곳으로 이동할 수 있습니다.
- 이 시스템의 방식:
- 사용자가 글자를 입력하면, 마법사는 "잠깐, 이 상태로 가면 툴이 사라질 것 같아!"라고 판단합니다.
- 잠시 멈춤 (Freeze): 글자는 화면에 보이지만, 실제 구조는 마지막 안전한 상태로 유지됩니다.
- 알림: 화면에 "잠시만요, 코드가 아직 완성되지 않았습니다"라고 부드럽게 알려줍니다.
- 해결: 사용자가 코드를 완성하면 마법사가 "이제 안전해!"라고 판단하고, 모든 툴과 구조를 한 번에 업데이트합니다.
이 과정은 마치 교량 공사와 같습니다. 다리를 수리할 때, 통행이 완전히 끊기는 게 아니라 임시 다리를 설치해 두었다가, 본 공사가 끝나면 자연스럽게 연결하는 방식입니다.
4. 왜 이것이 중요한가요? (사례)
이 기술을 사용하면 다음과 같은 멋진 도구들을 만들 수 있습니다.
- 플레이스홀더 (Placeholder): "여기에 코드를 입력하세요"라고 빈칸을 만들어두면, 사용자가 입력하는 순간 자동으로 코드로 변환됩니다.
- 언어 중첩 (Language Composition): 자바스크립트 코드 안에 SQL(데이터베이스 언어) 을 넣을 때, 따옴표나 특수 문자를 일일이 처리할 필요 없이, 마치 SQL 전용 에디터처럼 자연스럽게 작성할 수 있습니다.
- 코드 브라우저: 파일 전체를 한눈에 보기 좋게 나열하고, 클릭하면 해당 부분만 확대되어 편집할 수 있습니다.
5. 결론
이 논문이 제안하는 하이브리드 구조 편집은 "사용자는 편하게 텍스트를 타이핑하고, 개발자 (툴 제작자) 는 구조를 안전하게 다룰 수 있게" 해주는 교량 역할을 합니다.
기존의 텍스트 에디터의 익숙함과, 구조 편집기의 강력한 기능을 모두 가져와서, 코드를 더 직관적이고 안전하게 다룰 수 있는 미래의 개발 환경을 만드는 것이 목표입니다. 마치 운전자가 핸들을 돌리는 것만으로도 차가 자동으로 차선을 유지하고 사고를 예방하는 '자율주행' 같은 기술이 코드 편집기에 적용된 셈입니다.