LangDev

프로그래밍 언어 개발에 관심 있는 사람들의 모임입니다.

acceptable lisp?

2008-04-30 10:54:25

최근(사실 1, 2년전에) 리습, 루비쪽에서 심심찮게 볼 수 있던 포스팅이죠.

저는 개인적으로(?리습을 알고 사랑하는 많은분들이) 우리가 막연히 생각하는 리습의 모습이 현재 개발이 진행중이거나 dynamic language, 개발방향에 있어서 어떤 지향점이거나 전체집합U로서의 심볼이라고 생각합니다. 몇가지 예로 현재 진행중이거나 세상에 모습을 드러낸 많은 것들이 그 아이디어의 원류가 리습에 있다고 생각하는 것들도 몇가지 있겠죠.(물론, lisp subset으로 생각할수있을지도 모르는) 개인적으로 자바스크립트는 가끔 스킴처럼 느껴지기도 하고(scheme vs. javascript), HTML/XML은 s-expression의 변형처럼 보이기도 하고, 최근 Flex3와 같은 ecmascript류에서 사용했던 E4X나 .net의 LINQ등은 code as data와 같은 리습의 모습의 일부처럼 보이기도 합니다.(물론, 리습은 그 자체로서 그런 특성을 갖고 있고, E4X, LINQ등은 언어자체의 한계를 확장적인 방법을 통해 개선하려는 시도겠죠)

리습이 있고, 리습이 처음으로 도입한 다음 퍼져나간 수많은 개념/장치들은 물론이겠지만 저는 특별히 현재 많은 논란의 주제인 dynamic vs. static에 대해서 생각해봤습니다.

좀 많이 단순화한 생각으로 타이핑과 같은 특정한 분야에 국한된 생각이 아니라면, 저는 dynamic진영과 static진영의 경계선은 “언어기재 그 자체가 재귀적(meta-circular?)이고 직교적인 방법을 통해 그 자신의 양상을 통제할 수 있음”이라고 생각합니다.

식목일 제설작업하는 소리로 들릴수도 있으니까 예를들어 볼게요.

  • 자바(static) : 프로그램 자기 자신을 수정하거나 확장(매크로나 실행시간 코드생성 같은)을 하거나 하려면 바이트코드 라이브러리니 JVM에 대한 설정이니 코드 그 자체의 범위를 벗어나는 작업을 해야하고, 방법 또한 ‘자바 언어’만을 아는 사람으로서는 짐작하기 힘들다. -> 재귀적인 구성도 아니고, 직교적인 방법도 아니겠죠.
  • 루비(dynamic) : RoR 프레임웍의 많은 부분이 실행시간 코드 생성과 관련이 있고, 이에 대한 좋은(혹은 eval남발의-_-;;;) 예로 들 수 있겠죠. -> 루비코드와 루비자체만을 갖고 재귀적인 방법으로 자신을 확장할 수 있죠. eval류가 과연 직교적인지는 좀 의문이네요.
  • Io language(dynamic) : 매크로와 같은 것을 지원하지 않으면서, 직교성을 최대한 살린 최소한의 것들을 통해서 언어를 확장하고 실행시간에 자기자신을 확장 할 수 있는 능력 -> 그런 acceptable lisp의 특징, 혹은 dynamic의 경계를 잘 구현했다고 생각합니다.
  • 자바스크립트(dynamic) : 글쎄요. 자기자신의 정보를 얻거나 하는 부분에(introspection, reflection…) 있어서는 많은 부분 부족하겠지만, 자기자신의 확장에 대한 개방/직교성 같은 부분은 단순하면서도 편리하죠.
  • 리습 : 무슨 말이 필요하죠?(빠돌)

대략 그런데요, 여러분이 생각하는 ‘acceptable lisp’의 조건이나, 그 조건에 부합하는 언어/환경은 뭐일지 궁금해지네요.

ps. 대략 써놓고 보니 acceptable lisp란게 어떤 언어 디자인, 구현에 관심 있는 사람들의 ‘총체적인 환상’, 이데아, 꿈속의 그녀… 뭐 그런거라는 생각도 드는군요. ^^;

ps2. 저는 역시 ‘이미지 기반(image based)’가 리습의 진면목이라고 생각 한다능;;;; =3=3=3

아겔-_- 님이 2008-04-30 11:16:59에 고쳤습니다.

The future is here. It's just not widely distributed yet.
- William Gibson

트랙백 주소: http://langdev.net/post/trackback/52

  1. 홍민희의 생각 from dahlia's me2DAY
  1. 홍민희 2008-04-30 11:29:24

    저는 개인적으로(?리습을 알고 사랑하는 많은분들이) 우리가 막연히 생각하는 리습의 모습이 현재 개발이 진행중이거나 dynamic language, 개발방향에 있어서 어떤 지향점이거나 전체집합U로서의 심볼이라고 생각합니다.

    무척 와닿는 말입니다. “전체 집합 U로서의 심볼.”

    “Acceptable Lisp”이라고 할 때는 acceptable하냐와 Lisp과 같은 특징을 갖췄냐, 둘 모두 봐야한다고 생각합니다. 그런 면에서 저는 Ruby는 acceptable하지만 Lisp에 비교하기는 부족하다고 생각하고요—”데이터로서의 코드”가 아니죠. 그러기엔 너무 복잡한 문법이라고도 생각하고요. Io를 좋아하는 이유는 제가 생각하는 “Acceptable Lisp”에 가장 가까워서입니다. 하지만 표준 라이브러리 같은 부분에서 거의 다듬어지지 않았고, 뭘 하나 하려고 해도 필요한 작업이 스택에 많이 쌓이는(;;) 어쩔 수 없는 마이너 언어라고 생각합니다.

  2. 아겔-_- 2008-04-30 11:42:16

    그렇군요.

    “acceptable lisp”로서의 가치를 바라는걸수도 있겠지만, 어떤 사람은 또 다른 lisp-dialect을 바라는지도 모르겠군여.

    너무 algol-like한 문법에 저도 좀 짜증이 나긴합니다.

    딜레마겠지만, Io에서 만약 어떤 한 방법을 제시하는 표준 라이브러리(Haskell의 Prelude처럼?)를 제공하기 시작한다면 Io의 그런 특질은 금새 잊혀질지도 모르겠죠. 아니면 그런게 없어서 Io가 마이너일지도;;; OTL

  3. 크로이세 2008-04-30 11:42:52

    Lisp 자체로도 충분히 acceptable하다고 생각합니다. ))))들만 어떻게 해 준다면 말이죠 :)

    개인적으로 Lisp에도 조금은 syntax sugar가 있었으면 어떨까 생각하지만, 그러면 아마도 애초에 Lisp인 의미가 없겠죠.

  4. 아겔-_- 2008-04-30 12:12:01

    대략 다음과 같은것들…

  5. 디토 2008-04-30 22:23:24

    역시 리습은 (λ)입니다. 크크크

목록보기

← [잡담] 재미있네요~ | 저도 가입했어요 →