실용성을 겸비한 리스프(Lisp) 언어, 클로저(Clojure)

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

요는 리스프가 지닌 대다수 개념이 담겨 있으니 리스프를 이해하기에 좋다는 것, 자바에서 쓰던 상용구들을 그대로 갖고 와 쓸 수 있어 실용성이 높다는 것이지요.
클로저를 보며 드는 느낌은 ‘리스프에서 느끼는 두려움을 한층 수월하게 넘게 해주는 리스프 언어’였습니다.
클로저를 통해 ‘리스프는 어렵다’ ‘실용성이 없다’는 생각에 변화가 있기를 기대해 봅니다. 🙂

덧:
clojure가 과연 무슨 뜻일까요? 어디를 봐도 clojure라는 단어의 뜻을 명료하게 밝혀주는 자료를 찾기가 힘들더군요. 아시는 분 계시다면 알려주세요~!
(『프로그래밍 클로저』의 번역자이신 유찬우 님께서는 함수형 언어에서 가장 많이 쓰이는 데이터 타입인 closure에 Java 기반의 리스프라는 의미를 덧대어 Clojure라고 한 것은 아닐까 추측해 주셨어요.)

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


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

.

13 thoughts on “실용성을 겸비한 리스프(Lisp) 언어, 클로저(Clojure)

  1. JM

    전에 인터뷰에서 본 적이 있는데 closure 를 이용한 말장난이라고 했던거 같네요… 검색해보니 http://www.computerworld.com.au/article/313989/a-z_programming_languages_clojure/ 여기에 나오는 군요.

    “””It’s a pun on the closure programming construct (and is pronounced identically). I wanted a name that involved C (CLR), L (Lisp) and J (JVM). There were no search hits and the domain was available – what’s not to like?”””

    Reply
    1. JOE;

      오 여기 명확히 적혀 있군요!
      함께 써 주신 링크에 클로저에 대한 다양한 정보가 있으니
      궁금증이 많은 분들께(또한 영어에 거부감이 없는 분들께^^;;) 반가운 자료네요. 🙂

      Reply
  2. Pingback: 아겔-_-의 뻘로깅 에피소드2

    1. JOE;

      기뻐해 주시니~ 감사할 따름입니다. ^^
      배움의 목마름을 느끼는 분들께 보탬이 되었기를 바랍니다. 🙂

      Reply
  3. KnightOfLambda

    책이 잘 나갔으면 하는 바램입니다. Common Lisp과의 비교는 절반만 맞다고 볼 수 있습니다. 만일 JVM 에서 Lisp이 필요하면 Clojure가 답이겠지만, 그럴 필요가 없다면 Common Lisp이 더 나을 수 있겠죠. 더군다나 현존하는 구현들은 꽤 오랜 세월동안 광범위하게 검증되며 향상되었기 때문에 Clojure와 Common Lisp 구현물들을 비교한다는 것은 별 의미가 없다고 할 수도 있습니다.

    Reply
    1. 인사이트

      감사합니다.
      Clojure와 Common Lisp 비교에 대해선… 클로저 발간 전, 유찬우 님께도 꽤 들었지만, 모두 이해하기엔 조금 버거운 면이 있네요. ^^;;;.

      Reply
  4. 람다

    얼마전에 Lisp를 공부해보려고 책을 찾던 중 마침 발견하게 되어 한 권 샀더랍니다.
    국내도에 이런 매니아?! 스러운 책이 발간 되고 있어 기쁘다고나..

    Reply
    1. 인사이트

      아~~ 매니아스러운 책을 발간하려던 건 아니었는데… ㅜㅠ
      Lisp을 다루는 책이 한권은 있었으면 했습니다.(물론 뒤지면 오래전 발간된 책이 있지만)
      Common Lisp과 Clojure를 두고 이리저리 고민/검토하다 Clojure 책을 발간하긴 했는데, 사람마다 조금씩 이견은 있을 듯합니다.

      Reply
  5. Pingback: geekinside's me2DAY

  6. Pingback: 13579's me2DAY

  7. 끌로주아르

    이 책 사서 지금 3번째 읽고 있는데, 너무 너무 재밌습니다. Lisp를 사용해 보고 싶어서 여러 원서를 봤지만 영어도 딸리고, 혼자서 Lisp를 공부하는게 쉽지 않더군요..
    그런데, 이 책은 그 벽을 많이 낮춰 줬고 번역 또한 매우 잘 되어 있습니다.
    프로그래밍이 본업이 아니라 아직 Clojure를 어떻게 사용해야 할지 모르겠지만, 매일 가지고 다니며 읽고 또 읽고 하고 있습니다. 소설책 보는것보다 더 재밌고, 우아하네요~~^^
    좋은책 번역해 주셔서 감사드리고, 또 Lisp관련 책을 많이 번역해 주시면 좋겠습니다.~~

    Reply
    1. JOE;

      이런 폭풍칭찬을 해주시다니~~ ^^
      직접 쓴 것도 아닌데, 제가 다 좋네요ㅋㅋ
      이런 걸 ‘뿌듯뿌듯’이라고 하나요~
      도움이 되셨다니 정말 기쁩니다. 🙂

      Reply

댓글 남기기