어떻게 구현하는 것이 가장 최상의 동작을 수행할 수 있는가?
좋은 프로그램을 만드는 핵심 원리 25가지
프로그래밍에 꼭 필요한 전산수학, 데이터 구조, 알고리즘 등을 모두 다루는데, 특히 각 알고리즘이 동작하는 예를 그림을 통해 보여주므로 초보자도 쉽게 이해할 수 있다. 그리고 각 이론을 프로그램으로 직접 구현해볼 뿐만 아니라 실제 시스템에서 어떻게 적용되는지 그 예까지 제시한다.
- 저자 : 김종훈 , 김종진 , 정원희 , 정은영
- 출간 : 2003-01-04
대학교 2학년 때 전산수학(이산수학)을 배우던 때가 생각납니다. 중.고등학교 시절 머리가 나빴던지 수학시간만 되면 긴장이 되곤 했었습니다. 무슨 이론이니 하는 것들을 외우는 건 나름대로 자신이 있었는데, 그 이론을 문제에 적용하는 능력이 떨어졌었죠. 하지만, 전산수학은 참 재미가 있었습니다. 당시 같은 학부의 다른 전공에서 자료구조 수업을 듣는 친구가 있어 그 친구를 도와 자료구조를 같이 공부하게 되었는데, 전산수학 시간에 배운 것들을 자료구조에서도 활용하였습니다. 그래서 전산수학은 참 재미있었던 과목으로 기억됩니다. 학교를 휴학하고 병역특례로 취직을 해서 일을 하고 있는데 역시 이론과 실제는 다르다는 것을 느꼈습니다. 역시나 활용도가 떨어지더군요. (머 실제 거창한 작업을 하는 것은 아닙니다만… ^^; )
『좋은 프로그램을 만드는 핵심 원리 25가지』는 이런 전산수학(이산수학), 자료구조, 알고리즘에 관한 내용들을 다루고 있습니다.
각각의 장을 실제 사용할 수 있는 부분과 연관하여 설명하고 있기 때문에 내용이 쉽게 이해가 되는 것 같습니다. 특히 “1장. 집합”에서의 퍼지 세탁기, “2장. 관계”에서의 관계형 데이터베이스 관리 시스템(RDBMS), “24장. 인공지능 탐색”에서의 컴퓨터와 체스 챔피언과의 체스 대결 소개는 아주 흥미를 유발했던 부분이었습니다.
물론 다소 지루했던 부분도 있었습니다만, C를 이용하여 실제 코드를 보여줌으로써 이런 경우에는 이렇게 이용할 수 있다는 예를 들어 설명했기 때문에 이해하기가 쉽습니다. 역시 따분한 이론만으로 채워진 책보다 질리지 않아 좋았습니다. (우리나라에서 이론서 보다는 활용서가 많이 출판되는 이유가 바로 이런 것 때문일지도 모르겠네요…) 그리고 각 장의 첫 페이지에 수학이나 컴퓨터 등 각 장의 내용과 관계 깊은 유명인을 소개하며 상식을 넓힐 수 있게 해준 부분도 아주 재미있었습니다. 처음 그 부분을 보고 재미가 있어서 그 인물 소개만 다 읽어 버렸습니다. ㅡ.ㅡ;;;
물론 이 책이 좋은 점만 있는 것은 아닙니다. 이 책은 4명의 저자가 공동으로 집필한 책이어서 각 장 마다 구조가 조금 달라 약간의 혼란을 야기하기도 합니다. 그리고 전산수학, 자료구조, 알고리즘… 이 3가지 부분 모두 각각의 부분별로 따로 책을 한 권 이상 만들 수 있는 내용들입니다(실제 학부에서 하는 수업에도 각각의 교재들이 참 두껍다). 이 3가지 부분을 한 권의 책에서 다루기 위해 많은 부분을 자세하게 소개하지 못하였을 것입니다만(그 유명한 Donald E. Knuth 교수의 『The Art of Computer Programming』은 정렬과 탐색만으로 책을 한 권(Vol. 3) 만들 정도이다.) 어느 정도의 흥미 유발에는 아주 효과적일 듯 합니다.
실제로 전산에서는 수학적인 내용이 많이 필요하지만(벌써 아주 아주 많이 사용되고 있지만) 저는 많은 부분을 간과하고 대충대충 문제를 해결해 버리는 것 같습니다. 하지만 이 책을 읽게 되어 새로운 생각을 가지게 되었고, 앞으로 잘 활용하기 위해 노력해야 겠다는 생각을 가지게 되었습니다.
어떻게 구현하는 것이 가장 최상의 동작을 수행할 수 있는가? 정답은 없을지도 모르겠네요. ^^;