컴퓨터공부/C & C++ & STL

SICP : 위대함과 오묘함

achivenKakao 2007. 11. 20. 18:34

살면서 위대함과 오묘함을 구별하지 못한 경우가 나는 꽤나 많다. 위대함이란 보통 사람이 넘볼 수 없을 만큼 대단해서 오히려 하찮게 보일 때가 많았다. 반면에 오묘함은 꽤나 납득이 가면서도 신비함에 가득차 있는 무언가처럼 보였다. 그렇지만 수많은 실수에도 불구하고, 위대함과 오묘함을 알아채는 건 아직까지도 정말 힘들일이기는 하다.

어떤 사람이나 기술이 위대한지 알기 위해서는 그 대상에 대해서 잘 알아야 한다. 문제는 위대한 존재는 위대한 만큼 이해하기 위해서는 앞에서 알아야할 것이 많다는데 있다. 그렇기 때문에, 앞에서 필요한 지식을 얻지 못했다면 대상이 위대한지 위대하지 않은지 구별할 수 없다.

반면에 오묘한 건 아주 쉽게 발견할 수 있다. 오묘하다는 건 완전히는 아니지만 어느 정도 그것을 알게 되었다는 말이다. 그리고 그 순간은 첫 만남이 아니라도 오랜 시간이 지나지 않아 오묘함을 깨달을 수 있다. 반면에, 오묘함은 오묘함에서 그치는 경우가 많다. 애초에, 오묘하게 느껴졌던 것은 상세하지 않았기 때문이고, 상세하지 않았기 때문에 더 알기가 힘들다.

나의 경우에 첫번째 오묘함은 Object-Oriented라는 개념이었다. C에서 자질구레한 프로그램이나 짜면서 자기만족을 했지만, 늘상 제대로된 추상과 설계를 하지 못한다는 사실을 깨닫고 있었다. 그때는 OO라는 개념이 딱 내가 부족하던 부분을 말해주고 있었고, 그것을 쉽게 해결할 수 있으리라 믿었다.

하지만 재밌게도 내가 부족한 점을 매꿀 수 있었던 것은 7년이 지난 어느 날 SICP를 배우면서 였다. 실제로 이 책은 여러가지 경로로 OO를 접할때 거의 동시에 접하게 되었고, 나에게서 철저히 무시되었다. 내가 봤을 때 이 책은 나중에 쓸일도 없는 scheme이라는 언어의 문법책이었고, 문법책 답지 않게 엄청나게 어려운 문제들로 중무장하고 있었다. 당연하게도 나는 흥미를 잃었고, 아리송한 OO의 세계에 빠져드는 것을 선택했다. 대학원에서 SICP를 다시 봤을 때야, 그리고 여러 사람의 도움을 받고서야, 이 책의 진가를 겨우 발견할 수 있었다.

7년동안의 고민이 단지 일년도 안되는 기간동안 본 책으로 인해서(그것도 책의 반도 채보지 않았는데) 깨졌을 때의 허탈함은 이루말할 수 없다. 프로그래밍에서 오묘함은 없다. 루크가 "해본다"라고 말했을 때 "한다, 못한다 중 하나야. ’해본다’는 없어."라고 대답한 요다처럼, 프로그래밍은 "안다, 모른다" 중 하나일 뿐이다.

우습게도 실력이 없었던 과거에는 자신감이 넘쳐서 뭐든지 시키면 다 만들 수 있다고 남들에게 소리쳤다. 지금은 뭐든지 못한다고 말할 수 밖에 없다. 아직 나에게는 컴퓨터 세상은 오묘함으로 보이는 "모르는 것" 투성이다.

이 글을 보는 프로그래머들에게 "멋지게 다가오는 오묘함을 믿지마라.", "진실을 알기전까지 무엇이든 섣부른 판단은 하지마라."라고 말하고 싶다. 그리고 꼭! "SICP를 봐라"라고 당부하고 싶다. 어쩌면 이 마저도 오묘함을 위대함이라 착각하는 경우일 수도 있지만...

출처 : http://kldp.org/node/88412