본문 바로가기

Architecture for Software/Lisp

[1] 리스프의 근원(The Roots of Lisp)

최근 국내에는 해커와 화가(Hackers & Painters)라는 책으로 유명한 폴 그레이엄(Paul Graham)의 사이트에서 리스프의 근원(The Roots of Lisp)이란 글을 읽었습니다.

리스프(Lisp)에 대한 좋은 내용을 담고 있어서 많은 분들과 공유하고자 번역하여 올립니다. 우선 리스프의 근원(The Roots of Lisp) 소개 페이지부터 번역하여 올립니다. 보시면서 번역상의 문제점등이 있다면 언제든지 댓글 부탁드립니다.
이 글의 원문 전체는 Postscript로 작성되어 있으며, 여기(http://view.samurajdata.se/psview.php?id=2311ad79&page=1&size=full)에서 쉽게 확인하실 수 있습니다.

참고로 리스프(Lisp)에 관심있으신 분들은 Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)란 리스프(Lisp) 관련된 그룹이 있으니, 함께 리스프 관련된 정보를 공유하였으면 좋겠습니다.

지금부터 리스프의 근원(The Roots of Lisp)이란 글을 소개 페이지부터 공유합니다. :-)



리스프의 근원(The Roots of Lisp)


2001년 5월




(나는 매카시가 발견한 것들을 나 자신에게 정확하게 이해시키고자 이 글을 작성하였다. 리스프 내의 프로그램 원리에 대하여 알고 싶지 않지만, 리스프의 본질을 이해하길 원하는 누군가에게는 반드시 도움이 될 것이다. 이 둘은 리스프의 기원과 리스프의 시맨틱적인 핵심에 대한 의의가 있다. 사실상 이러한 것들은 리스프의 특징적인 기능 중 하나의 핵심이며, 다른 언어들과 달리 리스프가 사투리[각주:1]들을 가지게 된 이유이다.)
(I wrote this article to help myself understand exactly what McCarthy discovered. You don't need to know this stuff to program in Lisp, but it should be helpful to anyone who wants to understand the essence of Lisp-- both in the sense of its origins and its semantic core. The fact that it has such a core is one of Lisp's distinguishing features, and the reason why, unlike other languages, Lisp has dialects.)


1960년에 존 매카시(John McCarthy)는 놀라운 논문을 발표하였는데, 유클리드 기하학과 같은 것으로 프로그래밍을 하는 것에 대한 것이었다. 그는 사용하기 쉬운 간단한 연산자들과 함수를 위한 표기법이 주어지면, 전체 프로그래밍 언어를 어떻게 구성할 수 있는지 보여주었다. 그는 이 언어를 리스프(Lisp)라고 불렀는데, "리스트 프로세싱(List Processing)"을 의미한다. 이렇게 부른 이유는 그의 핵심 아이디어가 코드와 자료(Data)를 위한 리스트라고 불리우는 간단한 데이터 구조를 사용하는 것이었기 때문이다.

In 1960, John McCarthy published a remarkable paper in which he did for programming something like what Euclid did for geometry. He showed how, given a handful of simple operators and a notation for functions, you can build a whole programming language. He called this language Lisp, for "List Processing," because one of his key ideas was to use a simple data structure called a list for both code and data.


매카시가 발견했던 것을 이해하는 것은 가치있는데, 단순하게 컴퓨터의 역사에 이정표를 이해하는 것이 아니라, 우리 시대의 프로그래밍의 발전 모델을 이해하는 것과 같기 때문이다. 나에게 있어 지금까지 프로그래밍의 일관성있는 발전 모델은 C 모델과 리스프 모델, 이 두개로 정말 명료하게 정리된다. 이 둘은 마치 시작점과 종료점과 같다. 컴퓨터가 더욱 강력해지는 것과 같이, 새로운 언어는 리스프 모델을 향하여 점차 발전하고 있다. 지난 20년 동안 인기있는 새로운 프로그래밍 언어는 C 모델의 컴퓨팅 방안을 가졌지만, 하나씩 리스프 모델에 장점들을 수용하고 있다. 그 예가 동적 타입(런타임 타이핑)과 가비지 컬렉션이다.

It's worth understanding what McCarthy discovered, not just as a landmark in the history of computers, but as a model for what programming is tending to become in our own time. It seems to me that there have been two really clean, consistent models of programming so far: the C model and the Lisp model. These two seem points of high ground, with swampy lowlands between them. As computers have grown more powerful, the new languages being developed have been moving steadily toward the Lisp model. A popular recipe for new programming languages in the past 20 years has been to take the C model of computing and add to it, piecemeal, parts taken from the Lisp model, like runtime typing and garbage collection.


이 글에서 나는 매카시가 발견한 것들을 가능한 가장 쉬운 용어로 설명하려고 노력할 것이다. 이 글의 중요한 점은 단순하게 40년 전에 누군가 찾아낸 흥미로운 이론적인 결과들을 배우는 것이 아니라, 언어(프로그래밍 언어)들이 어디를 향해가고 있는가를 보여주는 것이다. 사실상, 리스프의 특징을 고찰하는 것은 리스프에 있어 드문 일이지만 작성된 이 글을 통하여 확인할 수 있다. 이 글을 통하여 매카시가 고찰한 것이 무었인지 이해하는 것은, 살아 움직이는 커먼 리스프의 코드에 녹아들어간 그의 수학적인 표기법[각주:2]과 함께, 그의 발자취를 따라가는 것이다. 
In this article I'm going to try to explain in the simplest possible terms what McCarthy discovered. The point is not just to learn about an interesting theoretical result someone figured out forty years ago, but to show where languages are heading. The unusual thing about Lisp-- in fact, the defining quality of Lisp-- is that it can be written in itself. To understand what McCarthy meant by this, we're going to retrace his steps, with his mathematical notation translated into running Common Lisp code.



악몽과 같은 4월이 지나갔습니다. 휴~ 죽는줄 알았습니다. ㅎㅎㅎ

개인적으로 4월에 많은 일들이 있었습니다. 이제 조금씩 정리되어 가고 있네요 :-)
최근 다른 무었보다 최근 Lisp에 관심이 많이 가고 있습니다. 워낙 핵심을 잘 요약한 글이라 이 글을 차근 차근히 번역하여 올리겠습니다. 저도 공부 많이 되네요 ;-)
아울러 애매한 부분을 제 나름대로 의역하였는데, 혹시 잘못 번역된 부분이나 애매한 번역이 있다면 댓글 부탁드립니다.

감사합니다.


  1. 리스프(Lisp)는 다른 프로그래밍 언어와 달리 스킴(Scheme)와 같은 사투리가 존재합니다. 이러한 부분을 의미하는 것입니다. [본문으로]
  2. 리스프의 표기법(Notation) 자체가 수학적인 사상하에 만들어 진 것이며, 이러한 수학적인 사상은 존 매카시가 만든 것이므로, 이를 하나씩 알아가는 것은 결국 존 매카시의 핵심 사상을 이해하는 것과 같다는 의미입니다. [본문으로]