Crafting Compilers (Chapter 1.1) : 프로그래밍 언어 만들기

프로그래밍 언어 만들기 컴파일러를 만들기 전에, 우리는 먼저 언어를 정의해야 합니다. 프로그래밍 언어는 단순히 구문으로 정의되는 것이 아닙니다. 사실 프로그래밍 언어는 인간과 컴퓨터 사이의 사용자 인터페이스입니다. 프로그래밍 언어란 무엇인가? 추상화는 컴퓨터 과학의 핵심 개념 중 하나입니다. 추상화가 없다면, 컴퓨터로 무언가를 하기 위해서는 전기 신호, 메모리 레이아웃, 레지스터, 그리고 수많은 하드웨어의 특징을 고려해야 할 것입니다. 프로그래밍 언어는 이러한 복잡성을 단순화합니다. 그것은 아이디어를 표현하는 인간 친화적인 방법을 제공하면서, 그것들을 작동하게 만드는 low-level 메커니즘을 숨깁니다. 이런 의미에서, programming language는 computing을 위한 UI로 기능합니다—하드웨어를 수동으로 조작하는 대신, 로직, 애플리케이션, 그리고 시스템을 구축하는 데 집중할 수 있게 해주는 계층입니다. ...

12월 13, 2025 · 8 분 · 1499 단어
SGLang

SGLang paper review

SGLang의 철학 LLM이 도입된 이후, LLM은 문제 해결, 코드 작성, 질문 답변 등 다양한 분야에서 복잡한 작업을 해결하는 데 사용되어 왔습니다. 오늘날 LLM은 에이전트 능력을 확장하여 인간의 개입 없이 사용자가 요청한 작업을 완료하고 있습니다. 이를 위해서는 skeleton of thought나 tree of thought와 같은 다양한 프롬프팅 기법이 필요합니다. 즉, 우리는 LLM이 특정 패턴을 따르도록 구조화하여 우리의 요구에 맞추고, 요구사항을 충족하도록 제어하고 안내하기 위한 프로그래밍 가능성을 필요로 합니다. 저자들은 현재 솔루션에서 이 과정이 비효율적이었다고 주장하며, 그 이유는 다음과 같습니다: ...

11월 29, 2025 · 6 분 · 1071 단어

Crafting Compilers

Crafting compilers Compilers 이 포스팅 및 앞으로 쓰게 될 시리즈는 compiler가 무엇인지, 어떻게 만들어지는지, 그리고 직접 compiler를 만드는 방법을 설명하는 시리즈가 될 것입니다. Compiler는 (어느 정도는) 복잡한 프로그램으로, 사람이 작성한 high-level 프로그램(주로 English 형태로 존재하는)을 컴퓨터가 이해할 수 있는 binary 형식으로 변환합니다. Compiler engineering은 이러한 변환 과정을 어떻게 설계할 것인지 결정하는 일입니다. 우선 “프로그램"이 무엇인지, 그리고 어떻게 생겼는지부터 생각해보겠습니다. 저는 프로그램을 하드웨어가 실행해야 하는 명령어들의 순서라고 정의할 수 있다고 생각합니다. 가장 낮은 수준에서는 프로그램은 단순히 ‘1’과 ‘0’으로 이루어진 명령어들의 시퀀스입니다. 프로그램이 표현되던 초기 형태 중 하나는 IBM 360 같은 컴퓨터에서 사용되던 assembly language였습니다. 과거의 프로그래머들은 하드웨어 명령어를 직접 작성하여, 우주 로켓의 궤적 계산이나 은행 계좌 관리 같은 아주 중요한 프로그램들을 만들었습니다. 이러한 명령어들은 컴퓨터가 각 단계에서 무엇을 해야 하는지를 직접 표현했으며, 프로그래머는 컴퓨터가 가진 모든 하드웨어 디테일을 이해해야 했습니다. Register usage, memory state, 기타 모든 하드웨어 세부 사항을 직접 계산해야 했고, 잘못 계산하면 프로그램이 오작동하거나 심각한 문제가 발생할 수 있었습니다. ...

11월 16, 2025 · 3 분 · 536 단어