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

괄호로 언어를 만드는 언어, 래킷(Racket) 입문 가이드

Hacker News 원문 보기

프로그래밍 언어의 계보를 거슬러 올라가면 1958년 존 매카시가 MIT에서 만든 리스프(Lisp)에 닿는다. 1957년 등장한 포트란에 이어 지금도 쓰이는 두 번째로 오래된 고급 언어다. 파이썬(1991)이나 자바스크립트(1995)보다 30년 이상 앞섰고, 우리가 '현대적'이라 부르는 여러 아이디어가 이미 그곳에서 태어났다. 리스프는 수십 년간 인공지능의 언어였고, 1970~80년대에는 심볼릭스와 LMI가 리스프를 직접 구동하기 위해 설계한 '리스프 머신'이라는 전용 하드웨어까지 존재했다. 이후 이른바 'AI 겨울'로 투자가 마르면서 리스프는 주류에서 밀려나 마니아의 언어로 남았다.

하지만 흥미로운 아이디어는 사라지지 않고 변형된다. 1975년 제럴드 서스먼과 가이 스틸은 리스프를 극도로 단순하고 수학적으로 다듬은 스킴(Scheme)을 만들었고, 스킴은 프로그래밍을 가르치는 학계의 표준이 됐다. 고전 교재 SICP가 스킴으로 쓰인 것도 그 때문이다. 1995년 마티아스 펠라이젠의 그룹은 교육과 언어 연구를 위한 PLT 스킴을 내놓았고, 이는 2010년 래킷(Racket)으로 이름을 바꿨다. 오늘날 래킷은 단순한 스킴을 넘어 '언어를 만드는 언어'를 표방한다.

언어 지향 프로그래밍이라는 관점

래킷의 비공식 모토는 '언어 지향 프로그래밍(language-oriented programming)'이다. 문제가 고유한 언어를 필요로 한다면, 래킷으로 하루 만에 그 언어를 만들 수 있다는 발상이다. 이 철학은 실제 사용 방식에도 반영돼 있다. 통합 환경인 DrRacket은 위쪽에 프로그램 정의부를, 아래쪽에 실시간 실험용 REPL을 둔다. 정의부 첫 줄에는 어떤 언어를 쓸지 명시해야 하는데, 래킷 자체가 '언어 공장'이기 때문에 사용할 언어를 골라야 한다는 점이 인상적이다. 터미널을 선호한다면 racket 명령이 REPL을, raco가 패키지 관리와 도구 기능을 제공한다.

문법의 핵심은 단 하나의 규칙이다. 모든 것이 (연산자 인자1 인자2 ...) 형태를 따른다. 예외가 없다. (+ 1 2)는 덧셈이고 (if ...)는 분기, (define ...)은 이름 붙이기다. 처음에는 괄호가 위협적으로 보이지만, 사실 이는 연산자 우선순위나 특수 문법 같은 자의적 규칙이 전혀 없다는 뜻이다. 익명 함수는 1930년대 알론조 처치의 람다 계산법에서 이어져 온 lambda로 표현한다. 저자의 말대로 한 주만 지나면 괄호는 눈에 들어오지 않는다.

리스트, 함수, 그리고 재귀

리스프라는 이름 자체가 'LISt Processing'에서 왔듯, 리스트가 가장 근본적인 자료 구조다. 여기서 눈여겨볼 것이 인용 부호 '이다. 이 기호는 뒤따르는 표현을 평가하지 말고 데이터로 다루라는 신호인데, 뒤에서 설명할 마지막 묘기의 열쇠가 된다. 함수형 스타일도 자연스럽다. 함수를 다른 함수에 넘기는 일이 일상적이며, 변환에는 map, 선택에는 filter, 누적에는 foldl을 쓴다. 이 세 함수만으로 for 루프 없이 대부분의 리스트 문제를 풀 수 있다. 반복 역시 'N번 돌린다'가 아니라 '기저 조건은 무엇이고 어떻게 그쪽으로 나아가는가'라는 재귀적 사고로 접근한다. 래킷은 그래픽 라이브러리도 기본 탑재해, 예제 코드를 붙여 넣고 실행하면 시에르핀스키 삼각형이 화면에 그려진다.

프로그램이 프로그램을 쓴다

래킷이 진짜 빛나는 지점은 동형성(homoiconicity)이다. 앞서 언급한 인용 부호 '가 코드를 데이터로 바꾼다는 사실을 떠올려 보자. 프로그램 자체가 리스트이고 리스트는 만들 수 있으므로, 프로그램으로 프로그램을 만들 수 있다. 이것이 리스프의 진짜 매크로가 C의 텍스트 매크로와 다른 이유다. 실행 이전에 코드를 받아 코드를 돌려주는 함수이기 때문이다. 래킷에 while 루프가 없다면 직접 발명하면 된다. 언어의 문법이 사용자의 것이라는 뜻이다. 앨런 케이가 리스프를 '소프트웨어의 맥스웰 방정식', 즉 모든 것을 이끌어낼 수 있는 작은 핵심이라 부른 것은 이 때문이다.

실무자 관점에서 래킷의 가치는 성능이나 생태계 규모보다, 문제에 맞는 표기법과 추상을 직접 설계하는 사고 훈련에 있다. 설정 파일 형식이든 도메인 규칙 기술이든, 반복되는 패턴을 별도의 작은 언어로 캡슐화하는 발상은 다른 언어에서 DSL을 설계할 때도 그대로 적용된다. 다만 현실적 한계는 분명하다. 접두 표기와 괄호는 익숙해지는 데 시간이 걸리고, 자바스크립트나 파이썬만큼 방대한 라이브러리와 채용 시장을 기대하기는 어렵다. 그럼에도 '코드가 곧 데이터'라는 리스프의 통찰을 한 번 체득하면, 이후 어떤 언어를 쓰든 프로그램을 바라보는 시야가 넓어진다는 점이 이 오래된 언어 계보를 지금도 배울 만한 이유다.

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

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

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

파이썬 강의 보기

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

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

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

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

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