티스토리 뷰

 

누워서 읽는 알고리즘
임백준

<누워서 읽는 알고리즘>은 어려운 알고리즘을 깊이 있게 설명하는 책이 아니다. 알고리즘 교과서에서 흔히 볼 수 있는 알고리즘들을 소재로 프로그래밍이 얼마나 재미있고 가치있는 일인지 깨닫게 해 주는 프로그래밍 에세이다. 책 곳곳에서 작가의 프로그래밍에 대한 애정이 느껴진다. 그 애정이 읽고 있는 사람에게도 전달되어 좋은 동기 부여가 된다. 다 읽고 나니 한 권으로 끝나는게 아쉽다. 2권, 3권도 나왔으면 좋겠다.

 

이 책에서 소개한 알고리즘

LIFO 알고리즘
RSA 알고리즘
검색 알고리즘
깊이 우선 탐색 알고리즘
둠스데이 알고리즘
메르센느 소수 찾기
사운덱스 검색 알고리즘
암호화 알고리즘
유클리드 알고리즘
재귀 알고리즘
정렬 알고리즘
제프 소머즈 알고리즘
퇴각 검색 알고리즘
팰린드롬 알고리즘
피보나치 알고리즘
해시 알고리즘

 

본문 중에서...

"소프트웨어를 개발하는 사람에게 알고리즘은 취업이나 승진을 위해서 억지로 공부하는 대상이 아니라 퍼즐이나 수수께끼처럼 자체로 재미있고 신나는 놀이가 되어야 한다."

"그래서 우리는 컴퓨터 프로그래밍을 하나의 예술로 생각한다. 그것은 그 안에 세상에 대한 지식이 축적되어 있기 때문이고, 기술( skill)과 독창성(ingenuity)을 요구하기 때문이고 그리고 아름다움의 대상(objects of beauty)을 창조하기 때문이다. 어렴풋하게나마 자신을 예술가(artist)라고 의식하는 프로그래머는 스스로하는 일을 진정으로 즐길 것이며, 또한 남보다 더 훌륭한 작품을 내놓을 것이다." - 도널스 커누스, <Computer Programming as an Art> 강연에서

"컴퓨터 프로그램을 작성하는 일은 재미있다. 그리고 잘 작성된 프로그램을 읽는 것도 재미있다. 세상에서 가장 즐거운 일 중 하나는 여러분이 작성한 컴퓨터 프로그램을 다른 사람들 혹은 여러분 자신이 읽고 기쁨을 얻는 것이다.
컴퓨터 프로그램은 또한 유용한 작업을 수행할 수도 있다. 세상에서 가장 큰 성취감을 맛보는 순간은 여러분이 창조한 무엇이 사회의 부와 진보에 기여한다는 사실을 깨닫는 순간이다. 어떤 사람들은 컴퓨터 프로그램을 작성함으로써 돈을 벌기도 한다! 따라서 프로그래밍은 세 가지 측면에서 결실을 맺는 행위다. 미학적으로, 인류학적으로 그리고 경제적인 면이 바로 그러한 결실에 해당한다." - 도널스 커누스, <Literate Programming> 서문에서

"조용한 밤에 의자에 편히 앉아서 프로그램을 읽으면서 시간을 보냈던 기억 중에서 가장 최근은 언제인가?" - 존 밴틀리, <Programming Perls>, ACM 저널

참고

GIMPS(The Greatest Internet Mersenne Prime Search), http://www.mersenne.org/
애덤 백의 RSA 알고리즘. http://www.cypherspace.org/adam/rsa/story2.html
Tail Recursion, http://yumere.tistory.com/69

 

- James Song

댓글