<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>알아가는 즐거움 &#187; lisp</title>
	<atom:link href="http://www.4four.us/article/tag/lisp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.4four.us</link>
	<description>아~ 하기 싫다~</description>
	<lastBuildDate>Mon, 30 Jan 2012 12:14:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Programs with Common Sense &#8211; John McCarthy</title>
		<link>http://www.4four.us/article/2009/10/programs-with-common-sense-john-mccarthy</link>
		<comments>http://www.4four.us/article/2009/10/programs-with-common-sense-john-mccarthy#comments</comments>
		<pubDate>Fri, 09 Oct 2009 15:25:21 +0000</pubDate>
		<dc:creator>seunglee</dc:creator>
				<category><![CDATA[paper]]></category>
		<category><![CDATA[artificial-intelligence]]></category>
		<category><![CDATA[commonsense]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[reasoning]]></category>

		<guid isPermaLink="false">http://www.4four.us/?p=647</guid>
		<description><![CDATA[얼마 전 민스키 교수의 글을 소개했는데요, 내친김에 상식추론(Commonsense Reasoning)을 조금 더 깊이 파보기로 했습니다. 관련 역사를 거슬러 오르다 보니 존 매카시(John McCarthy) 교수의 Programs with Common Sense에까지 이르렀습니다. 무려 50년이나 전인 1959년에 출판된 논문입니다. 매카시 교수는 &#8220;Advice Taker&#8221;라는 가상의 프로그램을 상정하여 그가 생각하는, 상식이 있는 프로그램의 특징을 설명합니다. &#8220;상식을 갖춘 프로그램&#8221;이라&#8230; 도대체 어떤 걸까요? 프로그램이 [...]
Related posts:<ol>
<li><a href='http://www.4four.us/article/2008/06/common-lisp-emacs-sbcl-slime-macports' rel='bookmark' title='맥에서 Common Lisp 환경 구축하기: MacPorts를 이용'>맥에서 Common Lisp 환경 구축하기: MacPorts를 이용</a></li>
<li><a href='http://www.4four.us/article/2010/02/informatics-creativity-a-role-for-abductive-reasoning' rel='bookmark' title='Informatics Creativity: A Role for Abductive Reasoning?'>Informatics Creativity: A Role for Abductive Reasoning?</a></li>
<li><a href='http://www.4four.us/article/2009/09/commonsense-based-interfaces' rel='bookmark' title='Commonsense-based Interfaces &#8211; Marvin Minsky'>Commonsense-based Interfaces &#8211; Marvin Minsky</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>얼마 전 <a href="http://www.4four.us/article/2009/09/commonsense-based-interfaces" target=_blank>민스키 교수의 글</a>을 소개했는데요, 내친김에 상식추론(Commonsense Reasoning)을 조금 더 깊이 파보기로 했습니다. 관련 역사를 거슬러 오르다 보니 존 매카시(John McCarthy) 교수의 <a href="http://www-formal.stanford.edu/jmc/mcc59.html" target="_blank&quot;">Programs with Common Sense</a>에까지 이르렀습니다. 무려 50년이나 전인 1959년에 출판된 논문입니다.</p>
<p>매카시 교수는 &#8220;Advice Taker&#8221;라는 가상의 프로그램을 상정하여 그가 생각하는, 상식이 있는 프로그램의 특징을 설명합니다. &#8220;상식을 갖춘 프로그램&#8221;이라&#8230; 도대체 어떤 걸까요?<span id="more-647"></span></p>
<p>프로그램이 상식이 있다는 건 기존 지식과 새롭게 습득하는 사실로부터 프로그램 스스로 다양한 결론을 도출해낼 수 있는 능력이 있음을 뜻합니다. &#8220;Programs with Common Sense&#8221;라는 제목을 봤을 때 처음 떠오른 이미지와는 조금 다르죠? 오늘날에는 상식이라는 말보다는 추론 엔진(inference engine, reasoning)이라고 부르는 것입니다. 지금은 상식이라고 하면 말 그대로 상식적인 지식 그 자체를 얘기할 때가 많죠.</p>
<p>1959년에 출판된 논문이라는 점을 다시 한 번 기억해주세요. 저자가 말하는 당시의 궁극적인 목표는 사람처럼 효과적으로 경험에서 배울 수 있는 프로그램을 만드는 것이었다고 하니까요. (물론, 이 목표는 아직도 달성되지 않았지만&#8230;)</p>
<p>글의 앞부분에서는 매카시 교수가 생각하는 인공지능 프로그램이 갖춰야 할 능력을 설명합니다. 기계가 뭔가를 배우려면 먼저 그것을 표현, 즉 알아들을 수 있어야 합니다. 그게 가능해지면 이제부터는 우리가 직접 뭔가를 가르칠 수 있겠죠. 여기서 가르친다는 것은 형식 언어(formal language)를 써서 정보를 입력한다는 얘기입니다.</p>
<p>사람을 가르치는 것과 소프트웨어를 만드는 것의 차이가 뭘까요? 프로그래밍은 기계가 무엇을 해야 할지를 하나하나 입력해야 하지만 사람을 가르칠 때는 그런 세세한 지시보다 선언적인 방식을 취한다는 게 큰 차이점입니다. &#8220;내가 올 때까지 여기서 기다려.&#8221;라고 하지, &#8220;내가 여기에 있는지 확인하고 없으면 1초 동안 아무것도 하지 않는 것을 계속 반복해.&#8221;라고 하지는 않잖아요?</p>
<p>아무튼 여기서 선언적 프로그래밍(declarative programming)의 개념이 등장합니다. 특히 뒷부분에서는 지금 우리가 로직 프로그래밍(logic programming)이라고 부르는 기법에 대한 얘기가 주를 이룹니다. 모르시는 분들을 위해 간단한 예를 들면,</p>
<blockquote><p>&#8220;내가 지금 공항에 가야 하는데, 현재는 집 책상 옆에 있고, 차는 차고에 있다. 나는 차고까지 걸어갈 수 있고, 공항까지 차를 운전해 갈 수 있다.&#8221;</p></blockquote>
<p>이런 상황과 목표, 지식이 주어졌을 때, 기계가 어떻게 스스로 다음 행동을 결정해서 목표를 이루게 할 것이냐 라는 거죠. 인공지능에서 계획(planning)이라고 부르는 분야입니다. 논문에서 이런 기법을 설명하는데, 특별한 용어는 없고 그냥 heuristic rule이라고만 쓰고 있네요.</p>
<p>그리고 이 부분에서 리스트(list)라는 단어가 언급되는데, 참 일반적인 단어지만 평범하게 들리지가 않습니다. 저자가 바로 Lisp 프로그래밍 언어를 만든 존 매카시 교수이기 때문이죠. 이런 연구 아이디어와 그 밖의 모든 게 연결되어 Lisp라는 언어가 탄생한 거겠죠? 참고로, Lisp은 이 논문보다 한 해 앞선 1958년에 태어났답니다. 자세한 내용은 <a href="http://www-formal.stanford.edu/jmc/history/lisp/lisp.html" target="_blank">History of Lisp</a>을 읽어보세요.</p>
<p>형식 언어와 논리를 써서 기계가 스스로 지식을 추론/학습한다는 아이디어를 제시한 것이 이 논문의 가장 큰 의의가 아닌가 싶습니다. 지금에 와서 보면 여러 한계가 눈에 보이지만, 단순하게는 &#8220;나는 운전할 수 있다&#8221;가 진실이더라도 &#8220;지금 술을 마셨다&#8221;는 상황이 주어지면 처음 명제는 거짓이 되는 문제가 있겠습니다만, 또 그런 것을 극복하는 방안, 이를테면 비단조추론(nonmonotonic reasoning) 같은 것이 나중에 도입되지요.</p>
<p>요즘은 통계적인 방식의 기계학습(machine learning: ML)이 대세를 이루고 있지만 이런 연역적이고 그 추론과정이 눈에 보이는 논리 기반의 접근방식도 여전히 무시할 수 없는 장점이 있는 것 같습니다. 특히 &#8220;스스로 이해하는 기계&#8221;라는 건 참 매력적인 개념 아닌가요?</p>
<img src="http://www.4four.us/wordpress/?ak_action=api_record_view&id=647&type=feed" alt="" /><p>Related posts:<ol>
<li><a href='http://www.4four.us/article/2008/06/common-lisp-emacs-sbcl-slime-macports' rel='bookmark' title='맥에서 Common Lisp 환경 구축하기: MacPorts를 이용'>맥에서 Common Lisp 환경 구축하기: MacPorts를 이용</a></li>
<li><a href='http://www.4four.us/article/2010/02/informatics-creativity-a-role-for-abductive-reasoning' rel='bookmark' title='Informatics Creativity: A Role for Abductive Reasoning?'>Informatics Creativity: A Role for Abductive Reasoning?</a></li>
<li><a href='http://www.4four.us/article/2009/09/commonsense-based-interfaces' rel='bookmark' title='Commonsense-based Interfaces &#8211; Marvin Minsky'>Commonsense-based Interfaces &#8211; Marvin Minsky</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.4four.us/article/2009/10/programs-with-common-sense-john-mccarthy/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>프로그래밍, 처음부터 다시 배우기</title>
		<link>http://www.4four.us/article/2008/07/learning-to-write-program-again</link>
		<comments>http://www.4four.us/article/2008/07/learning-to-write-program-again#comments</comments>
		<pubDate>Wed, 09 Jul 2008 23:10:00 +0000</pubDate>
		<dc:creator>SL</dc:creator>
				<category><![CDATA[note]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.seunglee.us/wordpress/?p=232</guid>
		<description><![CDATA[하나의 방식에 익숙해지는 것은 효율성을 높여주지만 동시에 생각을 틀을 그 안에 가둬버릴 위험을 안고 있다. 요즘에 내가 짠 코드를 보고 있노라면 그런 생각은 더욱 커진다. 새로운 패러다임의 프로그래밍 언어를 공부해볼까? 그러자 갑자기 떠오르는 책 하나가 있었다. MIT에서 10년이 넘게 프로그래밍 입문서로 쓰이고 있다는 책. 하지만, 아마존의 서평을 보면 훌륭한 책이지만 초심자용은 아니라는 책. 표지의 그림을 [...]
Related posts:<ol>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters' rel='bookmark' title='해커와 화가 &#8211; 폴 그레이엄'>해커와 화가 &#8211; 폴 그레이엄</a></li>
<li><a href='http://www.4four.us/article/2010/12/programming-the-universe' rel='bookmark' title='프로그래밍 유니버스: 흥미로운 아이디어, 쉽잖은 디테일'>프로그래밍 유니버스: 흥미로운 아이디어, 쉽잖은 디테일</a></li>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters-2' rel='bookmark' title='해커와 화가, 그리고 &#8230;'>해커와 화가, 그리고 &#8230;</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>하나의 방식에 익숙해지는 것은 효율성을 높여주지만 동시에 생각을 틀을 그 안에 가둬버릴 위험을 안고 있다. 요즘에 내가 짠 코드를 보고 있노라면 그런 생각은 더욱 커진다.</p>
<blockquote style="font-style: italic;"><p>새로운 패러다임의 프로그래밍 언어를 공부해볼까?</p></blockquote>
<p>그러자 갑자기 떠오르는 책 하나가 있었다.</p>
<ul>
<li>MIT에서 10년이 넘게 프로그래밍 입문서로 쓰이고 있다는 책.</li>
<li>하지만, 아마존의 서평을 보면 훌륭한 책이지만 초심자용은 아니라는 책.</li>
<li>표지의 그림을 따서 마법사 책이라고도 불리는 바로 이 책.</li>
</ul>
<p><span id="more-232"></span></p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.4four.us/wordpress/wp-content/uploads/1/ik8.jpg" alt="Structure and Interpretation of Computer Programs" width="150" height="217" /><br />
<span style="font-weight: bold;">&lt;Structure and Interpretation of Computer Programs&gt;</span> 말이다.</p>
<p><img class="alignright" src="http://www.4four.us/wordpress/wp-content/uploads/1/jk5.png" alt="아마존 별 평점" width="141" height="97" />아마존에서 사람들이 이 책에 매긴 별점 분포를 보면 참 재미있다. 다섯 개와 한 개에 극단적으로 몰려 있는 것이, 완전히 “모 아니면 도”라는 느낌이 든다.</p>
<p>상당히 많은 추천을 받은 서평이 있기에 쓴 사람이 누군가 하고 봤더니.. &lt;Artificial Intelligence: A Modern Approach&gt;의 공동저자이자 현재 구글의 Director of Research 직을 맡고 있는 피터 노빅(Peter Norvig)이었다. 그는 자동차에 비유하면서, 이 책은 자동차의 동작 원리, 효율적이면서 믿을 수 있는 자동차를 설계하는 방법을 찾는 사람을 위한 것이라고 했다. 운전하는 방법을 가르쳐주는 책이 아니라는 얘기다. 저 정도 되는 사람이 이 책을 읽고 자신의 직업에 대한 생각이 바뀌었다고 할 정도라니&#8230; 꽤 솔깃하지 않은가.</p>
<p>이어지는 서평에서도 반가운 이름이 보였다. &lt;해커와 화가&gt;의 저자 폴 그레이엄(Paul Graham)이었는데, 그는 Kenneth Clark의 말을 인용했다.</p>
<blockquote><p>if a lot of smart people have liked something that you don&#8217;t, you should try and figure out what they saw in it.</p></blockquote>
<p>아무튼 이런 사람들이 적극적으로 나서서 변호해주는 책이라면 후회는 하지 않겠다 싶어서 냉큼 주문했다. 이른바 “프로그래밍, 처음부터 다시 배우기” 프로젝트의 시작이다.<!-- WSA: rules for context 'example-post-bottom' did not apply --></p>
<img src="http://www.4four.us/wordpress/?ak_action=api_record_view&id=232&type=feed" alt="" /><p>Related posts:<ol>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters' rel='bookmark' title='해커와 화가 &#8211; 폴 그레이엄'>해커와 화가 &#8211; 폴 그레이엄</a></li>
<li><a href='http://www.4four.us/article/2010/12/programming-the-universe' rel='bookmark' title='프로그래밍 유니버스: 흥미로운 아이디어, 쉽잖은 디테일'>프로그래밍 유니버스: 흥미로운 아이디어, 쉽잖은 디테일</a></li>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters-2' rel='bookmark' title='해커와 화가, 그리고 &#8230;'>해커와 화가, 그리고 &#8230;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.4four.us/article/2008/07/learning-to-write-program-again/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>맥에서 Common Lisp 환경 구축하기: MacPorts를 이용</title>
		<link>http://www.4four.us/article/2008/06/common-lisp-emacs-sbcl-slime-macports</link>
		<comments>http://www.4four.us/article/2008/06/common-lisp-emacs-sbcl-slime-macports#comments</comments>
		<pubDate>Fri, 13 Jun 2008 09:49:00 +0000</pubDate>
		<dc:creator>SL</dc:creator>
				<category><![CDATA[note]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.seunglee.us/wordpress/?p=223</guid>
		<description><![CDATA[MacPorts라는 OSX 용 패키지 관리자를 이용해서 Common Lisp 개발 환경을 세팅하는 방법을 정리해둔다. 1. Common Lisp 구현 설치하기 (sbcl) 살펴보니까 Common Lisp의 구현에도 참 여러 종류가 있는데, 사람들이 많이 쓴다는 sbcl (Steel Bank Common Lisp, http://www.sbcl.org)을 깔기로 했다. 터미널 프롬프트에 다음과 같이 입력하자. sudo port install sbcl 시작하려면 터미널 창에 “sbcl” 이라고 치면 된다. 참고로, [...]
Related posts:<ol>
<li><a href='http://www.4four.us/article/2009/10/programs-with-common-sense-john-mccarthy' rel='bookmark' title='Programs with Common Sense &#8211; John McCarthy'>Programs with Common Sense &#8211; John McCarthy</a></li>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters-2' rel='bookmark' title='해커와 화가, 그리고 &#8230;'>해커와 화가, 그리고 &#8230;</a></li>
<li><a href='http://www.4four.us/article/2010/02/why-i-tag-blog-postings' rel='bookmark' title='글에 태그를 다는 이유'>글에 태그를 다는 이유</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>MacPorts라는 OSX 용 패키지 관리자를 이용해서 Common Lisp 개발 환경을 세팅하는 방법을 정리해둔다.<span id="more-223"></span></p>
<h3>1. Common Lisp 구현 설치하기 (sbcl)</h3>
<p>살펴보니까 Common Lisp의 구현에도 참 여러 종류가 있는데, 사람들이 많이 쓴다는 sbcl (Steel Bank Common Lisp, <a href="http://www.sbcl.org" target="_blank">http://www.sbcl.org</a>)을 깔기로 했다. 터미널 프롬프트에 다음과 같이 입력하자.</p>
<div style="margin-left: 40px;">sudo port install sbcl</div>
<p>시작하려면 터미널 창에 “sbcl” 이라고 치면 된다. 참고로, 끝내는 명령은 “(quit)“이다. 간단하게 Lisp 언어의 맛만 보려면 이것으로도 충분할 것이다. 하지만 자바 프로그래밍이 어디 메모장과 JDK만으로 되던가?</p>
<h3>2. 개발 환경 구축하기 (Emacs + Slime)</h3>
<p>많은 사람들이 Lisp 개발 도구로 이맥스를 추천하는 것을 보고 나도 대세에 따르기로 했다.</p>
<h4>2.1 이맥스 설치</h4>
<div style="margin-left: 40px;">sudo port install emacs</div>
<h4>2.2 SLIME 설치</h4>
<p>SLIME(Superior Lisp Interaction Mode for Emacs, <a href="http://common-lisp.net/project/slime" target="_blank">http://common-lisp.net/project/slime</a>)은 Lisp 개발을 보다 편리하게 해주는 이맥스 모드이다. 자세한 기능은 홈페이지의 설명을 참고하자.</p>
<div style="margin-left: 40px;">sudo port install slime</div>
<p>설치한 뒤에는 사용자 기본 디렉터리의 .emacs 파일에 (없으면 만들어서) 다음의 코드를 추가해야 한다.</p>
<div style="margin-left: 40px;">(require &#8216;slime-autoloads)<br />
(setq slime-lisp-implementations<br />
`((sbcl (&#8220;/opt/local/bin/sbcl&#8221;))))<br />
(add-hook &#8216;lisp-mode-hook<br />
(lambda ()<br />
(cond<sup><a href="http://www.4four.us/article/2008/06/common-lisp-emacs-sbcl-slime-macports#footnote_0_223" id="identifier_0_223" class="footnote-link footnote-identifier-link" title="not (featurep &amp;#8216;slime">1</a></sup><br />
(require &#8216;slime)<br />
(normal-mode)))))</div>
<div style="margin-left: 40px;">(eval-after-load &#8220;slime&#8221;<br />
&#8216;(slime-setup &#8216;(slime-fancy slime-banner)))</div>
<p>이제 터미널에서 “emacs” 명령으로 이맥스를 실행시켜서, M-x (Alt와 x를 함께 누르거나, ESC와 x를 차례대로 누르기) 한 뒤에 “slime”이라고 치면 반가운 CL-USER&gt; 프롬프트가 나타난다.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.4four.us/wordpress/wp-content/uploads/1/hk8.png" alt="Emacs slime" width="434" height="213" /><br />
<span>Emacs slime 모드에서 보는 Hello, world</span></p>
<p>이것으로 터미널 용 환경 세팅은 끝났다. 하지만 터미널에서만 작업하는 것은 아무래도 좀 불편하니까 이번에는 GUI 버전의 이맥스를 깔아보자.</p>
<p>이제까지 했던 것처럼 “sudo port install emacs-app” 명령으로 GNU Emacs를 설치할 수도 있지만 그것보다는 그냥 Aquamacs Emacs (<a href="http://aquamacs.org" target="_blank">aquamacs.org</a>)를 따로 내려받아서 설치하기를 권한다.</p>
<p style="text-align: center;"><img class=" aligncenter" src="http://www.4four.us/wordpress/wp-content/uploads/1/hk7.png" alt="Aquamacs Emacs" width="500" height="594" /></p>
<p>그리고 .emacs 파일을 열어서 (require &#8216;slime-autoloads) 위에 (add-to-list &#8216;load-path &#8220;/opt/local/share/emacs/site-lisp/slime&#8221;)를 추가해준다. 추가하지 않으면, 이맥스가 초기 구동할 때 에러 메시지가 뜨고, M-x slime이라고 해도 알아듣지 못한다.</p>
<ol class="footnotes"><li id="footnote_0_223" class="footnote">not (featurep &#8216;slime</li></ol><img src="http://www.4four.us/wordpress/?ak_action=api_record_view&id=223&type=feed" alt="" /><p>Related posts:<ol>
<li><a href='http://www.4four.us/article/2009/10/programs-with-common-sense-john-mccarthy' rel='bookmark' title='Programs with Common Sense &#8211; John McCarthy'>Programs with Common Sense &#8211; John McCarthy</a></li>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters-2' rel='bookmark' title='해커와 화가, 그리고 &#8230;'>해커와 화가, 그리고 &#8230;</a></li>
<li><a href='http://www.4four.us/article/2010/02/why-i-tag-blog-postings' rel='bookmark' title='글에 태그를 다는 이유'>글에 태그를 다는 이유</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.4four.us/article/2008/06/common-lisp-emacs-sbcl-slime-macports/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>해커와 화가, 그리고 &#8230;</title>
		<link>http://www.4four.us/article/2007/08/hackers-and-painters-2</link>
		<comments>http://www.4four.us/article/2007/08/hackers-and-painters-2#comments</comments>
		<pubDate>Tue, 28 Aug 2007 20:20:00 +0000</pubDate>
		<dc:creator>SL</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://www.seunglee.us/wordpress/?p=102</guid>
		<description><![CDATA[이 책을 읽다보면 &#8216;참 이상적인 얘기만 하는구나&#8217; 라는 느낌을 받을 수 있다. 만약 저자가 컴퓨터 사이언스의 박사 학위를 갖고 있지 않았다면, 또 직접 회사를 설립하여 (화려한!) 성공을 거둔 벤쳐사업가가 아니었다면, 그의 말은 그저 허무맹랑한 이야기로 그쳤을지도 모를 일이다. 하지만 그는 자신의 방식을 통해 성곰함으로써 스스로의 말을 증명해내었기에 그의 말에서 느껴지는 무게는 남다르다. 조금 엉뚱하지만, 이쯤 [...]
Related posts:<ol>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters' rel='bookmark' title='해커와 화가 &#8211; 폴 그레이엄'>해커와 화가 &#8211; 폴 그레이엄</a></li>
<li><a href='http://www.4four.us/about' rel='bookmark' title='About'>About</a></li>
<li><a href='http://www.4four.us/article/2007/11/dont-hurry-be-happy' rel='bookmark' title='느리게 사는 즐거움'>느리게 사는 즐거움</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>이 책을 읽다보면 &#8216;참 이상적인 얘기만 하는구나&#8217; 라는 느낌을 받을 수 있다. 만약 저자가 컴퓨터 사이언스의 박사 학위를 갖고 있지 않았다면, 또 직접 회사를 설립하여 (화려한!) 성공을 거둔 벤쳐사업가가 아니었다면, 그의 말은 그저 허무맹랑한 이야기로 그쳤을지도 모를 일이다. 하지만 그는 자신의 방식을 통해 성곰함으로써 스스로의 말을 증명해내었기에 그의 말에서 느껴지는 무게는 남다르다.<span id="more-102"></span></p>
<p>조금 엉뚱하지만, 이쯤 해서 떠올리게 되는 인물이 있다. 바로 &#8220;조엘 온 소프트웨어&#8221; 라는 책으로 유명한 조엘 스폴스키다. 그는 포그크릭 소프트웨어라는 회사를 운영하고 있는데, 스스로의 회사를 만들었다는 점에서 그레이엄과 닮아 있기도 하다. 하지만 두 사람의 프로그래밍에 대한 견해는 상당히 대조적이다.</p>
<p>추상화의 아름다움을 예찬하는 그레이엄에 비해, 조엘은 추상화의 구멍을 경계한다. 그레이엄은 점진적인 개선보다는 규칙적인 프로젝트의 새로운 시작을 권하지만, 조엘은 코드를 뒤엎고 완전히 처음부터 새로 작성하는 것을 &#8216;절대 하지 말아야 하는 일&#8217;이라고 힘주어 말한다. 또 그레이엄이 100년 후의 프로그래밍 언어가 갖추어야 할 속성을 호기롭게 예측할 때, 조엘은 러시아 페인트공의 비유를 통해 strcat() 함수의 잠재적인 비효율성을 지적한다.</p>
<p>즉, 조엘이 프로그래밍에 대하여 보다 현실적인 태도를 취하고 있으며, 그의 책 역시 실용적인 많은 조언을 제공하고 있다. 폴 그레이엄의 시원스런 말투와 강한 설득력에 이끌리는 마음 십분 이해하지만, 균형 감각을 유지하기 위해서는 그와는 다른 목소리에도 귀를 기울일 필요가 있다. 이 책의 마지막 장을 덮은 뒤, (Lisp 언어 입문서을 집어들기 전에 :-) &#8220;조엘 온 소프트웨어&#8221;의 첫장을 펼쳐보기를 권하는 것은 바로 그런 이유에서다.</p>
<img src="http://www.4four.us/wordpress/?ak_action=api_record_view&id=102&type=feed" alt="" /><p>Related posts:<ol>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters' rel='bookmark' title='해커와 화가 &#8211; 폴 그레이엄'>해커와 화가 &#8211; 폴 그레이엄</a></li>
<li><a href='http://www.4four.us/about' rel='bookmark' title='About'>About</a></li>
<li><a href='http://www.4four.us/article/2007/11/dont-hurry-be-happy' rel='bookmark' title='느리게 사는 즐거움'>느리게 사는 즐거움</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.4four.us/article/2007/08/hackers-and-painters-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>해커와 화가 &#8211; 폴 그레이엄</title>
		<link>http://www.4four.us/article/2007/08/hackers-and-painters</link>
		<comments>http://www.4four.us/article/2007/08/hackers-and-painters#comments</comments>
		<pubDate>Mon, 27 Aug 2007 14:11:55 +0000</pubDate>
		<dc:creator>SL</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[computer-science]]></category>
		<category><![CDATA[essay]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[painter]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.seunglee.us/wordpress/?p=100</guid>
		<description><![CDATA[책표지에 쓰여있는 것처럼 &#8220;이단적인 통찰과 현실적인 지혜&#8221;로 가득차 있는 책이다. 특히 &#8220;공부벌레는 왜 인기가 없는가&#8221;라는 조금은 엉뚱한 질문으로 시작하여 학교 시스템에 대한 색다른 관점을 제시하는 1장은 한 번쯤 깊이 곱씹어볼 만한 가치가 있다. 2장은 이 책의 제목 &#8220;해커와 화가&#8221;에 가장 잘 어울리는 장으로서, 해커이자 동시에 화가인 저자의 프로그래밍에 대한 생각을 살펴볼 수 있다. 이 책에서 [...]
Related posts:<ol>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters-2' rel='bookmark' title='해커와 화가, 그리고 &#8230;'>해커와 화가, 그리고 &#8230;</a></li>
<li><a href='http://www.4four.us/article/2007/09/joel-on-software' rel='bookmark' title='조엘 온 소프트웨어'>조엘 온 소프트웨어</a></li>
<li><a href='http://www.4four.us/article/2008/07/learning-to-write-program-again' rel='bookmark' title='프로그래밍, 처음부터 다시 배우기'>프로그래밍, 처음부터 다시 배우기</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="alignleft">
<div class="ttbReview">
<table border="0">
<tbody>
<tr>
<td><a href="http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8979143427&amp;ttbkey=ttblseuny1334003&amp;COPYPaper=1"><img src="http://image.aladdin.co.kr/coveretc/book/coversum/8979143427_2.jpg" border="0" alt="" /></a></td>
</tr>
</tbody>
</table>
</div>
</div>
<p>책표지에 쓰여있는 것처럼 &#8220;이단적인 통찰과 현실적인 지혜&#8221;로 가득차 있는 책이다. 특히 &#8220;공부벌레는 왜 인기가 없는가&#8221;라는 조금은 엉뚱한 질문으로 시작하여 학교 시스템에 대한 색다른 관점을 제시하는 1장은 한 번쯤 깊이 곱씹어볼 만한 가치가 있다. 2장은 이 책의 제목 &#8220;해커와 화가&#8221;에 가장 잘 어울리는 장으로서, 해커이자 동시에 화가인 저자의 프로그래밍에 대한 생각을 살펴볼 수 있다.<span id="more-100"></span></p>
<p>이 책에서 저자는 프로그래밍 대신 (아마도 의도적으로) 해킹이라는 용어를 사용하고 있는데, 여기서의 해킹이란 -흔히 알려진 것처럼 남의 컴퓨터에 침입하거나 또는 운영체제를 깊이 파헤치는 행위가 아니라- (프로그래밍 언어를 포함하는) 소프트웨어를 디자인하고 구현하는 작업 전체를 아우르는 행위다.</p>
<p>그에 따르면 해킹은 수학이나 자연과학 같은 학문과는 다른 종류의 일이며, 또한 얼핏 비슷해보이는 소프트웨어 공학과도 구분된다. 소프트웨어 공학이 &#8216;어떻게&#8217;라는 방법에 집중하는 반면, 해킹은 &#8216;무엇을&#8217;이라는 문제에도 관심을 쏟기 때문이다.</p>
<blockquote><p>&#8230; 해킹이라는 것은 분명 주어진 요구사항을 단순히 어떻게 구현할 것이지 정하는 일이 아니다. 진정한 해킹이란 사실 요구사항 자체를 창조하는 것이다. 요구사항을 만들어 내는 최선의 방법은 그것을 실제로 구현해 보는 것인 경우가 많다.</p></blockquote>
<p>그는 해커와 화가의 작업 방식의 유사함을 설명하면서, 해킹이 컴퓨터 과학보다는 오히려 소설쓰기나 그림그리기와 같은 예술적 창조 행위에 더 가깝다고 말한다.</p>
<blockquote><p>&#8230; 나는 오랫동안 이런 프로그래밍 방식에 대해서 남몰래 부끄러워했다. 하지만 내가 그 당시에 화가나 건축가 같은 다른 창조자들이 일하는 방식을 알았더라면, 내가 프로그래밍 하는 방식을 지칭하는 특별한 이름이 있다는 사실을 알 수 있었을 것이다. 그 이름은 바로 &#8216;스케치&#8217;다. (중략) 소설가, 화가, 그리고 건축가의 작업이 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재다.</p></blockquote>
<p>하지만 그림과 소프트웨어 사이의 무시할 수 없는 차이, 즉 그림이나 건축과 같은 작품은 (창조자에 의해) 한 번 완성된 뒤에는 그대로 보존하기만 하면 되는 반면, 소프트웨어는 끊임없는 유지보수를 필요로 한다는 사실에 대해서는 어떻게 생각할까? 그는 이렇게 답한다.</p>
<blockquote><p>어느 한 화가의 작품을 시간 순서대로 확인해 보면 하나의 작품은 바로 이전 작품에서 학습한 내용을 토대로 구축되어 있음을 알게 된다. (중략) 하나의 프로젝트를 붙들고 몇 년 동안 일하면서 나중에 새롭게 떠오르는 생각을 프로젝트에 부분적으로 적용하여 개정판을 만들어 나가는 것보다는, 화가와 같이 처음부터 새롭게 시작하는 프로젝트를 규칙적으로 반복하는 것이 더 바람직하다고 본다.</p></blockquote>
<p>2장을 마무리지으면서 그는 레오나르도 다빈치의 시절에만 해도 그림이란 지금만큼 멋진 일이 아니었음을 강조하며 &#8220;해킹의 전성기는 바로 지금&#8221;이라는 말로 독자를 해커의 길로 유혹한다. 작품의 질은 창조자가 그 일에 어떻게 반응하는가에 달려있듯이 해킹이 얼마나 멋진 일이 되는가도 우리가 지금 해킹을 통해 무엇을 하는가에 달려 있다는 것을 너무나도 잘 알고 있기 때문이리라.</p>
<h3>꼬리에 꼬리를 무는 책읽기</h3>
<ul>
<li><a href="http://www.4four.us/article/2007/09/joel-on-software">조엘 온 소프트웨어</a></li>
</ul>
<p><!-- WSA: rules for context 'example-post-bottom' did not apply --></p>
<img src="http://www.4four.us/wordpress/?ak_action=api_record_view&id=100&type=feed" alt="" /><p>Related posts:<ol>
<li><a href='http://www.4four.us/article/2007/08/hackers-and-painters-2' rel='bookmark' title='해커와 화가, 그리고 &#8230;'>해커와 화가, 그리고 &#8230;</a></li>
<li><a href='http://www.4four.us/article/2007/09/joel-on-software' rel='bookmark' title='조엘 온 소프트웨어'>조엘 온 소프트웨어</a></li>
<li><a href='http://www.4four.us/article/2008/07/learning-to-write-program-again' rel='bookmark' title='프로그래밍, 처음부터 다시 배우기'>프로그래밍, 처음부터 다시 배우기</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.4four.us/article/2007/08/hackers-and-painters/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

