만들면서 배우는 인터프리터
1. 이 책은?
이 책은 컴파일러를 실제로 제작하는 교재이다. 컴퓨터 공학을 전공하면서 재수가 좋으면 3학년, 4학년 정도 되면 컴파일러 수업을 듣게 된다. 혹은 프로그래밍 언어론이란 이름의 수업을 수강하게 된다.
그리고 수업을 수강하면서 중간고사가 끝나면 yacc를 이용해서 컴파일러를 하나 만들게 되는 최종 과제를 부여받게 된다. 이게 생각보다 쉽지 않을 뿐더러 yacc를 사용해서 만들기 때문에 버겁기도 하다. 거기다가 본인이 컴파일러를 만들게 된다는 생각에 조금 부담스럽기도 하다.
하지만 이 책은 C++로 인터프리터 컴파일러를 만든다. 중요한 내용을 간단하게 소개하고, C++ 코드를 중심으로 설명하고 있기 때문에 기본적인 컴파일러에 대한 내용을 알고 있다면 손쉽게 따라갈 수 있다.
하지만 책을 리뷰하는 곳에서 쉽다고 말해서 쉬웠던 경우가 별로 없다는게 컴퓨터 공학 교재 및 책들의 함정이지만, 다른 책에 비해서 이 책은 모든 코드를 소스 파일로 제공하고 있다. 최소한 코드 때문에 고생할 일은 없다. 그리고 윈도우 환경에서 100% 컴파일 되기 때문에 일단 실행되는 프로그램을 대상으로 분석한다는 기분으로 진행하면 컴파일러는 못 배워도 최소한 C++ 실력은 충분히 향상 시킬 수 있다.
결로적으로 이 책은 쉽고, 좋다!
2. 장점과 단점
이 책의 최대 장점은 인터프리터 컴파일러를 만들면서 선택한 언어가 yacc가 아니라 C++ 언어란 것이다. 컴파일러의 바이블이라 할 수 있는 용책(Dragon Book)은 너무 이론 중심이고, 다른 실습을 겸비하는 책은 대부분의 문제가 yacc로 폴게 되어있기 때문에 yacc를 배워야하는 부담감이 있다. 하지만 이 책은 C++을 사용해서 코드를 작성하기 때문에 읽기 쉽고, 수정이 편하기 때문이다. 이것은 언어에 대한 상대적 부담감이 적은 독자들만 그렇게 느낄지 모르겠지만, C++이라고 하지만 대부분의 코드가 C언어 정도만 알면 충분히 이해할 수 있을만큼 코드가 간결한다.
반면, 이 책의 가장 큰 단점은 컴파일러에 대한 내용이 빈약하다. 책이 매우 얇기 떄문이기도 하지만 책의 컨셉이 인터프리터를 만드는데 목적이 있기 때문이다. 내용의 빈약성은 용북(dragon book)을 통해서 보완해야 한다. 그리고 이 책에 나오는 내용 중에서 어휘분석에 관련된 내용은 꼭 다른 교재를 참고하기 바란다. 너무 간단하게 설명하기 때문에 내용이 충분하지 않다.
3. 총평
맨날 두껍다 못해서 전화부 같은 컴파일러 책만 구경하다가 이번에 얇고 재미있는 책을 읽을 수 있어서 기분이 좋았다. 내용이 단순하고 코드 중심으로 되어 있기 때문에 토요일 하루를 이 책으로 보낸 것 같다.
컴파일러를 만들고 싶은 분들에게 추천하고 싶다. 만들면서 배우고, 이론적으로 접근한 책을 읽는다면 더 큰 도움이 될 것이라 확신한다.