Shinnara's Blog
Talking with Shinnara :: NaraTalk.com


 요즘 새롭게 시작한 Lisp.. 조금씩 조금씨 그 마술에 빠지는 듯 합니다. 물론 Lisp 자체가 매우 오래된 언어이고, 그 이후로 많으 새로운 언어들이 자신의 장점들을 내세우며 많은 개발자들을 사로잡고 있지만, Lisp 은 지금도 충분히 매력적인 언어임에 틀림없는 것 같습니다. 뭐, 아직 Lisp을 잘 알지 못하는 입장에서 이런 말을 한다는 것 자체가 우습긴 하네요.

 하여간 점점 빠져들고 있는 Lisp에 대해 보다 많은 사람들이 이러한 재미를 같이 했으면 하는 생각에서 글을 조금씩 적어볼까합니다. 거창하게 튜토리얼 같은 것은 아니고, 그냥 내용 요약 정리 정도가 되겠네요. 이후에 이것들을 모아서 좀더 짜임새 있는 자료도 만들어 볼 수 있지 않을까 기대도 해봅니다.

앞선 글에서 이야기 한대로  지금 보고 있는 책이 Practical Common Lisp 인데 Chapter 3까지는 아마도 매우 쉽게 따라 갈 수 있을 것 같습니다. Chapter 4 부터 본격적으로 Lisp이라는 언어에 대한 설명이 나옵니다. 오늘은 그ax 첫번째로 Chapter 4. Syntax and Semantics에 대해 내용 요약을 해보겠습니다.  워낙에 머리가 둔한 지라 책을 읽고 이해하며 정리하려면 아마 이 글을 완성하는 데 며칠 정도 필요하지 않을까 하면서 글을 시작해봅니다.

+                                    +                                   +

Breaking Open the Black Box

 대부분의 프로그래밍 언어에서 인터프리터나 컴파일러 같은 언어 처리기는 세 단계의 과정을 거치는 것이 일반적입니다. 제일 먼저 텍스트로 적혀진 프로그램을 읽어 들여 토큰(Token)으로 분해하는 Lexical Analyzer, 이 토큰들을 해당 언어의 문법에 맞게 트리(abstract syntax tree)를 만들어 내는 Parser를 거쳐 이를 통해 동작을 수행하거나, 컴퓨터가 알아 들을 수 있는 코드를 만들어내는 Evaluator 가 존재하게 됩니다. 하지만 이러한 과정들은 Black Box처럼 숨겨져 있어서 프로그램을 작성하는 사람은 단순히 언어 처리기(인터프리터나 컴파일러)에게 소스 프로그램을 전달하기만 하면 됩니다. C 로 프로그램을 짜더라도 그냥 gcc만 이용하면 위의 모든 과정이 끝나는 것 처럼 말이죠.

 Common Lisp에서는 조금 다른 데, 일반적인 언어들이 한개의 Black Box를 통해 소스 코드에서 컴파일된 기계어 코드를 만들어 내는 데 반해,  Common Lisp은 두개의 Black Box를 가지고 있습니다. 하나는 Lisp 프로그램을 적은 텍스트로 부터 Lisp Object를 만들어 내는 reader 이고, 다른 하나는 이러한 Object 에 대해 semantics를 구현하는 Evaluator 입니다.

  Reader는 Lisp 소스 코드의 내용이 S-expression 으로 불리는 Lisp Object로 어떻게 변환 될 수 있는지를 판단합니다. Evaluator는 Lisp Object들의 문법을 정의하게 됩니다.


S-expressions

S-expression 를 이루는 기본 원소는 list와  atom 입니다. list는 괄호로 구분되고 공백(whitespace)으로 나눠진 원소들을 포함할 수 있습니다. Atom이라함은 그 외의 모든 것을 지칭하게 됩니다. Empty list인 ()는 NIL로 표기할 수 있는데, 이는 유일하게 list이며 atom입니다.



+                                    +                                   +

일단은 여기까지 먼저 써야 겠네요 ^^ 계속 업데이트 하겠습니다..^^




 

신고
0 Trackback, 0 Comment

댓글을 달아 주세요

1 ··· 63 64 65 66 67 68 69 70 71 ··· 264 
다...... (264)
Computer/Programming (106)
Links (14)
책 읽는 즐거움 (7)
끄적임 (66)
즐거운 과학 나라 (7)
일본 (5)
Study (4)