Koder / 박성훈

프로그래밍 관련 책의 무자비한 두께를 접하다가 오랜만에 본 정보과학 관련 얇은책(280페이지 언저리)이기도 하고

제목이 누워서 읽는 알고리즘 이다 보니 좀 편하게 읽을 수 있을 것이라 생각해서 읽어보았다.

서문에 글쓴이의 다른 칼럼을 잠시 인용해오는 부분이 있는데,

그 부분에 있는 문장이 굉장히 인상적이다.

요즘처럼 기술 변화의 속도가 빠른 시대에는 특정 기술, 플랫폼, 언어, API에 종속되는 코딩 기술의 가치가 전보다 크지 않다. 오히려 낡은 기술을 버리고 새로운 기술을 재빨리 익히는 능력이 중요하다.

이 문장의 내용을 평소에도 쭈욱 생각해보고 있으나,

솔직히 말하자면 낡은 기술에서 새로운 기술으로의 재빠른 전환은 그리 쉬운 일이 아닌 것 같다.

적어도 내신관리까지 하면서 프로그래밍을 하고있는 나의 입장에서는 그렇다.

... 변명이라 할수는 있지만.

 

1장. 재즈로 여는 아침의 향기

책에 굉장히 자신의 경험을 잘 녹여내고 있다는 감상을 여러번 받았다.

각각의 에피소드나 기술 관련 이야기를 할 때, 글쓴이의 이야기가 반드시 하나씩 들어가는데,

그 예시로 1장 에 있는 이메일을 들 수 있을 것 같다.

개인적으로 굉장히 이런 류의 유머를 좋아하는데 (유머감각이 이상한편)

이메일 이야기에서 자연스럽게 재귀와 관련된 주제의 부드러운 전환은 "누워서 읽는 알고리즘" 이라는 이름에 충실하듯

자연스럽고 편하게 읽을 수 있게 해준다.

또한 이 책은 문제 해결의 본질이 성취감이라고 설명해주고 있는데, 굉장히 공감되는 부분이었다.

내가 처음에 프로그래밍을 배우고싶다 생각했던 이유도 문제를 해결했을때 오는 성취감이 좋았기 때문이다.

간혹 어려운 문제가 나를 가로막을 때, 항상 그 뒤에 올 성취감을 과거의 경험과 관련짓고 이겨내고는 하는데,

이러한 일련의 경험을 나만이 경험한 것이 아니라는걸 알아 신기했다.

 

2장. 록과 함께하는 정오의 활기

2장에서는 동적프로그래밍이나 이진탐색이나 정렬 같은 중요한 알고리즘을 설명해주고 있다.

이 파트는 아무래도 이론에 가까워 경험에 관련한 내용은 그렇게 많지 않은것 같다.

글쓴이는 시간복잡도와 공간복잡도의 연관성에 대해서 책에서 자주 서술하고 있는데,

속도가 빠른 알고리즘의 함정에 속지 말라하며 늘 공간도 고려하라 하고 있다.

그런데 사실 요즘의 알고리즘 문제들은 공간적 문제보다는 시간적 문제를 훨씬 중요시하는 느낌이라

나에게는 잘 와닿지 않았다.

그래서 우리는 컴퓨터 프로그래밍을 하나의 예술로 생각한다. 그것은 그 안에 세상에 대한 지식이 축적되어 있기 때문이고, 기술과 독창성을 요구하기 때문이고, 그리고 아름다움의 대상을 창조하기 때문이다. 어렴풋하게나마 자신을 예술가라 의식하는 프로그래머는 스스로 하는 일을 진정으로 즐길 것이며, 또한 남보다 더 훌륭한 작품을 내놓을 것이다.

이 문장을 읽고 프로그래밍에 관한 새로운 시각을 얻을 수 있었다.

프로그래밍을 예술의 한 분야로 보는 시도는 굉장히 나에게 새롭게 다가왔고,

무엇을 단순히 코딩한다기보다는 의미있는 무언가를 만들어가는 사람이 되고 싶다는 새로운 목표를 세울 수 있게 해주었다.

 

3장. 하드코어로 달아오르는 뜨거운 오후

일곱 번째. 세줄짜리 펄 프로그램 에서는 옮겨적기도 참 애매한

이상한 소스코드가 나온다.

그리고 국제 엉망진창 C 프로그램 경연 대회가 있다는 것도 이 책을 통해 처음 알 수 있었다.

위에 있는 소스나 대회를 열고, 또 참가하는 사람들이 진정으로 프로그래밍을 즐기는 사람이 아닐까 하고 생각해본다.

세줄짜리 프로그램의 해설이 세장이 넘어간다는건

이 소스코드를 만든 사람들이 얼마나 고민하고 또 노력했는지를 알 수 있게 해준다.

이 사람들을 보면서 위의 예술가를 떠올린 것은 우연일까?

4장. 클래식으로 마무리하는 차분한 저녁

(그건 할 수 없는 일입니다)
이 책을 읽는 독자 중에서 이런 말을 일 년에 3번 이상 한 사람이 있다면 그 '할 수 없었던 일' 중에서 적어도 반은 포기의 유혹 앞에서 의지를 꺾은 '굴복'이었을것이다.

포기하지 않고 꾸준히 하는 행동이 매우 중요하고 좋은 결과를 낸 다는 것은 알고 있지만,

현실적으로는 살아가면서 매번 포기없이 앞으로 나아가기만 하는 것은 지극히 어렵다.

하지만 그럼에도 불구하고 포기하지 않는 자세를 가져야 하는 것은 아닐까?

나는 항상 목표를 타이트하게 세워두는편이 나 자신의 집중력을 올리는데 도움이 되는 방법이라

이성적으로 생각해보면 절대 달성하지 못할 목표를 세우게 되는 경향이 있다.

적당한 목표와 꾸준한 노력이 있다면, 이 '절대 달성하지 못할 목표' 가

어느날 '달성되어진 목표' 가 되는 날이 올것이라 생각한다.

학교 도서관에 있던 책이라 개인적으로 밑줄을 치거나 잘 요약해두지 못한 것이 굉장히 슬프다.

이 책은 누워서 읽는 알고리즘 이라는 이름과는 다르게 나에게는

틈틈히 읽는 알고리즘 이라는 이름이 더 낫지 않았을까 감히 생각해본다.

정말 틈틈히 (학교 쉬는시간이라던지, 잠깐 뒹굴거릴때 정도) 읽어서 열심히 집중할만한 환경이 아니었음에도 불구하고

술술 읽히는 잘 쓰여진 책이었다.

프로그래밍 하는 사람이 정말 심심한 때에 읽으면 참 재미있게 읽을 법한.

기술서적이라기보다는 그저 기술에 해박한 사람들의 잡담이라는 느낌이 강하게 드는 책이었다.

성인이 되어서 좀 경제적 여유가 생긴다면 독서를 좀 더 해보고 싶다.

완전 내가 엄청나게 못하는 분야들에 대한 도전 욕구가 불타오르는 새벽 두시의 본인이다.

생기부 기록용 독후감도 한편 쓰기도 했으니 오늘은 여기까지.

반응형