MSX-C
를 처음 분 게 디스크 드라이브를 산 1991년이었으니까.필자의 머리가 이상한 건지, 필자 아버지에게서 물려 받은 것인지, Lisp을 써서 문제가 잘 풀렸다고 그게 나에게도 적용될지는 모를 일아다. 과연 Lisp에 시간을 투자할 가치가 있나?
모든 언어는 배워둘 만한 가치가 있지. 저수준의 C, 크로스 플랫폼의 Java도 있고, 업체에서 많이 쓰는 C++도 있고. 또 언어가 추구하는 철학(이나 모토?)에 따라서도 달라지는데 Perl이랑 Python 역시 거진 반대되는 철학이 있으니까. 그럼 왜 Lisp일까?
Lisp의 철학:
The Programmable Programming Language
필요한 것이 있으면 내가 만들어서 쓰면 된다. Lisp에 없다면 만들어서 넣으면 된다. 다른 언어들 처럼 언어 명세가 확장되거나 언어의 발매사들이 이를 지원해줄 때까지 기다릴 필요가 없다. 그냥 Lisp에 더하면 된다. "좋은 포로그래머는 좋은 사용자이다."
사실 Forth 를 처음 접했을 때 충격을 받았던 왜 Forth가 그렇게 대단한가? 라는 글에서도 이런 말을 들었다. 철도를 때 Forth에 푹 빠지게 했던... 하지만 실상은, 필요한 걸 내가 만들 실력이 없다면 결국 다른 사람들이 만들어주어야 하는데, Forth를 쓰는 사람들이 책도 없이 적어서 결국은 망했어요 ㅠㅠ.
C 를 쓰면 C가 제일 좋은 프로그래밍 언어인 것 같습니다. Forth를 쓰면 내가 제일 좋은 프로그래머인 것 같습니다.
그래서 사실 Lisp의 이런 공언이 그렇게 혹하지 않다. 다만 한 가지 다행인 건, 적어도 Lisp이 Forth보다는 큰 커뮤니티를 가지고 있고, 21세기임에도 여전히 다시금 주목을 받는 언어이기 때문아ㄷ. 그래, 이 책도 2000년도에 나왔을 테니.
언어가 지정하는 무언가에 내 생각을 맞출 필요가 없다. 내 생각과 실제 프로그램의 갭이 줄어든다.
Lisp은 "탐색적 프로그래밍"을 하기에 좋다. 프로그램이 어떻게 돌아갈지 잘 모르겠다면 일단 앉아서 코드를 쓰고 대화식으로 이걸 천천히 키워나갈 수 있다.
Lisp은 동적 자료형 언어이기 때문에 일단 코드를 쓰고 에러 처리는 대화식으로 할 수 있다.
언어에 대한 변화가 전체에 파급될 수 있도록 할 수 있다....OOP도, FP도 심지어 AOP(Aspect-)도 언어에 기능을 추가하는 라이브러리로 이게 가능하다는 뜻.