티스토리 뷰

 (해당 포스트에서 언급되는 "파이썬 자료구조와 알고리즘" 책은 한빛미디어로부터 제공받았고, 이에 대한 서평을 쓴 것 임을 알려드립니다.)

 시중 서점에서도 컴퓨터 관련 도서 섹션을 보면 파이썬 관련 서적들이 많이 있다. 몇년전엔 자바나 C 관련 서적이 차지하는 비중이 대부분을 차지했었던거 같은데, 인공지능같은 분야가 인기를 끌면서 쉽게 배울 수 있는 파이썬에 대해서 다룬 책들이 많이 나온 것 같다. 

 물론 서점에서도 관련 책을 많이 볼 수도 있지만, 인터넷에서도 무료로 공개된 파이썬 관련 강의나 책들도 많이 등장하고 있다. Coursera나 edX에서도 유명한 대학교에서 제공하는 입문 강좌들도 보면 파이썬을 활용해서 컴퓨터의 구조나 동작원리, 알고리즘 등을 설명하는 내용들이 많이 담겨져 있다. 사실 오늘 소개할 책도 온라인 상에서는 "Introduction to Python & Algorithms" 라는 이름으로 무료로 공개되어 있던 책이었고, 이번 기회에 한글로 번역되어 출판된 책이다.

그림 1. 파이썬 자료구조와 알고리즘

 책을 실제로 본 사람은 알겠지만, 여타 파이썬 관련 서적에 비하면 정말 책이 작다. 일반적인 전공책 수준이 아니라 딱 작은 가방에 들어갈 정도로 작아서, 휴대하면서 보기 좋다. 나같은 경우도 출퇴근시간에 잠깐잠깐 꺼내서 봤었는데, 다른 기초적인 내용보다도 내가 실질적으로 알고 싶었던 자료구조와 알고리즘에 딱 초점을 맞춘 책이어서 내용을 익히는데 유용했었다.

 이 책에서 기본적으로 담고 있는 내용은 다음과 같다.

- 데이터 타입

 파이썬도 여타 언어와 마찬가지로 어떤 데이터를 다루기 위한 배열이나 컬렉션과 같은 기본 데이터 구조들이 구현되어 있다. 어느 언어처럼 특정 데이터 구조를 사용하기 위해서 메모리 할당같은 복잡한 과정이 필요한게 아니라, 어떤게 사용할 것인가에 대한 고민만 하면 되는데, 이에 대한 가이드를 제시하고 있다.

- 객체지향

 물론 많은 내용을 담고 있는 것은 아니지만, 효율적인 객체지향 프로그래밍을 구현하기 위한 클래스나 모듈 설계에 대한 내용이 담겨져 있다. 기본적인 객체지향 관련 지식을 갖고 있는 사람이라면 간단하게 해당 내용을 보면서 remind를 할 수 있는 수준이다.

- debugging, file handling, unit test 관련 내용

 이 책의 제목이 딱 "파이썬 자료구조와 알고리즘"이라고 지어졌지만, 원재에서 다룬 내용과 같이 기본 Python 사용하는데 있어 필요한 지식들이 담겨져 있고, 여기에 포함된 내용이 디버깅이나 파일 핸들링, 또 완성된 프로그램에 대한 검증은 어떻게 하는지에 대해서 소개되어 있다. 길게 설명된 건 아니지만, 역시 객체지향 파트와 마찬가지로 예시 코드를 보면서 이해할 수준으로 내용이 소개되어 있다.

- 추상 데이터 타입

 물론 앞에서 기본 데이터 타입은 구현되어 있다고 했었지만, 보통 대학 자료구조시간에서 배우는 Stack이나 Queue, Linked List 같은 추상 데이터 타입은 구현이 필요하다. 이 부분을 객체지향 방식을 적용해서 내용을 풀어나갔다. 물론 앞의 내용과 마찬가지로 자세한 설명이 곁들여있지는 않지만, 앞부분의 내용을 충분히 이해한 사람이라면, 금방 따라갈만큼 쉽게 설명되어 있다.

- Dynamic Programming과 정렬/탐색 방법

 그래서 최종적으로 앞에서 다룬 주제들을 활용해서 DP나 정렬/탐색을 실제로 구현한 부분이 후반부에 설명된다. 그런데 앞부분에서 언급된 Python 기초 내용이나 객체지향에 설명된 분량에 비하면 생각보다 분량도 얼마 없고, 짧다. 어떻게 보면 딱 동작원리가 도식화된 부분과 이에 대한 구현만 설명되어 있는거 빼고는 약간 내용이 빈약하다고 생각할 수도 있을것이다. 오히려 파이썬의 고급 알고리즘을 기대한 독자한테는 여기 담고 있는 내용이 조금 실망이 있을 수도 있겠다는 생각이 들었다.

 전반적으로 책의 분량이나 담고 있는 내용이 어떤 주제에 대해서 심도있게 다룬 것은 아니기 때문에 읽은 사람별로 호불호가 조금 나눠질 수 있을지도 모른다. 개인적인 생각으로는 약간 책의 제목이 제목 그대로 자료구조와 알고리즘을 모두 담고 있다고 보기는 조금 어렵지 않나는 생각을 조금 해본다. 물론 파이썬 기본 문법을 숙지한 상태에서 해당 부분만 코드로 빠르게 훑으면서 보려는 사람에게는 이 책이 딱 적당할거 같다. 소위 말하는 "핸드북" 정도로 주제에 대해서만 딱 언급되어 있기 때문에 현업에서도 자료구조를 적용해보려는 사람에게는 빠르게 내용에 접근할 수 있는 편의성을 제공해준다. 

 그래서 이 책이 좋다 나쁘다에 대한 명확한 평을 하기가 어렵다. 다만 확실한 것은 이 책이 짧은 분량 내에서도 기본적으로 구현해볼 수 있는 자료구조나 알고리즘에 대한 설명이 이뤄지고 있어, 빠르게 응용해보려는 파이썬 관련 개발자에게는 다른 책들보다 손쉽게 접할 수 있는 요소가 있지 않나 생각한다. 

(참고로 최근에 알고리즘 관련 시리즈로 "다이내믹 프로그래밍 완전 정복" 이라는 책이 추가로 출판되었고, 이 책역시 파이썬으로 구현된 예제를 제공한다. DP 관련해서 조금더 관심있게 볼 사람은 해당 책도 찾아보면 좋을거 같다.)

Python 관련 서적
Head First Python
폴 배리 저/강권학 역
파이썬 자료구조와 알고리즘
미아 스타인 저/최길우 역
다이내믹 프로그래밍 완전 정복
미나크시,카말 라와트 공저/박상은 역
예스24 | 애드온2

댓글