해커와 화가
해커와 화가의 공통점은 우선 그들이 둘 다 무언가를 창조한다는 사실이다. 해커와 화가는 좋은 무엇을 만들어내기 위해서 노력한다.
- p.41
해커들에게 있어서 컴퓨터는 자기를 표현하기 위한 매체에 불과하다.
- p.41
진정한 해킹이란 사실 스펙 자체를 창조하는 것이다. 스펙을 만족시키는 최고의 방법은 대부분 그것을 실제로 구현해보는 것이다.
- p.42
나는 내게 다가오는 영감의 원천이 '컴퓨터'라는 말이 포함된 학과에 존재하는 것이 아니라 창조자들이 모여드는 영역에 존재함을 알게 되었다. 다시 말하자면 그림은 내게 그 어떤 계산 이론보다 풍부한 영감의 원천이 되어 주었다.
- p.45
나는 종이 한 장보다는 컴퓨터 앞에 앉아서 프로그래밍하는 것을 더 즐겼다. 또 전체적인 프로그램을 미리 신중하게 적어서 생각하는 방향이 옳은지 여부를 확인하기 전에 조각난 코드부터 대책 없이 늘어놓은 다음 그것의 모양을 조금씩 잡아 나가는 방법으로 프로그래밍을 했다.
- p.45
초등학교 시절 선생님이 가르쳐준 대로 연필을 쥐지 못해 괴로워했던 것처럼, 나는 오랫동안 이런 프로그래밍 방식에 대해 남몰래 부끄러워 했다. 하지만 내가 그 당시에 화가나 건축가 같은 다른 창조자들이 일하는 방식을 알았더라면, 내가 프로그래밍하는 방식을 지칭하는 특별한 이름이 있다는 사실을 알 수 있었을 것이다. 그 이름은 바로 '스케치'다. 내가 보기에 대학 시절에 배운 프로그래밍 방식은 완전히 잘못되었다. 소설가, 화가, 그리고 건축가의 작업이 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재다.
- p.46
프로그래밍 언어는 당신이 이미 머릿속으로 생각한 프로그램을 표현하는 도구가 아니라, 아직 존재하지 않는 프로그램을 생각해내기 위한 도구다. 볼펜이 아니라 연필인 셈이다.
- p.46
만약 돈을 벌고 싶다면 자기에게 흥미로운 일을 찾을 것이 아니라, 너무나 짜증 나는 일이라서 누구도 그것을 공짜로 해결할 엄두를 내지 않는 힘겨운 일을 찾아야 할 것이다.
- p.50
낮일이란 돈을 벌기 위해서 하는 일과 열정을 위해서 하는 일이 별개의 것임을 의미한다. 해커들이 낮일을 갖는 한편 멋진 소프트웨어를 개발하기 위한 일을 따로 진행한다는 게 새로운 개념은 아니다. 오픈소스 해커들이 하는 일이 바로 그것이기 때문이다.
- p.50
우리가 프로그래머를 면접 볼 때 집중적으로 물어본 질문은 그가 여유 시간에 작성한 소프트웨어가 무엇인가 하는 것이었다. 무엇을 진정으로 사랑하지 않는다면 그것을 정말로 잘 해낼 수 없다. 마찬가지로 해킹을 정말로 좋아한다면 자기 자신의 프로젝트를 수행하지 않고는 견딜 수가 없을 것이다.
- p.51
우리가 그림에서 배울 수 있는 것은 해킹을 어떻게 할 것인가 하는 점이다. 그림을 그리는 기술은 무엇인가를 그림으로써 학습한다. 해킹도 마찬가지다. 대부분의 해커는 13살이었을 때 직접 프로그램을 만들면서 해킹을 배웠다.
- p.51
어느 한 화가의 작품을 시간 순대로 확인해 보면 하나의 작품은 바로 이전 작품에서 학습한 내용을 토대로 구축되었음을 알게 된다. 화가와 같이 처음부터 새롭게 시작하는 프로젝트를 규칙적으로 반복하는 것이 더 바람직하다고 본다.
- p.52
창조자들이 학습하든 다른 방법으로는 '예'를 통한 학습 방법이 있다. 벤자민 프랭클린은 에디슨과 스틸리의 에세이에 담겨있는 논점을 요약하고 그것을 재구성하는 방법을 통해서 글쓰기를 배웠다.
마찬가지로 해커들도 좋은 프로그램을 들여다봄으로써 프로그래밍을 배운다. 겉핥기식으로 프로그램이 어떤 일을 하는지만 보는 것이 아니라 내부의 소스코드를 들여다보는 것이다.
- p.53
보이지 않는 섬세함이 모이고 쌓이면 마침내 눈에 보이게 되는 법이기 때문에 결국은 빛을 발하기 마련이다. 좋은 소프트웨어의 내부를 들여다보면 아무도 들여다볼 것이라고 생각되지 않는 곳조차 아름답다는 사실을 알게 될 것이다.
- p.55
프로그램은 오직 사람이 읽기 위해서 작성되어야 한다. 컴퓨터가 그것을 실행하는 것은 부차적인 일이다. - [컴퓨터 프로그램의 구조와 해석]
- p.59
해킹이 결국 그림이나 소설과 비슷하다면, 그림이나 소설만큼 멋진 일일까? 명성을 얻는 과정은 항상 시간을 요구한다. 그것은 마치 먼 거리에 있는 별에서 날아오는 빛과 비슷하다.
- p.61
평균 뛰어넘기
프로그래밍 언어란 결국 도구일 뿐이다. 리스프가 진짜로 더 나은 프로그램을 산출한다면 당신은 그것을 사용해야 한다.
- p.272
테크놀로지를 선택할 때는 다른 사람들이 무엇을 사용하고 있는가가 아니라 무엇이 최선인가에 대해 생각해야한다.
- p.273
우리는 단지 사람들이 생각하는 것보다 훨씬 빠른 속도로 소프트웨어를 개발할 수 있을 뿐이었다.
- p.276
전쟁에서와 마찬가지로 비즈니스에서는 상대방을 깜짝 놀라게 만드는 것이 구체적인 물리력 만큼이나 소중한 의미를 가진다.
- p.277
<프로그래밍 언어 선택하기>
어느 프로그램이 다른 언어로 작성된 프로그램과 밀접하게 연관될 필요가 있다면 새로운 프로그램을 아예 처음부터 동일한 언어로 작성하는 것이 좋다. 새로 작성하는 프로그램이 숫자를 처리하거나 비트 연산을 수행하는 것처럼 단순할 뿐이라면 추상적이지 않은 언어를 사용하는 것이 좋다. 그쪽이 더 빠르기 때문이다. 만약 짧은 일회용 프로그램을 만드는 것이라면 그것이 수행할 일과 관련된 좋은 라이브러리를 가지고 있는 언어를 선택하는 것이 좋다. 그렇지만 이런 예외를 제외한 일반적인 경우에는 어플리케이션 소프트웨어를 위해서 기능적 힘이 가장 뛰어난 언어를 선택하는 것이 최선이다. 그런 언어가 따로 존재함에도 불구하고 다른 언어를 이용하는 것은 기계어로 프로그래밍을 하는 실수와 다를 바가 없다.
- p.279
리스프 코드는 리스프의 데이터 객체로 이루어진다. 리스프 코드가 인터프리터에 의해서 읽히고 나면 당신이 마음껏 돌아다니며 값을 읽을 수 있는 데이터 구조로 변하게 된다. - p.282
다른 언어는 인터프리터에 의해 파싱되면 컴파일러에서 생성되는 파싱 트리 내에서 프로그램을 작성하도록 되어있다. 그런데 그런 파싱 트리를 조작하는 프로그램을 작성할 수도 있다. 리스프에서는 바로 그런 프로그램을 매크로라고 부른다. 프로그램을 작성하는 프로그램인 것이다.
우리는 비아웹 코드를 즐거움을 위해서 작성하지 않았다. 당시 우리는 우리 자신과 경쟁자 사이에 가능하면 높은 기술적 장벽을 쌓아 올리기 위해서 애를 쓰면서 프로그래밍을 하는 조그만 스타트업이었다.
- p.283
공부벌레의 역습
스티브 러셀은 어느 날 나에게 "eval을 이용해서 프로그래밍을 하지 못할 이유가 뭐가 있겠습니까"라고 말했다. ...(대충 eval은 계산이 아니라 표현을 읽기 위해 만들어졌다고 하는 말)... 하지만 그는 포기하지 않고 계속 매달렸다. 다시 말해서 그는 내 논문에 있는 eval을 버그를 수정하면서 IBM 704의 기계어로 변환한 다음 그것을 리스프 인터프리터라고 주장했다. 그건 사실이었다. 그리하여 리스프는 그때부터 오늘날과 같은 모습을 띠게 되었다. - 존 매카시
- p.293
공부벌레는 왜 인기가 없을까
내가 진짜로 원했던 것은 똑똑해지는 것이었다. 단순히 학교 공부를 잘하기 위해서가 아니었다. 사실은 멋진 로켓을 설계하기 위해서, 글을 더 잘 쓰기 위해서, 컴퓨터를 프로그래밍하는 방법을 더 잘 알기 위해서였다. 쉽게 말해서 뭔가 훌륭한 것을 만들어내고 싶었던 것이다.
- p.16
영화 [르네상스 맨]의 모티프가 되었던 알베르티는 다음과 같이 쓴 적이 있다. "예술에서, 이류일지라도 그 분야에서 성취를 이루고 싶다면, 한눈을 팔지 않는 전적인 헌신이 필요하다"
- p.17
어떤 분야에 속하지 않은 사람들은 그 분야에서 성공을 거두기 위해 얼마나 지속적으로(종종 무의식적으로도) 노력해야 하는지 알지 못한다. 예를 들어서 사람들은 그림을 잘 그리는 사람을 보면 그가 그러한 재능을 타고 났을 것이라고 생각한다. 하지만 그림을 "잘 그리는" 사람들은 그림을 그리는 데 많은 시간을 투자해왔다. 그들이 그림을 잘 그리는 이유는 거기에 있다.
- p.18
이 커다란 세계라는 틀 안에서는 비록 소수로 이루어진 작은 조직이라고 해도 서로 응집하면 뭔가 중요한 결과를 초래할 수 있다. 사회에서는 공부벌에들이 특정 장소에 모여서 지성을 가장 중요시하는 그들만의 조직을 구축할 수 있다. 그 와중에 흐름이 완전 바뀌기도 하는데, 특히 대학의 수학과나 과학과에서 움직임이 포착될 때가 종종 있다. 공부벌레들이 똑똑해 보이려고 어색하고 서투른 모습을 과장하는 곳 말이다. 수학자 존 내쉬는 노버트 위너를 너무나 흠모한 나머지 복도를 걸어가면서 벽을 두드리는 버릇을 그대로 따라하기도 했다.
- p.26
인간은 일하기를 좋아한다. 사람이 하는 일은 대개 그 사람의 정체성을 결정한다. 당시 우리가 했던 일은 아무런 의미도 없었다. 적어도 우리에겐 그렇게 보였다.
- p.30