본문 바로가기

Book review

컴파일러는 어떤 식으로 동작하고 있을까 (컴파일러 구조와 원리)



어느덧 한빛 리더스도 최종단계에 다다르고 있습니다. 오늘 소개할 책은 컴파일러 구조와 원리 입니다. 요즘 대학 IT 학부 커리큘럼에서는 거의 제외되어 있는 컴파일러 구조에 대해서 제대로 알고 졸업하는 학생은 과연 몇이나 될까요? 저도 학생 시절 4년 동안 제대로 배워보지 못한 과목입니다. 이전에는 학교에서 컴파일러를 직접 만드는 일도 있었다는데 요즘은 그저 프로그래밍 언어 배우는 것에 치중된 느낌이라서 아쉬울 따름이죠.

자아 일단 원래의 이야기로 돌아가서 이 책은 컴파일러를 처음부터 만다는 방법에 대해서 나오지는 않습니다. 이미 저자가 gcc 컴파일러의 일부를 변경해서 준비한 C♭ 언어 컴파일러를 가지고 내부 동작 원리와 그 구조에 대해서 설명해주고 있는 책입니다. 

차례를 보면 이 책이 어떤식으로 이야기를 풀어가는지 확인 하실 수 있는데요, 컴파일러가 동작하면서 하는 모든 작업들에 대해서 순차적으로 알려줍니다. 우선 소스 코드 해석 작업으로 시작해서 어셈블리 코드로 변환하고 링크와 로드까지 처음부터 끝까지 모든 부분이 나와 있습니다. 링커, 로더가 무엇이고 dll, h 파일이 내부에서 어떻게 유기적으로 동작하는 지에 대해서 배우실 수 있습니다.내용 중에는 용어 자체가 매우 생소하고 어려운 부분도 있습니다. 하지만 전반적으로 내용이 그렇게 어렵지만도 않고 C나 자바를 조금이라도 아는 사람이라면 아주 즐겁게 몰입할 수 있을 것입니다. 


 표지 구성도 깨끗하고 (이런 표지는 이후 다른 한빛 도서에서 또 볼 수 있더라구요. 이것들도 시리즈로 묶어나오는 것일까요?) 내부 폰트도 큼직하고 가독성이 좋습니다. 다만 지나치게 유연한 표지는 가방속에서 책을 구겨지게 하기에는 충분합니다. 저는 늘 이런책을 읽을대마다 고민에 빠집니다. 집에만 두고 읽기엔 항상 시간이 부족하고 그렇다고 가지고 다니기에는 책의 손상이 심하고... 

우리는 현재의 편의에 빠져서 중요한 것들을 놓치고 지나가는 경향이 있는 것 같습니다. 물론 현재의 편리함을 보장해주는 여러가지 툴의 제공해 주는 편의는 그만큼 이전까지의 번거롭고 복잡함을 탈피하고자하는 뚜렷한 목적에 의해서 만들어진 것들입니다. 하지만 우리는 그런 편리에 묻혀서 기본을 모르고 지나가는 우를 범해서는 안됩니다. 수 많은 RAD툴이 간편하게 제공하는 컴파일러는 우리가 그 동작을 미처 몰라도 프로그램을 만들 수 있게 만들어 줍니다. 하지만 선배님들 세대처럼 컴파일러를 직접만들어 보는 일은 없을지라도 그 구조와 원리에 대해서는 개발을 하는 우리라면 꼭 알고 있어야 하는 그런 상식이 아닐까 생각합니다.