‘제러미 쿠비카(Jeremy Kubica)’의 ‘알고리즘 탐정 프랭크: 신비한 마법 가면과 문서 도난 사건(The CS Detective: An Algorithmic Tale of Crime, Conspiracy, and Computation)’은 흥미로운 이야기로 대표적인 자료구조와 알고리즘의 기본을 알려주는 책이다.

표지

지식을 교과서처럼 순서대로 나열하고 설명하기만 하는 게 아니라 다른 방식으로 풀어내보려고 하는 시도는 꽤 많다.

그 중 가장 쉬운 방법 중 하나가 이야기를 덧붙이는 것으로, 우리가 저학년용 교과서에서 많이 보는 ‘~를 몇개 먹었다면” 이라던가 ‘~ 샀다면, 얼마나 남았을까?’하는 것들이 대표적이다. 하지만 이런 것들은 대부분 문장 이해력을 추가로 요구할 뿐, 지식 자체를 알기쉽게 풀어내거나 재미있게 볼 수 있게 하는 것은 아니라서 사실상 지식 지식을 습득하는데 도움을 준다거나 하지는 않는다. 이런 한계는 전하려는 내용은 그대로 둔 체 그 위에 이야기만 덧붙인 형태라서 생기는 것이다.

반면에 이 책은 처음부터 소설을 기본으로 했다. 그러면서 소설의 세부에 지식 요소를 추가하는 식으로 이야기속에서 지식을 접하고 그 내용을 알 수 있도록 했다.

이런 방식의 장점은 좀 더 이야기로서의 완성도가 높다는 거다. 즉, 흥미를 끌고 재미있게 읽을 수 있다.

단점은 자칫 잘못하면 지식을 전달하는 부분이 어색하게 튀거나 전개나 흐름이 자연스럽지 못해서 전체적으로 엉성한 이야기가 되기 쉽다는 거다.

그런 점에서 다행히 이 책은 꽤 완성도가 높다. 거기엔 애초에 알고리즘을 마법처럼 사용하는 세계를 설정하고 그러한 능력(또는 기술)을 적극적으로 배우고 활용하는 전직 경찰 탐정을 주인공으로 삼은 것이 주요하다. 덕분에 현실세계에서 논리 세계의 것인 알고리즘이 현실 세계에 나타나는 것이나 그걸 활용해 사건을 해결하려고 하는 것이 그리 어색하지 않다.

그만큼 이야기와 알고리즘을 잘 섞어냈기 때문이다. 물론 보다보면 ‘굳이?’ 싶은 부분도 있기는 하다만 그건 문제를 초를 위한 책에 실을 정도로 간소화 했기 때문이기도 해서 그렇게 부정적으로 보이지는 않았다.

이 책에서의 이야기는 단지 흥미와 재미를 위한 것만이 아니라, 각 알고리즘의 실 사용 예를 보이는 것이기도 하다. 기술서적에서 알고리즘만을 봤을 때는 이걸 과연 어디에 써먹을 수 있을까 하고 막막할 수도 있는데, 이 책은 먼저 현실문제가 나오고 그걸 해결하는 방법의 하나로 알고리즘을 제시하기 때문에 그런 성격의 문제에는 해당 알고리즘을 사용하면 적당하다는 걸 자연스레 알 수 있다. 이런 점이 이 책의 또 다른 장점이다.

이야기도 괜찮았다. 컴퓨터 과학을 접한 경험이 있다면 꽤 웃으며 볼만한 언어유희 소위 공대 유머가 있는데 그게 꽤나 적절해서 미소를 짓게 한다. 하지만, 그게 그렇게 긍정적이지만은 않은 것은 아는 사람들만이 알 수 있는 그들만의 유희에 가까운 것이었기 때문이다. 이 책은 초보를 대상으로 한 것이지 않던가. 이름을 이용한 것들도 한국어판에선 원어를 병기하지 않은게 많아 좀 애매하다.

책 속 비유나 유머는 물론 몰라도 읽는데 전혀 지장은 없다. 하지만, 모르면 그만큼 재미가 떨어지는 것도 사실이다. 그래서인지 책 뒤에 일부 해설을 달기도 했다만, 역시 좀 부족한 느낌이다. 주석이라도 달아어야 했으려나. (음;)