컴퓨터 프로그램의 구조와 해석 : 읽기 전에 필요한 것 :: 2007/11/05 23:04
|
|
SICP는 Scheme이라는 Lisp 언어를 대상으로 하고 있습니다. 고백하건대 저는 학부때 프로그래밍 언어 특론을 중도에 수강 포기했었습니다. Lisp 언어의 근간을 이루는 Lambda Calculus를 전혀 이해하지 못했기 때문이죠. Wikipedia의 Lambda Calculus 관련 페이지에서 한 단락을 인용해 보겠습니다.
The Lambda Calculus can be thought of as an idealized, minimalistic programming language. It is a close cousin of the Turing Machine, another minimalist abstraction capable of expressing any algorithm. The difference between the two is that the Lambda Calculus takes a functional view of algorithms, while the original Turing machine takes an imperative view. That is, a Turing machine maintains 'state' - an arbitrary long 'notebook' of symbols that can change from one instruction to the next. The imperative paradigm can be seen in programming languages like C or Basic. By contrast, the Lambda Calculus is stateless, it deals exclusively with functions which accept and return data (including other functions), but produce no side effects in 'state' and do not make alterations to incoming data (immutability.) The functional paradigm can be seen in modern languages like Lisp, Scheme and Haskell
그런데 이제와서 골치아프기까지 한데다 "먹고 사는 문제하고도 하등의 상관이 없는" 언어로 씌여진 책을 다시 공부해보겠다고 설치는 이유는 뭘까요? 첫 번째는 'Lisp나 lambda calculus라는 것이 생각보다는 어렵지 않더라', 는 깨달음인 것 같고, 두 번째는 ... 설명하기 좀 곤란하니까 넘어가도록 하죠 ^^;
아무튼, 이 책을 읽으려면 Scheme 컴파일러, 디버거 등등의 시스템이 필요합니다. 잘 알려진 Scheme 시스템으로 MIT/GNU Scheme이 있고 PLT-Scheme이 있는데, 둘 다 Windows에서는 잘 깔립니다. Linux에서는 Ubuntu라면 모르겠지만 Fedora라면 깔기가 좀 난감합니다. 설치 메뉴얼 대로 해봐도 다 잘 안되죠. (제 리눅스는 Fedora Core 6 입니다) 거기다 MIT/GNU Scheme의 Windows 인터페이스(Erwin이라고 부릅니다만)는 하필이면 제가 익숙치 않은 Emacs 기반의 인터페이스입니다. -_-;
그러니, Windows에서건 Linux에서건 PLT-Scheme쪽이 더 낫습니다. 설치도 간단하고 (Windows에서는 인스톨러만 실행하면 되고, FC 6에서는 yum install plt-scheme이라고만 하면 됩니다) 인터페이스도 훨씬 더 직관적입니다.
위의 그림은 제 집 컴퓨터(Windows XP)에서 PLT-Scheme을 돌려 본 화면입니다. 리눅스가 깔린 회사 노트북(LM 70)에서도 설치해서 돌려봤는데, 저거랑 똑같은 형태로 실행됩니다. -_-
PLT-Scheme의 GUI는 DrScheme이라고 불립니다. MzScheme이라고 GUI가 없는 형태의 cheme 구현도 포함되어 있는데, MzScheme은 Unix에서 좀 더 사용하기가 편합니다.
http://www.plt-scheme.org/에서 다운받아 사용할 수 있습니다.
-
Guile 을 Emacs 에 접(?) 붙이기
Guile 하면 전 스트리트 파이터 2의 미국 캐릭터가 생각이 나는군요. http://en.wikipedia.org/wiki/Guile_(Street_Fighter)여기에 자세한 정보가 있구요 ^^ 이렇게 생겼었죠 , 좀 미화가 많이 이루어 진거 같기도 하고 -ㅅ- (음.. 회사에서 신제품 테스트 하다가 , 기존의 태터툴을 쓰면 이미지 관련 해서 다루는게 확실히 불편해서 잘 다루기 힘들군요 ^^; )거두 절미하고 절대 왼쪽의 가일하고 상관이 없습니...