본문 바로가기

책을 보다

[리뷰] 불확실성에 대응하는 프로그래머의 자세 <고전 컴퓨터 알고리즘 인 파이썬>

불확실성에 대응하는 프로그래머의 자세

문제를 보여주고, 적절한 알고리즘을 소개하며, 어떻게 구현하는지 보여주는 방식에서 벗어나 있습니다.
특정 알고리즘에 집중하고 있습니다. 이런 게 있다는 식으로 여러 알고리즘을 나열하지 않습니다.
키워드는 재귀, 검색, 제네릭, 탐색, A*


1장에서 재귀를 이용해 알고리즘이 고정된 틀이 아니라 계속 발전한다는 걸 보여줍니다.
2장 제목은 검색 문제입니다만, 정작 익히 알려진 검색 알고리즘은 언급도 하지 않습니다.
제네릭과 휴리스틱이 등장합니다. 제네릭은 다양한 프로그래밍 언어에서 지원도 하고 많이 대중화되었다 쳐도, 휴리스틱이라니.
어떻게 보면 컴퓨터와 어울리지 않는 단어이기도 하고 알고리즘과는 더더욱 상관이 없어 보이는 용어가 등장합니다. 컴퓨터가 어림짐작이라… 
그렇지만 부울(boolean)의 세계에 휴리스틱을 적용하여 문제에 대응할 수 있음을 보여줍니다.
3장은 제약 충족이라는, 문제를 바라보는 시각을 보여줍니다.


여기서 잠깐 멈추고 왜? 라는 질문을 던져볼 만합니다.
표지나 목차를 보면, 문제 영역을 제시하고 영역에서 사용할 수 있는 알고리즘을 안내한 뒤, 실제 구현을 어떻게 하는지 보여주는 것처럼 보입니다. 그렇지만 3장까지 보고 나면 뭔가 다른 알고리즘 책들과 다르다는 게 어렴풋이 느껴집니다.
그리고 4장부터 만나는 문제들.
정확한 답이 없는 문제, 답을 구할 수 있는 알고리즘은 있어도 결과를 얻기까지 너무 오래 걸리기 때문에 결과를 얻더라도 의미가 없는 문제, 결과를 예측할 수 없는 문제들을 얘기합니다.

4장 최단 거리를 찾아야 하는 그래프.
5장 뭐가 나올지 미리 알 수 없는 유전 알고리즘.
6장 누가 하느냐에 따라 결과를 달리하는 군집.
7장 대상을 인식하는 신경망.
8장 상대에 따라 다르게 대응하는 적대적 탐색.
9장 유명하지만 꼭 집어 분류하기 애매한 문제

다양한 분야와 컴퓨터 과학이 만나면서 알고리즘이 단순 계산 역할을 벗어나고 있음을 보여줍니다.


앞으로 프로그래머가 다루어야 할 세상이 바뀌고 있는 걸까요.

논리의 틀을 짜서 사람의 생각을 구현하도록 프로그램하는 단계에서,
대상을 인식하거나 가능성을 발현하고, 적절하게 대응하는 형태로 프로그램을 만들어 가는 단계로.


프로그램에 한계를 긋지 말라고 얘기하는 듯합니다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

반응형