이 명료하고 심플한 표지!
그 한가운데에 의연하게 박혀 있는 괄호 한 쌍!
괄호를 보니 뭔가 생각나는 게 있으신가요? 혹 키보드의 괄호 키를 닳고 닳도록 쓰는 언어가 하나 떠오르지 않나요?
리스퍼들에게 반가운 소식, 리스프 학습서가 발간되었습니다.
바로 『프로그래밍 클로저(Programming Clojure)』입니다. (번역서이긴 하지만, 우리말로 된 자료가 있다는 것은 흐뭇한 소식이지요.^^)
번역에는 유찬우 님, 베타리딩에는 ‘Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)‘의 장선진 님, 손수일 님, 박성민 님께서 도움을 주셨습니다.
리스프 언어 가운데 흔히 접할 수 있는 것이 커먼 리스프(common lisp)와 스킴(Scheme)이지요. 아마 클로저(clojure)를 생소하다 느끼는 분들이 많을 듯합니다.
클로저가 특징으로 내세우는 점을 설명하면…
-. 자바 가상 머신에서 활용 가능하다.
-. 최신 리스프라는 이점을 최대한 살려, 리스프가 지닌 표현력과 확장성은 그대로 유지하면서 괄호가 적은 리스프로, 리스프 언어를 처음 접하는 사람이 겪는 어려움을 덜었다.
커먼 리스프와 어떤 차이가 있는지 (유찬우 님의 답변을 빌려) 간단히 설명하면…
-. 커먼 리스프가 지니고 있는 개념들은 대부분 지녔고, 오히려 커먼 리스프가 내장하고 있지 않은 개념들(lazy evaluation, concurrency, pure functional language)을 추가로 포함한다. 그렇기 때문에 클로저를 먼저 보고 커먼 리스프를 본다면 새롭게 익혀야 되는 개념이 OOP 정도가 전부인 반면, 커먼 리스프를 보고 클로저를 보면 익혀야 할 새로운 개념들이 조금 더 있는 편이다.
-. 클로저에서 자바에 접근하는 것이 커먼 리스프에서 C에 접근하는 것보다 훨씬 편하고 직접적이다.
클로저가 자바 상용구를 그대로 갖다 쓰듯이 커먼 리스프도 C 라이브러리를 사용할 수 있다. 그러나 커먼 리스프의 경우 C 라이브러리를 호출하는 부분의 앞뒤에 어떤 처리를 해야 하는데, C와 리스프 코드를 섞어 코딩하게 되어 코드가 장황해지는 면이 있다. 반면 클로저는 자바를 바로 호출하는 느낌이다.
요는 리스프가 지닌 대다수 개념이 담겨 있으니 리스프를 이해하기에 좋다는 것, 자바에서 쓰던 상용구들을 그대로 갖고 와 쓸 수 있어 실용성이 높다는 것이지요.
클로저를 보며 드는 느낌은 ‘리스프에서 느끼는 두려움을 한층 수월하게 넘게 해주는 리스프 언어’였습니다.
클로저를 통해 ‘리스프는 어렵다’ ‘실용성이 없다’는 생각에 변화가 있기를 기대해 봅니다. 🙂

덧: clojure가 과연 무슨 뜻일까요? 어디를 봐도 clojure라는 단어의 뜻을 명료하게 밝혀주는 자료를 찾기가 힘들더군요. 아시는 분 계시다면 알려주세요~!

(『프로그래밍 클로저』의 번역자이신 유찬우 님께서는 함수형 언어에서 가장 많이 쓰이는 데이터 타입인 closure에 Java 기반의 리스프라는 의미를 덧대어 Clojure라고 한 것은 아닐까 추측해 주셨어요.)

덧2: 유찬우 님께서 ‘클로저 실행환경 설정하기’라는 글을 직접 써 주셨습니다. 파일을 첨부했습니다. 클로저를 공부하기 전 잊지 말고 꼭 참조하세요 🙂

『프로그래밍 클로저』 구입하기