회사일에 치여 PL 공부 안 한지가 너무 오래되서 요즘은 환기 차원에서 브라운 대학의 Shriram Krishnamurthi 교수가 쓴 Programming Languages: Application and Interpretation를 지하철 오가면서 틈틈이 보고 있습니다. 이 책은 대학에서 프로그래밍 언어 과목을 가르치면서 만든 프로그래밍 언어(PL) 교과서입니다. Pierce의 Types and Programming Languages처럼 무겁과 이론적인  설명을 피해 비교적 가벼운 접근 방법을 취하고 있습니다.


이 책에서 언급하지만 프로그래밍 언어는 크게 4가지로 나눠서 공부할 수 있습니다.

1. 문법(syntax)
2. 의미(semantics)
3. 라이브러리(library)
4. 용법(idioms)


1번 문법과 관련해서는 오토마타 형식 언어와 컴파일러의 파서 쪽에서 주로 다루고 있습니다. 3번과 4번은 각 언어 커뮤니티에서 방대한 정보를 제공하고 있고요. PL 이론서는 보통 1, 3, 4번은 과감히 생략하고 언어의 의미를 어떻게 정의할 것인가에 초점을 맞추고 있습니다. 이 책도 역시 프로그래밍 언어의 의미를 부여하고 검증(sound, complete)하는 방법에 대해 이야기합니다.

PL 이론서들은 주로 Operational Semantics, Denotational Semantics, Axiomatic Semantics 등으로 접근 방법을 달리하고 있습니다. 그나마 이해하기 쉬운 게 Opeational Sematnics인데, 입문자는 이 역시 이해하기가 어렵습니다. 이 책은 PL 입문자들을 위해 Operational Semantics에 접근하기 위해 먼저 간단한 인터프리터를 구현해 나가는 방법을 택하고 있습니다. 또한, Continuation Passing Style을 설명하면서 웹프로그래밍을 예로 드는 등 실제 프로그래밍과 연결 고리를 찾기 위해서 고심한 흔적도 보입니다.

너무 머리 아프지 않은 PL 입문서를 찾으신다면 권장해 드립니다. 물론 그런 후에도 Pierce 책은 필독입니다.