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

Lisp 4대장 한눈에 비교하기 — Common Lisp, Racket, Clojure, Emacs Lisp의 같은 점과 다른 점

Hacker News 원문 보기

Lisp는 하나가 아니에요

흔히 "리스프(Lisp)"라고 하면 하나의 언어를 떠올리기 쉬운데요, 사실 리스프는 1958년에 존 매카시가 만든 이후로 수십 년에 걸쳐 수많은 갈래로 갈라진 거대한 가문이에요. 그중에서도 지금까지 살아남아 실무나 학계에서 활발히 쓰이는 대표 주자가 바로 Common Lisp, Racket, Clojure, Emacs Lisp 이렇게 네 가지입니다. Hyperpolyglot이라는 사이트에서 이 네 언어를 같은 작업을 두고 나란히 비교해놓은 표를 공개했는데요, 리스프 계열에 입문하려는 분들에게는 진짜 보물 같은 자료예요.

이게 왜 중요하냐면, 리스프 계열은 문법이 워낙 비슷해 보여서 "하나 배우면 다 통하겠지"라고 착각하기 쉬운데요, 실제로는 같은 일을 하는 함수 이름이 다르고, 리스트를 다루는 철학도 다르고, 심지어 nilfalse를 처리하는 방식까지 제각각이거든요. 그래서 언어 하나를 골라 깊게 파기 전에, 내가 풀려는 문제에 어떤 리스프가 맞는지 비교해보는 게 시간 낭비를 줄여줍니다.

네 언어의 성격이 이렇게 달라요

Common Lisp는 "공룡"이라고 부를 만큼 거대한 표준 라이브러리를 가진 언어예요. 1980년대에 여러 리스프 방언을 통일하려고 만들어졌고, 멀티 패러다임에 객체지향(CLOS)까지 내장되어 있어요. SBCL 같은 컴파일러는 C에 근접한 속도를 내기도 합니다. 산업용 시스템이나 연구용 프로토타입에서 여전히 쓰여요.

Racket은 MIT에서 시작된 Scheme의 후예인데요, "언어를 만드는 언어"라는 컨셉으로 유명해요. #lang 한 줄만 바꾸면 완전히 다른 문법의 언어를 같은 파일에서 쓸 수 있을 정도로 메타프로그래밍이 강력하죠. 교육용으로도 많이 쓰이고, DSL(도메인 특화 언어) 만들기 좋은 도구입니다.

Clojure는 가장 모던한 친구예요. JVM 위에서 돌아가서 자바 생태계를 그대로 쓸 수 있고, 불변 자료구조(immutable data structure)를 기본으로 깔고 갑니다. 이게 뭐냐면, 리스트나 맵을 수정하면 원본은 그대로 두고 변경된 새 버전을 돌려주는 방식이에요. 동시성 프로그래밍에서 골치 아픈 "누가 데이터를 바꿨지?" 문제를 원천 차단해주죠. 한국에서도 핀테크나 데이터 파이프라인 쪽에서 종종 쓰여요.

Emacs Lisp는 좀 특이한 케이스인데요, 이건 범용 언어라기보다는 Emacs 에디터를 확장하는 스크립트 언어예요. 다만 Emacs를 진지하게 쓰는 사람에겐 필수죠. 동적 스코프를 오랫동안 고집해온 것도 다른 리스프들과 구별되는 특징입니다.

같은 일도 이름이 다 달라요

Hyperpolyglot 표를 보면 재밌는 차이가 한눈에 들어옵니다. 예를 들어 리스트 앞에 원소를 붙이는 연산을 Common Lisp에선 cons, Clojure에선 conj 또는 cons, Racket에선 cons로 쓰는데 동작 방식이 미묘하게 달라요. Clojure의 conj는 자료구조마다 "가장 효율적인 자리"에 넣어주거든요. 벡터에 넣으면 뒤로, 리스트에 넣으면 앞으로요.

참/거짓 처리도 다릅니다. Common Lisp와 Emacs Lisp는 nil이 곧 거짓이고 빈 리스트이기도 한 "하나의 값 세 가지 의미" 구조예요. 반면 Clojure는 nilfalse만 거짓이고 빈 리스트는 참이죠. 이런 차이를 모르고 코드를 옮기다 보면 조건문이 엉뚱하게 동작해서 머리를 쥐어뜯게 됩니다.

다른 언어 비교 자료와 다른 점

Hyperpolyglot 시리즈는 원래 "같은 작업을 여러 언어로 어떻게 쓰는지"를 표로 정리하는 프로젝트예요. Python vs Ruby vs Perl 같은 비교도 유명하죠. Rosetta Code가 "하나의 문제를 N개 언어로 풀이"하는 식이라면, Hyperpolyglot은 "하나의 개념을 N개 언어 문법으로 나란히" 보여주는 방식이라 레퍼런스로 훨씬 빠르게 찾아볼 수 있어요.

한국 개발자 입장에서

솔직히 한국 채용 시장에서 리스프 계열을 메인으로 쓰는 회사는 손에 꼽아요. 그래도 배워둘 가치는 충분합니다. Clojure를 한번 만져보면 함수형 사고방식이 자연스럽게 몸에 배는데, 이게 나중에 Kotlin이나 Scala, 심지어 모던 자바스크립트 코드를 짤 때도 "불변성을 유지하면서 데이터를 변환한다"는 감각으로 이어지거든요. Emacs를 쓰신다면 Emacs Lisp는 에디터를 내 손에 맞게 깎는 데 직접적인 도움이 되고, Racket은 컴파일러나 언어 설계에 관심 있는 분에게 최고의 놀이터예요.

무엇보다 리스프의 "코드가 곧 데이터"라는 동음이의(homoiconic) 철학은 매크로나 메타프로그래밍이 왜 강력한지 체감하게 해줍니다. 요즘 LLM이 코드를 자동으로 생성하고 변형하는 시대에 "코드를 데이터처럼 다룬다"는 개념은 다시금 의미가 커지고 있어요.

마무리

리스프는 죽지 않았어요. 다만 네 갈래로 흩어져 각자의 자리에서 살아가고 있을 뿐이죠. 여러분이라면 이 네 가지 중에 어떤 리스프를 가장 먼저 만져보고 싶으신가요? 함수형 입문이라면 Clojure, 메타프로그래밍 탐험이라면 Racket을 추천드리고 싶은데, 다른 의견도 궁금합니다.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

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

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

파이썬 강의 보기

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

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

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

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

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