실용주의 프로그래머...

@codemaru · March 22, 2006 · 6 min read

              md 0

많은 사람들이 극찬을 한 책이다. 책 뒷 표지만 보아도 기라성 같은 분들의 추천사를 볼 수 있다. 왜 이 책은 유독 그리도 많은 사람들이 극찬하는 것일까?

인터넷으로 이 책을 구매할 당시 첫 느낌은 페이지 수에 비해서 가격이 비싸다는 점이었다. 물론 양장본이라는 점을 감안하더라도 다소 비싸다는 느낌이 들었다. 하지만 책을 받아본 순간 그런 생각은 눈녹듯 사라졌다. 책의 제본 상태는 튼튼했고, 알장또한 무척 고급스러웠기 때문이다. 이것은 책을 직접 보지 않고서는 이해하기 힘들다. 양장본이라 읽기도 무척 편했다. 거기에다 번역의 퀄리티도 상당히 높은 수준이었다. 사실 거의 대부분의 문장을 한번에 이해할 수 있었다. 요즘 보기 드문 괜찮은 번역서란 생각이 들었다. 하지만 이 모든 것은 책의 내용에 비하면 전초전에 불과하다~

책의 내용은 말 그대로 실용주의 프로그래머에 관해서 적어논 것이다. 실용주의가 무엇인가? 탁상공론하지 않겠다는 것이다. 문제를 어떻게 쉽고 빠르고 효율적으로 해결할 수 있냐에 관해서 다루고 있다. 대부분의 이런 개념서나 이론서적이 딱딱하고 따분한 내용을 담고 있는것과 비교적이다. 실제로 문체나 내용또한 굉장히 지루하지 않게 구성되어 있다. 나는 평소 책을 늦게 읽는 편임에도 불구하고 삼일만에 책을 다 읽어 버렸다. 소설책도 아닌것이 흡입력이 상당하다. ㅋㅋ-

뒷페이지 이만용씨의 소감에서도 알 수 있지만 어느 하나 뺄것 없이 모두 훌륭한 내용이었다. 정말 하나같이 모두 주옥같은 내용이었다. 그중에서도 개인적으로 인상 깊었던 부분을 찾아보자면 텍스트 처리, 메타프로그래밍과 같은 부분이었다.

텍스트 처리 부분에서는 텍스트 처리를 간편하게 할 수 있는 언어를 익힐 것을 권고하고 있다. 최근에 내가 한 작업 중의 하나는 몇 메가 분량의 xml 파일을 회사에서 사용하는 다른 형태의 텍스트 파일로 변환하는 것이 있었다. 나는 이 일을 단지 익숙하다는 이유로 C++을 사용해서 했다. 별다른 에러 처리 루틴을 포함하지 않고 있음에도(단지 내부에서 개발자만 사용할 툴이기 때문에) 몇 일을 걸려서 개발을 할 수 있었다. 하지만 그것도 구조가 조금만 바뀌면 코드 여기저기가 바뀌어야 하는 형태였다. 지금 생각해보면 파이썬과 같이 유연한 언어를 사용했더라면 금방 작성할 수 있었던 것을 너무 무식하게 한건 아닌가?? 하는 생각이 든다.

메타프로그래밍에서 강조하는 내용은 옵션으로 처리될 수 있는 부분은 대부분 프로그램 외부로 끄집어 내라는 것을 말한다. 쉽게 말하면 하드 코딩을 줄이자는 의미다. 하드 코딩을 이제는 많이 하지 않는다고 생각하고 있었지만 이 부분을 읽고 난 후의 느낌은 아직도 분리해 낼 것들이 너무도 많다는 것이다. 단지 시간이 없다는 이유로, 힘들다는 이유로 코드 속에 포함된 내용이 너무도 많았다.

이 책을 읽고 나서 내게 생긴 변화가 있다면, emacs를 컴퓨터에 설치했고, 책장 구석에 놓여져 있던 파이썬 책을 다시 꺼냈다는 점이다. 그동안 잊고 지낸 gnu 도구들에 대해서 다시 생각해 볼 수 있는 계기가 된 것 같다. 그동안 익숙하지 않다는 이유로 어렵다는 이유로 많은 실용적인 방법을 외면했던 나에게 일침을 놓는 책이었던 것 같다~

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중