정보
제목 : 밑바닥부터 만드는 인터프리터 in Go
저자 : 토르슈텐 발 (역자 : 박재석)
출판사 : 인사이트
요약
이 책은 저자가 설계한 컴퓨터 언어의 인터프리터를 Go언어로 만드는 일련의 과정을 보여주는 책이다.
인터프리터(혹은 프로그래밍 언어 제작)라는 주제는, 꽤나 매니악한 주제임은 틀림없다. 시중에 해당 주제에 관한 글이나 책을 검색해도 별로 나오지 않을 뿐더러 나오더라도 수박 겉핥기식 아니면 지나치게 이론적이다. 이 책의 저자는 이런 양분화된 난이도의 인터프리터 관련 서적에서 중간에 위치하는, 이론과 용이성을 절충한 책을 내고 싶었다고 머릿말에서 밝혔다. 그리고 이러한 생각은 책 전반에 걸쳐 녹아 있다고 확실히 느껴졌다. 어려운 용어는 되도록 줄이되 어쩔 수 없는 경우 최대한 풀어서 설명하려고 노력한 흔적이 많이 보였다. 또한 기능을 하나씩 차근차근 구현해나가는 방식은 각 부분이 그렇게 어렵지 않게 보이면서도 묘한 성취감을 느끼기에 충분했다.
이 책이 대단하다고 느낀 점은 이 뿐만이 아니다. 보통의 책은 코드를 짜고 구현하는 정도에서 끝난다. 이 책도 주제의 특성상 그렇기만 해도 괜찮은 책이라고 느꼈을 것이다. 하지만 이 책은 여기에 더해 철저히 TDD를 지키면서 개발한다. 인터프리터라는 주제를 떼고 보아도, 이 책은 TDD의 교과서로써 손색이 없다.
번역 역시 깔끔했다. 필자가 감명 받았던 부분은 해당 문장의 '파싱 함수'가 사실 '파싱 메소드'로 불리는 것이 더 정확하다는 것과, 그럼에도 왜 이것을 '파싱 함수'라고 번역했는지에 대한 주석이었다. 글쓴이의 의도를 왜곡하지 않으면서 독자가 좀 더 이해하기 쉽게 하려는 배려가 느껴졌다.
유의점
이 책에 있는 코드는 타입 단언(Type assertion) 등 어느 정도 Go언어에 익숙할 때 이해할 수 있는 기술들을 사용하기 때문에 Go언어에 대한 사전 지식이 필요하다. 또한 나름 쉽게 풀어냈지만 인터프리터(프로그래밍 언어론) 주제 자체의 매니악함 때문에 술술 읽히는 느낌은 아니다. 필자는 첨부된 코드를 어떤 원리로 작동하는지 파악해가며 한 줄씩 읽을 때 본문의 글이 좀 더 이해하기 쉬웠다.
총평
독창적이고 완성도 높은 책이다.
인터프리터나 프로그래밍 언어 제작 분야에 입문하려는 사람들에게 입문서로는 최고의 책이며, Go 언어를 사용하는 사람은 TDD를 실전에서 사용하는 방법을 깨우치는 데에 최고의 책이라고 생각한다. 이 책의 후속편인 '밑바닥부터 만드는 컴파일러 in Go' 역시 읽을 예정이다.