<알고리즘 산책 : 수학에서 제네릭 프로그래밍까지>
이 책을 리뷰하게 된 계기는 프로그래밍을 위한 알고리즘, 그리고 그 근간이 되는 수학에
대하여 그동안 놓았던 정신을 붙잡고 다시 도전해보고 싶어서였다.
책 표지 뒷면에 지은이와 옮긴이의 정보가 씌여있던 밑에 이런말이 적혀있다.
----------------------------------
좋은 프로그래머가 되려면 제네릭 프로그래밍의 원리를 이해해야 한다.
제네릭 프로그래밍의 원리를 이해하려면 추상화를 이해해야 한다.
추상화를 이해하려면 그 바탕을 이루는 수학을 이해해야 한다.
----------------------------------
이 내용을 읽고 나니 두려움이 앞선다.
왜냐하면 나는 수학이 싫진 않았지만 나의 발목을 잡고 있는 어려운 문제였기 때문이다.
책을 훑어보니 역시 놓았던 정신은 쉽게 돌아오지 않나보다.
수학적 기초가 부족하다면 내 생각에는 내용을 이해하는 것 뿐만 아니라
수식을 읽는것조차 쉽지 않을 것 같다.
(그래도 다행히 부록A["표기법"]을 참고하여 이해하는데 도움을 얻을 수 있었다)
자 그래도 이 책을 보면서 내가 느끼는 장점, 단점을 적어보겠다.
내가 느꼈던 부분이라 누군가에는 장점이 될 수 도 있지만 단점이 될 수 도 있다.
<장점>
알고리즘에 대하여 역사적 관점과 함께 설명하는 부분
알고리즘마다 발경 배경 및 해당 인물의 대한 설명을 기록하여 단순히 수식적인 내용만 확인하는 것이 아니라 지루하지 않고 오히려 흥미로웠다. 오래된 알고리즘 책들에도 간단하게는 적혀있었던것 같긴한데 ... 다시봐서 그런지 새롭게 느껴졌다.
결론 페이지와 부록 페이지들의 도움
이 책은 특이하게도 "14장 결론"이라는 챕터를 별도로 두어 저자가 설명했던 내용들을 다시금 2페이지 안에 정리하고 있다. 이 페이지를 보면서 복잡했던 생각들을 정리하는데 도움이 된 것 같다. 그리고 그 이후 나오는 부록 페이지들 역시 이 책을 읽는데 있어서 큰 도움이 되었다.
<단점>
수학적 기초가 부족하다면 어렵게 느껴지는 부분
이건 어쩔 수 없을 것 같다... 나만 그렇게 느꼈을 것 같기도 하다. 알고리즘을 프로그래밍 언어로 표현해놓은 것을 이해하는데는 어렵지 않았지만 수식이나 개념을 이해하는데 어려움을 느꼈다. 그래서 부록에 추가로 정리해줬던 용어나 표기법, 증명법등의 내용이 조금 더 확장되었으면 하는 바람도 있다.
정리해보면
사실상 이런 책은 한번 읽었다고 끝~ 으로 생각하는 책은 아니라고 생각한다.
그리고 알고리즘을 달달 외우려고 보려했던 책도 아니고 문제 해결 과정에서 나타나는 사고에 대하여 좀 더 확장하고 싶었던 욕구가 있어서 보려했던 책이다.
그런면에서만 본다면 이 책은 내 의도를 만족시키는 그런 책이다.
일단 잠시 덮어두지만 조만간 다시 꺼내보면서 찬찬히 음미해볼 생각이다.