출간일(Release) : 2023/12/20
종이책 출간일(Print Release) : 2023/11/30
전자책 종류(Format) : ePub
Price : KRW 44,000
미리보기(Preview)
책소개(Overview)
프로그래밍 언어 디자인에 관한 최고의 책! Dragon Book보다 재미있다!
OOP와 함수형 프로그래밍을 모두 지원하는, 현대 프로그래밍 언어의 실용적 구현!
매일 사용하고 있는 프로그래밍 언어가 어떻게 설계되고 구현되는지 알고 싶은가? 프로그래밍 언어가 어떻게 작동하고, 바이트 코드로 컴파일되고, 가상 머신에서 실행되는지에 관심이 있는가? 프로그래밍 언어가 어떻게 구축되었는지 더 깊이 이해해서 더 강력하고 유능한 소프트웨어 개발자가 되고 싶은가? 그렇다면 이 책은 당신을 위한 것이다. 이 책은 모든 기능을 갖춘 효율적인 스크립팅 언어를 구현하기 위해 알아야 할 모든 것을 담고 있다.
로버트 나이스트롬은 이 책에서 자신이 디자인한 작은 동적 언어인 Lox에 대해 두 가지 인터프리터를 구축한다. 첫 번째, 제이록스(jlox)는 Java 기반 인터프리터로 스캐닝, 재귀 하강을 사용한 표현식 구문 분석, 표현식, 제어 흐름, 함수 및 클로저, 클래스 및 상속을 평가한다. 아무것도 없는 밑바닥부터 시작하여 각 장의 주제를 구현해내는 모든 코드를 작성, 수정, 추가하며 설명한다.
두 번째, 씨록스(clox)는 C 기반으로 추상 구문 트리를 따라가는 느린 인터프리터 대신 스택 기반 가상 머신을 개발하며 관련 이론과 실제로 고려해야 할 사항을 다룬다. 두 가지 인터프리터를 구현하면서 비슷한 주제에 다르게 접근한다. 예를 들어 제이록스에서는 Java의 HashMap을 사용하여 식별자를 관리하고 Java의 가비지 수집에 의존했다면, 씨록스에서는 해시 테이블과 가비지 수집기를 직접 구현한다. 새로운 프로그래밍 언어를 구축하는 쉽지 않은 길을 위해, 책 전반에 걸쳐 복잡한 주제를 쉽게 이해할 수 있도록 세심하게 설명하고, 코드 역시 명확하고 따라하기 쉽게 넣고자 했다.
The best book on programming language design! More fun than Dragon Book!
A practical implementation of a modern programming language that supports both OOP and functional programming!
Do you want to know how the programming languages you use every day are designed and implemented? Are you interested in how programming languages work, compile to bytecode, and run on virtual machines? Do you want to gain a deeper understanding of how programming languages are built to become a stronger, more capable software developer? Then this book is for you. This book contains everything you need to know to implement a full-featured, efficient scripting language.
In this book, Robert Nystrom builds two interpreters for Lox, a small dynamic language he designed. First, jlox is a Java-based interpreter that performs scanning, parsing expressions using recursive descent, and evaluating expressions, control flow, functions and closures, classes, and inheritance. Starting from scratch, we write, modify, add, and explain all the code that implements the topics of each chapter.
Second, clox develops a stack-based virtual machine based on C instead of a slow interpreter that follows an abstract syntax tree, and covers related theory and practical considerations. By implementing two interpreters, we approach similar topics differently. For example, while X-rox uses Java’s HashMap to manage identifiers and relies on Java’s garbage collection, C-rox directly implements a hash table and garbage collector. To address the difficult path of building a new programming language, we tried to provide detailed explanations throughout the book to make complex topics easy to understand, and to make the code clear and easy to follow.
저자(Author)
로버트 나이스트롬(Robert Nystrom)
20년 간 전문 프로그래머로 활동해왔으며, 그 중 절반 정도는 게임 분야에서 일했다. 일렉트로닉 아츠(Electronic Arts)에서 대작 ‘매든(Madden)’부터 ‘헨리 하츠워스(Henry Hatsworth)의 괴상한 모험’ 같은 소규모 타이틀까지 다양한 게임을 개발했고, 이 시절 『게임 프로그래밍 패턴』(한빛미디어, 2016)을 집필했다. 개인 블로그를 방문하면 재치와 기지가 넘치는 흥미로운 그의 글을 접할 수 있다.
The author has been a professional programmer for 20 years, about half of which has been in the gaming field. He developed a variety of games at Electronic Arts, from the blockbuster ‘Madden’ to smaller titles such as ‘The Bizarre Adventures of Henry Hatsworth.’ During this period, the author wrote 『Game Programming Patterns』. If you visit his personal blog, you can see his interesting writings full of wit and wit.
– blog:
https://journal.stuffwithstuff.com
https://craftinginterpreters.com