자바 & C 언어로 직접 만드는 인터프리터, 컴파일러 | 책 CRAFTING INTERPRETERS 서평

2023. 12. 13. 23:50도서 리뷰

CRAFTING INTERPRETERS 책 소개

▲'크래프팅 인터프리터(CRAFTING INTERPRETERS)'는 아마존 컴파일러 관련 도서 중 베스트셀러 2위에 올라있는 책입니다. 1위가 킨들 언리미티드에 포함된 도서니까 '크래프팅 인터프리터'는 사실상 컴파일러 1위 책이라고 할 수 있겠네요.

책의 저자는 유명 개발자인 '로버트 나이스트롬'입니다. 번역은 자바 전문가인 이일웅 님이 하셨습니다.

 

'Crafting Interpreters'에서는 Java와 C언어를 이용해 두 개의 인터프리터를 개발합니다. 이름은 각각 jlox, clox로, jlox는 자바를 이용해 조립하듯이 구현한다면 clox는 부품 하나하나를 직접 다 만드는 느낌으로 바닥부터 구현을 합니다.

 

서비스 구현하기도 바쁜데 컴파일러나 인터프리터를 만들어 볼 시간이 있나? 아니, 시간은 있는데 이런 걸 만들어서 나한테 도움이 되나? 이렇게 생각할 수도 있습니다.

저자는 이렇게 비유합니다. "자동차를 운전만 하던 사람이 후드를 열고 엔진을 수리할 수 있게 되는 셈이다."

어디까지 관심을 가지고 깊이 들어가느냐의 문제겠죠?! 엔진을 수리할 수 있게 되면 작은 엔진 정도는 직접 만들 수도 있을테고, 그렇다보면 이 분야에서 최고의 위치까지 가게 되지 않을까 싶어요.

 

컴파일러나 인터프리터를 만드는 것은 상당히 어려운 작업입니다. 컴공 학부에서도 4학년 때 배우는 과목이고, 많은 학생이 기피하는 수업이기도 합니다. 하지만 공부해 놓으면 개발할 때 큰 도움이 되는 건 사실이고, 특히 새로운 언어를 습득할 때 빠르게 이해할 수 있게 해줍니다.

'Crafting Interpreters'를 보고 이 책을 컴파일러 전공 서적으로 선정했으면 무지하게 쉬웠겠다는 생각을 했습니다. 구성과 번역이 좋고 표와 이미지를 중간 중간에 잘 썼습니다. 덕분에 어려운 걸 볼 때 필연적으로 뿜어져 나오는 뇌의 스트레스(!)를 적절하게 잘 잡아줍니다.(^^;;~)

(학교에서 컴파일러 수업 들으실 분은 이걸로 선행 학습 하세요~~ A+ 보장입니다ㅎㅎ)

 

가나다

 

"Crafting Interpreters"는 프로그래밍 언어 디자인에 관한 최고의 책 중 하나로 꼽히며, OOP와 함수형 프로그래밍을 모두 지원하는 현대 프로그래밍 언어의 실용적 구현을 다룹니다. 이 책은 Lox라는 작은 동적 언어를 구현하기 위해 알아야 할 모든 것을 담고 있습니다. 이 책은 프로그래밍 언어를 처음 접하는 사람도 이해할 수 있도록 구성되어 있습니다. 이 책을 읽기 전에 Java와 C 언어에 대한 기본적인 지식이 필요합니다.

 

"Lox"는 "Crafting Interpreters"라는 책에서 소개된 작은 동적 언어입니다. 이 언어는 Java와 C 언어를 기반으로 하며, 이 책에서는 Lox 인터프리터를 구현하는 방법을 설명합니다. Lox는 다음과 같은 특징을 가지고 있습니다:

Lox는 동적 타입 언어입니다.
Lox는 C 계열 언어의 문법을 따릅니다.
Lox는 객체 지향 프로그래밍과 함수형 프로그래밍을 모두 지원합니다.
Lox는 가비지 컬렉션을 사용합니다.
이 책은 프로그래밍 언어를 처음 접하는 사람도 이해할 수 있도록 구성되어 있습니다.

 

"Crafting Interpreters"에서 Lox를 사용하는 이유는 Lox가 작은 동적 언어이기 때문입니다. 이 책은 Lox를 구현하기 위한 모든 것을 다루고 있으며, Java와 C 언어를 기반으로 한 두 개의 인터프리터를 구현합니다. 이 책은 프로그래밍 언어를 처음 접하는 사람도 이해할 수 있도록 구성되어 있습니다. Lox는 동적 타입 언어이며, C 계열 언어의 문법을 따릅니다. 또한 객체 지향 프로그래밍과 함수형 프로그래밍을 모두 지원하며, 가비지 컬렉션을 사용합니다. 이 책은 프로그래밍 언어 디자인에 관한 최고의 책 중 하나로 꼽히며, OOP와 함수형 프로그래밍을 모두 지원하는 현대 프로그래밍 언어의 실용적 구현을 다룹니다.

 

"Crafting Interpreters"에서는 Java와 C 언어를 기반으로 한 두 개의 인터프리터를 구현합니다. 이 책은 Lox라는 작은 동적 언어를 구현하기 위해 알아야 할 모든 것을 다루고 있습니다. 이 책의 예제는 Java와 C 언어를 사용하여 구현되었지만, 이 책의 내용은 다른 언어로도 구현할 수 있습니다. 이 책의 GitHub 저장소에는 TypeScript, Rust, Python, Go, Ruby, Swift 등 다양한 언어로 구현된 Lox 인터프리터가 있습니다. 이 책은 프로그래밍 언어를 처음 접하는 사람도 이해할 수 있도록 구성되어 있습니다. 

 

"Crafting Interpreters"에서 구현된 인터프리터의 성능은 책의 저자인 로버트 나이스트롬이 "Crafting Interpreters"의 웹사이트에서 다음과 같이 말하고 있습니다.

“Clox는 느린 인터프리터입니다. 그러나 이 책에서는 성능 최적화에 대한 몇 가지 아이디어를 제공합니다. 이 책에서 설명하는 최적화 기법을 사용하면 Clox를 충분히 빠르게 만들 수 있습니다. 그러나 Clox는 여전히 C 계열 언어의 인터프리터보다 느립니다.”

따라서, Clox는 C 계열 언어의 인터프리터보다 느리지만, 이 책에서 설명하는 최적화 기법을 사용하면 충분히 빠르게 만들 수 있다는 것입니다. 이 책은 프로그래밍 언어를 처음 접하는 사람도 이해할 수 있도록 구성되어 있습니다.

 

http://gilbut.co/c/23112223en