서문
6년 전, 출판사가 Lisp 관련 도서를 문의해 온 것을 계기로 이 책을 집필하기 시작했습니다. 당시 제출 절차의 일환으로, 제가 알고 있는 모든 Lisp 서적들의 출판 연도와 각 도서의 강점 및 약점에 대한 간략한 개요를 작성하는 시장 조사 양식을 작성해야 했습니다.
그 시장 조사를 바탕으로 해당 출판사는 “시장에 또 다른 Lisp 책이 필요하지 않다“는 결론을 내렸습니다. 하지만 저는 그렇지 않다고 믿었기에 집필을 계속했습니다. 처음 2 년 동안 띄엄띄엄 글을 쓰다, 초고를 웹상에 공개하여 배포했습니다. 전 세계의 ‘Successful Lisp’ 독자들로부터 긍정적인 피드백을 받았으며, 그들은 이 책을 대학 강의 자료나 개인적인 Common Lisp 학습 리소스로 활용할 수 있게 되어 저에게 감사의 인사를 보내주었습니다.
열정적인 독자 몇몇은 “Successful Lisp“를 제가 좋아하는 다른 몇몇 Lisp 고전들과 비교하기도 했습니다. 이러한 무한한 열정에 저의 사기가 높아진 것은 사실이지만, 저는 이 책이 기존 서적들과는 다소 다른 방식으로, 그리고 다른 수준의 상세도로 주제를 다루고 있음을 먼저 강조하고 싶습니다. 물론 이 책을 즐기시되, 제한된 분량에 담아내지 못한 추가 정보가 필요하시다면 제 33 장에 나열된 다른 훌륭한 도서들을 참고해 주시기 바랍니다.
Common Lisp 은 그 본질적으로 매우 단순한 언어입니다. 크기가 커 보이는 이유는 (최근의 일부 언어들처럼) 복잡성 때문이 아니라, 폭 넓은 기능성에 있습니다(Common Lisp 의 모든 구현체에 포함되어 있는 함수와 데이터 타입을 통해 구현된).
Common Lisp 의 또 다른 고무적인 특징은 바로 안정성(stability)입니다. 이 언어는 1994 년 ANSI 표준으로 제정되었는데, 이는 제조사들과 설계자들이 4 년간 집중적으로 작업한 결과였습니다. 그 기간 동안 언어 내의 미묘한 문제점과 불일치 사항들이 제거되었고, 수정 사항은 실제 생산용 컴파일러에 적용되어 현실 세계의 애플리케이션을 대상으로 테스트되었습니다. 이 시간이 많이 소요되는 검토 및 정제 과정은 매우 성공적이었습니다. 표준화 이후로 언어는 추가적인 수정, 변경 또는 해설이 필요하지 않았기 때문입니다. 이는 저에게는 좋은 소식입니다. 제가 책을 계속 업데이트하여 최신 상태를 유지할 필요가 없었기 때문입니다. 또한 Common Lisp 로 대규모 복잡한 프로그램을 작성하는 사람들에게도 좋은 소식입니다. 하드웨어나 컴파일러를 변경하더라도 그들의 코드는 여전히 작동하기 때문입니다.
수년간 제기된 유일한 비판은 Common Lisp 이 대중적인 인기를 얻기 위해 충분히 매력적인 새로운 기능을 도입하지 않았다는 점입니다. 제조사들은 네트워킹, 그래픽, 멀티프로세싱 등 다양한 기능에 대해 자체 확장 기능을 제공하고 있지만, 표준화의 부재로 인해 이러한 기능을 이식성 있게 활용하기는 어렵습니다. 저 역시도 이러한 우려에 공감을 하지만, ANSI 표준화 이후 수년 동안 이러한 기능들이 크게 변화해 왔음을 보았습니다.
이러는 동안, 새로운 언어들은 Common Lisp에서 알고리즘 표현, 데이터의 기호적 조작, 그리고 자동 스토리지 관리에 관한 아이디어들을 차용해 왔습니다. 언젠가는 네트워킹과 그래픽 분야도 잘 정의되어, 이러한 컴퓨팅 영역들이 Common Lisp 에 통합되는 것을 보게 될거라 확신합니다. 지금으로썬 무엇이 안정된 것이고 무엇이 유행에 불과한 것 인지 구분할 수 있는 것만으로도 감사한 일입니다.
이 업데이트가 “Successful Lisp“에 대한 제 마지막 수정이 될 가능성이 높습니다. 저의 개인적인 목표와 관심사가 80 대와 90 년대 동안 컴퓨팅 분야에 깊이 관여했던 것에서 멀어지게 했기 때문입니다. 만약 “Successful Lisp“가 Common Lisp 커뮤니티 속에 지속적인 가치를 지닌다면, 그것은 언어 자체의 안정성과 장기적인 생명력 덕분일 것입니다.
모두에게 행운이 있기를 바라며, 이 책을 즐기주시길 바랍니다.
데이비드 람킨스 2001년 2월