파싱이론 이야기 1

내 학부 전공은 사실 수학이었는데, 대학교 3학년때 진로를 프로그래밍으로 바꾸었다. 어느날 학교서점에서 컴퓨터 공학 섹션을 지나치다가 우연히 집어든 책이 K&R이었다. 200페이지가 채 안되는 책을 선 자리에서 두어시간만에 다 읽고 책을 사들고 나왔는데, 문득 수학 공부에 회의가 들었다. 수학책은 100페이지짜리 한 권을 읽는데 한학기 내내 끙끙대도 힘든 경우가 많은데, 프로그래밍 책은 왜 이렇게 쉽게 쓰여진 거지?

사실 수학책이라고 해서 꼭 내용이 어려워서 읽기가 힘든게 아니다. 많은 경우 글쓴이의 설명을 해독하는게 어려운 문제가 훨씬 더 크다. 근데 이유는 정확히 알 수 없지만, 컴퓨터 분야에서는 쉽고 명료하게 쓰여진 전문서의 비중이 상당히 높은 편이었다.

대학교 3학년을 마치고 1년 휴학을 하고 여름방학부터 1년 3개월 내내 컴퓨터 책만 읽었다. 물론 컴퓨터 책이라고 항상 다 명료하게 쓰여진건 아니었지만, 나는 다른 어느 과학이나 공학 분야보다 컴퓨터 책들이 잘 쓰여진 편이라고 생각한다. 어떻게 보면 내가 진로를 바꾼 가장 큰 이유가 이런 공부의 ROI 차이 때문이었을 것이다.

개발자들 중에는 종종 프로그래밍 언어를 만들고 싶어하는 경우가 있는데, 그때 첫번째 관문으로 등장하는 것이 바로 파싱이다. 그리고 십중팔구 집어들게 되는 책이 바로 드래곤북이다. 그리고 나는 대부분의 개발자들이 자신만의 프로그래밍 언어를 만드는데 실패하는 가장 큰 이유가 바로 드래곤북 때문이라고 생각한다.

이유는 여러가지로 설명할 수 있겠지만 아주 간단하게 말하면 드래곤북은 사실 수학책에 가깝기 때문이다. 드래곤북의 저자들은 프로그래밍 언어 구현에서의 문법 파싱 문제에 컴퓨터 공학의 오토마타 이론을 접목시켰다. 그건 꽤 흥미로운 접근방법이긴 하지만 1) 이론적으로 지나치게 복잡하고 2) 실효성도 비교적 낮은 방법이다.

나는 전공 덕분에 이런 종류의 이론적 방법론의 실용성에 대해 의심부터 먼저 하는 습관이 있는데, 덕분에 드래곤북을 건너뛸 수 있었다. 아무튼 중요한건 프로그래밍 언어를 만드는데 오토마타 이론은 사실 전혀 필요가 없다..는 사실이다.

다음 이야기는 2편에서.

Copyright @ 2018 Dae San Hwang (Theme: Doo by ThemeVS)