여러분은 지금 멀고 험난한 대장정의 시작점에 있다. 이 책은 한장 한장 흥미진진한 언어의 세계로 안내할 것이다. 이 책에서는 프로그래밍 언어의 인터프리터를 직접 구현한다. 또 구현할 가치가 있는 언어를 디자인하는 방법을 차근차근 설명한다. 지금부터 완전한 기능을 갖춘 언어를 두 개의 완전한 인터프리터로 구현하는 과정을 하나씩 살펴보겠다. 여러분이 언어의 내면을 들여다보는 것은 처음이라 보고, 실행 가능하면서도 성능이 빠른, 완전한 언어 구현체를 만들기 위해 필요한 개념과 코드를 단계별로 설명할 것이다.
개인적으로 직접 실행해보면서 배우는 게 최고라고 생각한다. 추상적 개념으로 가득한 단락의 파도를 넘고 넘어 내 것으로 만들기는 어렵지만, 직접 코드를 짜서 실행하고 디버깅을 해보면 비로소 내 산 지식이 된다. 나는 여러분이 이 책을 다 읽고 나서 실제 언어가 어떻게 살아 숨 쉬는지 확실히 깨닫고, 나중에 다른 더 이론적인 책을 읽더라도 이 책에서 실습을 통해 이해한 기반을 바탕으로 개념을 마음 속에 단단히 새겼으면 좋겠다.
언어를 구현하는 일은 진정한 프로그래밍 스킬의 시험대다. 코드는 복잡하고 성능은 중요하다. 재귀, 동적 배열, 트리, 그래프, 해시 테이블의 달인이 되어야 한다. 늘 프로그래밍을 하면서 해시 테이블을 사용해왔어도 정말 해시 테이블을 완전하게 이해하고 있는 사람은 드물다. 장담컨대, 처음부터 해시 테이블을 만들어보면 확실하게 이해하게 될 것이다.