-
-
컴파일러 구조와 원리 - 컴파일러로 배우는 언어 처리 시스템
아오키 미네로우 지음, 이영희 옮김 / 한빛미디어 / 2010년 9월
평점 :
품절
컴파일러론은 전산 관련 학부 과정에도 심심찮게 포함되어 있는 과정이지만
실제를 이를 완벽히 이해하고 졸업하는 학생들은 별로 없다.
나 역시도 컴파일러를 정복해 보려고 여러번 시도는 해보았지만
그 때 마다 번번히 포기의 쓴 맛을 보았다.
컴파일러 책을 보면 초반에 나오는 구문분석이니 의미해석이니
하는 부분 부터 숨이 턱턱 막혀오더니 이내 검은 것은 글씨요 흰 것은 종이로 보이는
기묘한 상태를 경험하고 이내 책장을 덮어 버리고 만다.
기존 컴파일러 책들이 주로 오래전에 출간된 영미권 원서를 번역한 것인데 반해
이 책은 일본인 저자의 책을 번역한 것이고 최근에 나온 것이라는 것은
다시 한 번 희망을 가지고 일독을 해보게 끔 용기를 주었다.
결론 부터 말하면 이 책은 이전에 읽었던 컴파일러 책과 비교하면 놀랄만큼 쉽다.
(물론 이전에 공부하다만 시도들이 도움이 된 것일 수도 있겠다.)
그렇다고 다루는 내용이 부실한 것도 아니다.
이론 중심이 아니라 실개발 위주로 되어 있어 난해함도 덜하고
처음 부터 끝까지 개발하기가 너무나도 어려운 구문 분석기도 간단히 javaCC를
활용하여 개발 부담을 덜었다.
책의 목표는 Cb (C 플랫) 이라는 컴파일러를 완성해 가는 것이다.
Cb는 C언어의 일부기능을 준으로 일부 기능을 제거한 학습 목적의 컴파일러다.
.NET의 C#이 C의 기능을 한단계 올렸다는 의미인데 반해
C를 기준으로 기능을 한 단계 낮추어 Cb라고 명명한 것은 상당히 센스 있다.
이해하기 쉽게 설명해준 저자와 역자 덕에 컴파일 책을 처음으로 완독 할 수 있었지만
사실 책을 한 번 읽는 다고 새로운 컴파일러를 만들기는 어려울 것이다.
특히 정규표현식을 이용한 구문 분석 같은 부분은 내용이 함축적이고 난해한 면이 있어서
써놓은 규칙은 간신히 따라가며 이해한다고 하더라도
자신의 체계에 맞게 구문 규칙을 만들어 내는 것은 또 다른 수준의 일이기 때문이다.
그러나 새로운 컴파일러를 만들지는 못한다 하더라도
그 과정에서 배운 내용들은 여러 분야에 적용 할 수 있을 것이다.