|
이 책은 리스프라는 언어와 이 책에 대한 궁금함에서 읽기 시작했습니다. 리스프라는 언어가 나온지 50 년이 넘었음에도 불구하고 아직까지 이 언어가 살아있는 이유가 무엇인지 궁금했습니다. 그리고, 이 책 (번역서가 아닌, 원서 ) 자체도 베스트 셀러로 유명하다는 얘기를 얼핏 들은적이 있어서 책 자체에 대한 궁금함도 이 책을 선택하는데 한 몫 했습니다.
1, 이 책을 읽으면 함수형 언어가 무엇인지 알 수 있습니다. 기존에 C/C++/ Java 등을 통해서 프로그래밍을 시작한 경우에 함수형 언어는 익숙하지 않은 방식입니다. 함수형 언어의 대표로서 리스프를 통해 함수형 언어의 기본적인 방식과 특징을 알 수 있습니다.
2. 이 책에는 곳곳에 만화가 나옵니다. 집중력이 떨어지거나, 이해가 잘 안되는 경우 만화를 통해서 리스프에 대한 내용을 잘 알려줍니다.
분량, 내용, 난이도, 설명방식등 모든 면에서 리스프 언어에 대해서 알 수 있는 좋은 입문서 입니다.
실제 리스프 언어의 쓰임새를 잘 알 수 있게 되어 있습니다.
어려웠던 분들이라면 이 책을 통해 함수형 언어에 익숙해 지는 것도 좋은 대안이 될 수 있을 것이라고 생각합니다.
|
|
만들면서 배우는 리스프 프로그래밍
이 책을 받자 마자 GNU CLISP 2.49를 데스크탑에 설치를 했다.
처음 접해보는 프로그래밍 언어이다. 예전에 학교다닐때 코볼이나 포트란등을 접했을때와는 사뭇 다르다.
리스프는 프로그래밍 언어의 가족으로서 오랜 역사와 독특하게 괄호를 사용하는 문법으로 유명하다.
1958년에 초안이 작성된 이 언어는 현재 널리 사용되는 두 번째로 오래된 고급 프로그래밍 언어이다.
첫 번째는 포트란이다.
리스프는 포트란처럼 초반에 많은 변화를 겪어야 했으며 수많은 변종들이 존재한다.
오늘날 가장 널리 알려진 일반 리스프 변종은 커먼 리스프 와 스킴 이다.
그리고 리스프의 본래 뜻은 혀가 꼬이기 쉬운 발음이라는 뜻이다.
리스프는 본래 실용적인 목적 아래 컴퓨터 프로그램을 활용하여 수학 표기법을 나타내기 위한 목적으로 만들어졌다. 이는 알론소 처치의 람다 대수의 표기법에 영향을 많이 받았다.
곧이어 이는 인공지능 연구소에서 가장 인기있는 언어가 되었다.
초기 프로그래밍 언어 중의 하나인 리스프는 컴퓨터 과학의 많은 개념들의 선구자로서 트리 자료구조,
가비지 컬랙션, 동적 타입입과 인터프리터와 같은 개념들을 개척했다.
LISP 라는 이름 자체는 LISt Processing 의 줄임말이다. 연결 리스트는 리스프의 주요 자료구조 중 하나로서, 리스프 코드는 그 자체로 하나의 리스트이다.
그 결과로, 리스프 프로그램은 소스 코드를 자료 구조를 다듬는 수준으로 재배치할 수 있게 된다.
리스프 매크로 시스템을 통해 프로그래머는 새로운 소스 코드를 만들 수 있으며,
심지어 기존 리스프에 내장되는 새로운 언어. 그것도 특정 목적을 위한 용도의 언어를 만들어낼 수 있다.
코드와 데이터이 교환이 가능하다는 것은 리스프 그 자체에 있어 코드를 즉각 해석할 수 있는 능력을 준다. 전체 프로그램 코드는 S-표현식 이나 괄호로 묶여진 리스트로 작성되며,
함수 호출의 경우 함수 이름 혹은 연산자가 첫 번째로 위치하여 피연산자가 이어 위치하게 된다.
예를 들어보자면, 함수 f 가 a, b, c 라는 세 개의 피연산자를 가진 경우는 (f a b c)와 같이 표기한다.
이 책은 게임을 만들면서 개념을 학습하는 리스프 입문서로써
다양한 삽화와 게임 예제들을 다루고 있다.
리스프와 함수형 언어는 현대 컴퓨터 과학에 많은 영향을 끼치고 있으며
그 영향력은 점차 확대되고 있다.
|
|
리스프 언어는 1958년에 개발되어 현재까지 활용되고 있는 함수형 언어로써 컴퓨터 과학계의 노벨상으로 불리는 ‘튜링상’을 받은 과학자 존 매카시가 창안한 언어라고 한다. 프로그래밍 언어의 발달로 함수형 언어의 다양한 변종이 등장했지만, 대부분 기본 개념은 리스프를 따르고 있다. 미국에서는 인공지능과 기호처리계의 연구에 많이 사용되고 있다. 이 책은 직접 게임을 만들면서 개념과 기법을 학습하는 리스프 입문서이다. 기본적으로 리스프 문법을 속성으로 익힐 수 있는 과정을 담았고, 프로그램 작성에서부터 매크로 사용, DSL 만들기, 웹서버 개발, 웹 브라우저 게임 만들기, 운명의 주사위 게임 개발, 오크 배틀 게임 개발 등을 통해서 효과적으로 학습할 수 있도록 구성되어 있다. 또한 저자는 20년 가까운 프로그래밍 경력 이외에 열성적인 만화가의 재능을 살려 리스프에 대한 역사와 개념을 쉽게 이해할 수 있도록 만화를 통해서 유쾌하게 설명했다. 개인적으로는 게임 프로그래밍에 대한 학습과정도 재미있었고, 웹서버를 개발하고 그 개발한 웹서버를 통해서 웹 브라우저 게임 만드는 부분 역시 인상적이었다. 전반적으로 딱딱한 원칙적 설명보다는 삽화를 이용한 흥미롭고 쉬운 설명 역시 이 책의 장점이다. 개인적으로 초창기 프로그래밍 언어로 C, 코볼, 포트란 등을 기억하고 있지만, 리스프는 생소했다. 이렇게 생소한 리스프가 ‘왜 이제 와서 선을 보이는 것일까’라는 의문이 들었기에 이 책을 통해서 궁금증을 풀고 리스프만의 강점을 확인하고 싶었다. 리스프 언어는 생각보다 많은 대기업에서 사용하고 있고, 미래형 웹기술로 언급되고 있는 시맨틱 웹 또한 리스프로 작성된 다수의 프로그램을 사용한다고 한다. 최근에 시맨틱 웹에 관심을 갖고 있었기에 이 부분에 대한 언급이 리스프에 대한 개인적인 관심도를 높여주기도 했지만, 한편으로 국내 개발 환경에서 활용도가 전무후무하기에 실무 프로그래밍 기술을 익히는 입장으로의 접근은 무리가 있을 듯싶다. 다만, 함수형 프로그래밍의 강점과 활용도를 직접 체험해보면서 프로그래밍의 통찰력을 얻고자 하는 사람들이라면 가벼운 마음으로 학습해보는 것을 권한다. |
|
일반 개발서만큼 딱딱하지는 않지만, 헤드퍼스트 시리즈만큼 너무 산만하지도 않아서 딱 좋다. 표지에서 느껴지듯 책 간간히 그림도 많고, 코드에 대한 구석도 아기자기하게 화살표 섞여가며 표시되어 있어서 쉽게쉽게 내용 이해하고 넘기는데 꽤 도움이 된다.
내가 학교 다닐때도 인공지능 과목을 수강하면서 이 언어를 접햇었는데 국내에 참 LISP 관련 도서가 없었던 기억이 난다. 필수적으로 많이 쓰이는 언어는 아니지만 책에서 강조하듯 꽤 유용한 스크립트 언어이다.
드디어 제대로 볼만한 LISP 책이 한권 나왔다는게 다행이다 싶다. 초보 개발자가 볼만한 수준의 책은 아닌것 같고, (초보개발자가 접할일도 사실 없을것 같기는 하다) 대학 3학년 이상 되는 경험을 가진 개발자라면 유용하게 쓰일 책이다. |
|
난 이 책을 통해 리스프가 무엇인지 알았다. 나름 프로그램 언어에 대해서는 많이 안다고 생각했는데 아직도 이렇게 생소한 언어가 존재한다. 아마 대부분의 프로그래머들도 리스프 언어를 잘 모를 것이다. 리스프를 책에 나와 있는 데로 설치하고 따라해 봤다. 하지만 자바와 C언어의 너무 익숙해져 있어 이해하기가 쉽지 않았다. 점점 하면 할수록 고등학교때 배운 수학문제와 비슷한 것 같았다. 가장 안쪽에 있는 가로부터 계산해 나가는 방식이라서 수학문제 풀듯이 프로그래밍 하면 될 것이다.
리스프는 표현 기능이 대단히 뛰어난 언어이다. 가장 복잡한 프로그래밍 아이디어를 명확하고 적절하게 표현할 수 있도록 설계되었다. 이 책에서 설명하는 리스프의 정의와 개념을 살펴본다면 리스프만의 색깔을 찾을 수 있다. 리스프 프로그램의 많은 기능들을 이후에 프로그램 언어에서 참고하여 사용했다고 한다. 그만큼 리스프 프로그램은 프로그래밍 언어의 시조 격인 셈이며, 수학적 기반으로 탄생된 리스프는 앞으로 많은 분야에서 사용될 수 있는 잠재적인 능력을 보유하고 있는 프로그래밍 언어다.
실용적인 면이나 초보자가 배우기 쉬운지에 대한 고민은 전혀 없었던 이 언어는 매우 지능적이었고, 프로그래밍 언어 설계의 한계를 뛰어넘기를 바랬다. 대부분의 언어가 공학의 세계에서 비롯된 반면, 리스프는 좀 더 수학적인 배경에서 시작했다. 앞으로 이 언어를 많이 사용하게 된다면 최소한의 문법과 의미를 지니고 아주 간결한 프로그램을 만들 수 있을 것이다. 앞으로 이 언어가 어떻게 활용될지 눈여겨 보겠다. 이 책을 통해서 새로운 프로그래밍 문법을 알게 된 것 같다. 고급 프로그램 기법을 채택하고 있는 리스프 프로그래밍을 경험해 보자.
|
|
프로그래머들, 특히 해커와 화가를 읽거나 인공지능을 읽은 사람들에게 리슾은 언제가 한번 배우거나 정복해보고 싶은 고전 같은 느낌이다. 전설적인 실력자들이 리슾의 아름다움과 효용성에 대해 찬양하고 인공지능의 아버지격 중 하나인 존 맥카시가 탄생시킨 비화를 비롯해 인공지능에 얽힌 설화와 같은 이야기들이 많기 때문이다. 다만 아쉬운건 접근성인데 자바나 파이썬 등의 책에 비하면 리스프를 배울 수 있는 책은, 특히 한글 책은 아마 이 책이 거의 유일할 것이다. 그나마 다행인 것은 이 책이 꽤 양질이라는 것과 초보자들에게 리슾을 친숙하게 느낄 수 있게 책을 아주 잘 썼다는 것이다. 리슾이 무엇인지 알고 싶어서 그저 가벼운 마음만 가지고 이 책을 봐도 될정도다. 물론 이 책이 모든 것을 다 커버하지는 않지만 리슾이 어떤 맛이고 얼마나 달콤한지 느끼기에는 충분한 첫끼라 생각한다. |
|
LISP 가 뭐지? 예전에 들어 본 것 같은데. lisp.. 리스프.. 리슾.. 아!! 얼핏 학부시절에 인공지능 수업을 들을 당시 들어봤던 것 같은 기억이 있다. 인공지능 프로그램 개발에 사용되는 대표적인 언어라고 했던, 거의 7년이 지난 지금 드디어 어떤 특징을 가진 어떻게 사용할 수 있는 언어인지 알아볼 기회가 생겼다. 본 도서는 전체 스무개의 챕터로 이루어져 있고, 챕터들을 모아 네개의 섹션으로 다시 나누 어져 있다. 섹션명이 조금 추상적이라 그냥 넘겼는데 가장 뒷장을 넘기고 다시 앞으로 넘어와 보니 뭔가 영 어울리지 않는 것 같이 느껴졌다. 개인적인 생각이지만.; 각 챕터는 다른 언어 도서들과 마찬가지로 언어의 유례, 특징 그리고 개발환경 설정부터 시작 한다. 이어서 문법들 설명으로. 이후로는 실제 게임을 만들면서 - 일부러 조금은 엉성하며 불편한 - lisp 에서의 코딩 스타일, 사용되는 함수들을 소개한다. 첫 게임 개발 후 조금 지루한 감이 이어지다가 14장 '함수형 프로그래밍으로 리스프의 수준 높이기'에서 부터 다시 흥미로워 진다. 개인적으로 이 책의 꽃이 이곳에서부터 피어나지 않나 싶다. 함수형 프로그램에 대한 간략한 설명, 왜 리스프를 아름답다고 하는지 아름답게 코딩하기 위해 어떠한 것들을 지켜야 하는지를 알려준다. 마지막으로는 주사위게임을 소개하며 동일한 기능을 하더라도 좀 더 높은 수준의 프로그래밍을 하는 방법, 알고리즘 나아가 더 나은 퍼포먼스를 발휘할 수 있도록 게임 을 발전시켜 나간다. 만들면서 배우는 리스프 프로그래밍 도서를 보고 실습하며 가장 아쉬웠던 부분은 초반에 개발 환경 설정하는 부분이었다. 단지 CLISP 를 다운받아 설치하면 끝. 이전에 작성한 코드는 어디에 저장이 되지? 어떠한 방식으로 코드가 실행 되는 것이지? 에 대한 것들이 전혀 설명 되어 있지 않다. 아주 조금이라도 개발하는데 도움이 될 가이드가 있었으면 하는 아쉬움이 남는다.
lisp 를 접한지 3주가 조금 지났지만 처음 접해보는 스타일의 언어이고 많은 시간을 할해야 실습하지 못하다 보니 아직 lisp 가 원하는 아름다움을 크게 이해하지는 못했다. 하지만 함수형 프로그램이 원하는 간결함, 순수성. 비단 lisp 코딩할 때 뿐이 아닌 다른 언어에서의 코딩 시 장점들을 많이 가져가도록 노력하는데 큰 도움이 된 것 같다.
이 책에서 가장 흥미로웠던 부분은 인공지능에 관한 부분 이었다. 스스로 진화하는 프로그램. 이전에 재미삼아 만들어 봤던 오목이나 세균맨 게임 ( 완성도는 아주 엉망인.; ) 을 책에서 소개해 준 휴리스틱이나 지연평가 등을 이용하면 더 지능적인 상대방을 만들 수 있을 것 같다. |
|
LISP은 어셈블리언어와 함께 구세대의 불편한, 덜 진화된 언어의 하나로 이해하고 있었다.
그러니까 학창시절 배우던 교과서에도 컴퓨터 역사의 첫페이지에 몇줄 나오다 말았겠지...
그런데, 우연히 접하게 된 "만들면서 배우는 리스프 프로그래밍" 이라는 책의 머릿말에서,
C#이나 자바를 돼지와 말에 비유하고, LISP은 아주 새로운 생명체로 표현하는 그림을 보고는
도대체 무엇때문인지, 무성한 호기심에 빠지게 되었다.
그러고는 어느새 책의 1/3을 한자리에서 빠져서 읽게 되었다. 우와~ 이런 세계가 있다니...
이 책은 여타 프로그래밍 언어책들처럼 문법을 하나하나 설명하는 것이 아니었다.
재미있는 그림과 게임을 만드는 듯한 논리설명, 그리고 일단 직접 만들어보고 다시 생각하게 만드는
체험하면서 사고하여 결과를 보여주는 즐거운 경험의 연속이었다. (게임을 좋아하는 나에겐 정말로 즐거운 ^^/)
요즘 프로그래밍은 정말 편해졌다. 자동완성기능에 화려한 GUI 구현, 완벽에 가까운 디버깅 툴들..
마치 설명서 보면서 그냥 있는 블록을 가져다 조립해서 성을 만들고 있었던게 아닌가..
게다가 성문의 위치를 찾기 위해 그 설명서를 얼마나 여러번 읽어야 하는지..
그런데 이 책은 프로그래밍을 하는 재미를 다시한번 일깨워 준다.
LISP을 하는 사람에겐 매우 잘 알려진 "컴퓨터 프로그램의 구조와 해석"이 훌륭한 수학이론서 라면,
"만들면서배우는 리스프 프로그래밍"은 LISP 입문자를 위한 아주 재미있는 실습책이었다.
이 재미있는 책을 찾아보니 "Land of Lisp" 이라는 유명한 책의 번역본이었군..
우리나라에 이렇게 좋은책이 한글로 번역되어 나오게 되어 매우 기쁘다.
아직까지는 저자의 LISP에 대한 맹신(?)을 100% 이해하지는 못하고 있지만,
끝까지 책을 읽게 되면 LISP에 대한 열렬한 추종자 중의 하나가 될 것 같은 예감이 든다.
"버그"라는 침략자에 대항한 "리스프" 외계행성의 친구들.. 잘 부탁해~ |
|
C, C++, 자바와 같이 명령형 언어를 접해오다가 서평이벤트를 통해 당첨된 "만들면서 배우는 리스트 프로그래밍"에 의해 함수형 언어에 관심을 가지게 되었다. 아직 책의 전체 부분을 보지 못했지만, 프로그래밍에 대한 또 다른 사고를 할 수 있어 흥미로웠다. 하지만 내공이 아직 부족하여 이해하기가 쉽지는 않았다. 인공지능 개발에 많이 사용되는 언어라고는 하는데 인공지능하면 모든 상황에 대해 수행되어야하기 때문에 노가다라는 인식이 있었는데 어떤식으로 구현되었을까? ^.^ 리스프 언어가 군사용, 항공관제, 화상탐사로봇의 제어프로그램, AUTOCAD에도 사용되었다니 함수형언어에 관심있는 분은 도전해볼만한 책이네요. 저도 끈기를 가지고 완주하여 새로운 시야를 느끼고 싶네요. 개발자 여러분들 화이팅입니다. |
|
정말 오래되고 오래된 제가 태어나기도 전에 만들어진 리스프 언어
아직도 사용하고 있다니 대단합니다.
함수형 언어의 특징이 고스란히 담겨져 있습니다.
리스프가 아직도 사용하고 있지만 많이 사용되고 있지는 않습니다.
이 언어를 공부하셔서 밥먹고 사실 생각이었다면 ~~ 그런 생각은 버리시는게 좋습니다~~ ^^
그대신 언어에 대해서 공부를 하면서 또다른 세계를 경험한다고 생각하고, 책을 읽으시길 바랍니다.
여러 언어를 습득하다 보면 나도 모르는 통찰력이 생기게 됩니다.
여러분들이 이 언어를 습득한다면 득이 되면 되었지 해가 되진 않을 겁니다~~
마지막으로 이책의 특징은 저자가 만화가 여서 재미있는 만화로 리스프 세계를 풀어내고 있습니다. |