처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.05.12 91

7줄 코드, 3분 만에 만드는 프로그래밍 언어 — Matt Might의 고전 글

Hacker News 원문 보기

왜 지금 이 글인가

Matt Might라는 컴퓨터 과학자가 2010년에 쓴 글이 다시 회자되고 있어요. 제목은 "7 lines of code, 3 minutes: Implement a programming language"인데요, 말 그대로 단 7줄짜리 Racket(Scheme 계열의 함수형 언어) 코드로 진짜 동작하는 프로그래밍 언어 인터프리터를 만드는 법을 보여주는 글이에요. 15년 전에 쓴 글이지만, 지금 봐도 "프로그래밍 언어가 뭘로 만들어지는지"를 가장 우아하게 보여주는 자료 중 하나로 꼽혀요.

프로그래밍 언어를 만든다고 하면 보통 컴파일러 책 두꺼운 거(드래곤북이라고 부르는 그 책 있죠), Lex와 Yacc, AST 변환, 코드 생성... 같은 거대한 그림이 떠오르잖아요? Matt Might는 "그 모든 게 사실 핵심 아이디어 하나에서 나온다"는 걸 7줄로 증명해 보여요.

7줄의 마법 — 무슨 코드냐면

핵심 아이디어는 이거예요. 프로그래밍 언어 인터프리터의 본질은 "환경(environment)에서 변수를 찾아서 표현식을 평가하는 함수" 하나예요. Racket으로 쓴 그 7줄을 한국어로 풀어보면 대충 이래요.

  • 표현식이 숫자면? 그냥 그 숫자를 돌려줘.
  • 표현식이 변수 이름이면? 환경(딕셔너리 같은 거)에서 그 이름의 값을 찾아서 돌려줘.
  • 표현식이 람다(익명 함수) 정의면? "이건 함수다" 표시를 붙여서 돌려줘.
  • 표현식이 함수 호출이면? 함수를 평가하고, 인자도 평가하고, 인자를 환경에 추가한 뒤 함수 본체를 평가해.
이게 끝이에요. 진짜로 끝이에요. 이 작은 인터프리터 위에서 람다 계산법(Lambda Calculus) 의 모든 것을 표현할 수 있어요. 람다 계산법이 뭐냐면, 1930년대에 Alonzo Church라는 수학자가 만든, 함수와 변수만으로 모든 계산을 표현할 수 있다는 이론이에요. 튜링 머신과 동등한 계산력을 가진 모델이고요. 즉, 이 7줄짜리 인터프리터는 이론적으로 튜링 완전(Turing-complete) 한 거예요. 어떤 알고리즘이든 표현 가능하다는 뜻이죠.

왜 이게 충격적인가

생각해보세요. 우리가 매일 쓰는 Python, JavaScript, Java, Go... 이 모든 언어의 핵심 평가 엔진(eval engine)이 사실 이 7줄과 본질적으로 같은 일을 하고 있다는 거예요. 물론 실제 언어들은 타입 시스템, 가비지 컬렉터, 모듈 시스템, 표준 라이브러리, JIT 컴파일러 같은 게 위에 얹혀 있어서 거대해진 거지, 계산의 본질은 "환경에서 값을 찾아 표현식을 평가하는 것" 이라는 거예요.

그래서 함수형 프로그래밍을 공부하면 "아 컴퓨터가 이런 식으로 동작하는구나"가 더 명확해지는 거예요. JavaScript의 클로저, Python의 데코레이터, Rust의 트레이트, Haskell의 모나드 같은 것들이 다 이 작은 코어 위에서 만들어진 "확장"이라는 걸 알게 되거든요.

비슷한 학습 자료들

Matt Might의 글이 "가장 작은 인터프리터"의 출발점이라면, 거기서 한 단계씩 더 나아간 자료들도 풍부해요. "Crafting Interpreters" 라는 책(저자 Bob Nystrom, Google에서 Dart 만드는 분)은 무료로 온라인에 공개되어 있는데, Lox라는 작은 언어를 직접 만들면서 트리워크 인터프리터부터 바이트코드 VM까지 처음부터 끝까지 설명해줘요. 한국 개발자들 사이에서도 "인생 책"으로 꼽히는 분이 많아요.

그리고 SICP(Structure and Interpretation of Computer Programs), MIT의 그 전설적인 교재요. 거기서도 Scheme으로 메타순환 인터프리터(meta-circular interpreter)를 만드는 챕터가 있어요. Matt Might의 7줄 코드의 "풀버전"이라고 보면 돼요.

조금 더 현대적인 흐름으로는 Rust로 작은 언어를 만들어보는 "Crafting Interpreters in Rust" 같은 변종 프로젝트들도 활발해요. 그리고 LLVM을 이용해서 자기만의 언어를 만드는 "Kaleidoscope" 튜토리얼도 LLVM 공식 문서에 있어요.

한국 개발자에게 주는 시사점

첫째, 언어를 한 번이라도 만들어 보면, 다른 모든 언어가 다르게 보여요. "왜 Python은 GIL이 있을까", "왜 JavaScript는 타입이 동적일까", "왜 Rust는 borrow checker가 있을까" 같은 질문에 자기만의 직관이 생기거든요. 시니어 개발자로 성장하는 데 굉장히 좋은 투자예요.

둘째, DSL(Domain Specific Language) 만들 일이 의외로 많아요. 회사에서 설정 언어, 쿼리 언어, 워크플로우 언어 같은 작은 언어를 만들 일이 생기거든요. 그때 "파서 만들고 평가기 만드는 게 어떤 구조인지" 안다면 대처가 훨씬 쉬워져요.

셋째, AI 시대에도 PL(Programming Language) 지식은 안 죽어요. 오히려 더 중요해지고 있어요. LLM이 만들어내는 코드를 검증하고, 자체 평가 환경(sandbox)을 만들고, 도메인에 특화된 언어를 빠르게 설계하는 일은 모두 PL 지식이 필요한 일이거든요. Anthropic, OpenAI 같은 데서도 PL 백그라운드를 가진 엔지니어들을 적극 채용하는 이유예요.

넷째, 주말에 Racket이나 Scheme 한 번 깔아서 Matt Might의 7줄을 직접 따라 쳐보세요. 3분이면 본인만의 미니 언어가 동작해요. 그 경험은 책 백 페이지보다 훨씬 강렬하거든요.

마무리

프로그래밍 언어는 마법이 아니에요. 잘 정의된 평가 규칙 몇 개일 뿐이고, 그게 우아하게 조합돼서 우리가 매일 쓰는 거대한 언어들이 만들어진 거예요. 여러분이 가장 좋아하는 언어의 "평가 엔진"이 어떻게 동작하는지, 한 번이라도 들여다본 적 있으신가요? 아니면 여러분만의 작은 언어를 만들어 보고 싶다면 어떤 도메인의 언어를 만들고 싶으세요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.