-
-
한 권으로 배우는 파이썬 기초 & 알고리즘 사고법
아리스티데스 보우라스 외 지음, 길준민 외 옮김 / 제이펍 / 2018년 7월
평점 :
절판
프로그래밍을 배우고 싶어도 어려울 거 같다는 생각에 선뜻 시작하지 못하는 사람들에게 매우 좋은 선택이 될 책
책을 읽으면서 컴퓨터공학과에 입학했던 20년 전이 생각났다. 당시 많은 컴퓨터 전공자들이 게임이 좋아서 입학했다가, 쏟아지는 복잡한 이야기에 압도당해 내가 과연 옳은 선택을 한 걸까, 내가 하고 싶던 건 이게 아닌데… 이런 고민을 했다(요즘 신입생들도 그럴지는 몰라서 “당시”). 기본적으로 일상 생활을 하면서 할 필요가 없던 방식으로 생각을 해야 하기 때문에 그런 낯설음이 굉장히 큰 장벽으로 다가와서 그러는데, 불친절한 교과서와 교수님들은 그런 어려움을 보통 증폭시키기만 하므로 초반에는 거의 도움이 되지 않는다. 그 때 이런 책이 있었더라면 장벽을 넘어서는데 큰 도움이 되었을 거 같다.
1/2장은 컴퓨터 개론에서 배웠던 극히 일부 내용을 다시 압축한 듯한 느낌이다. 아주 기초적인 컴퓨터 관련 지식과 파이썬 동작 원리에 대한 이야기이다. 다만 한 가지 지적하고 싶은 부분은 파이썬이
…중규모 정도의 애플리케이션이나 동적 웹페이지를 개발하기에 적합하다
는 부분인데, 보통은 그렇게 생각하지만 인스타그램같은 대규모 웹사이트/앱에서도 파이썬을 사용(https://instagram-engineering.com/what-powers-instagram-hundreds-of-instances-dozens-of-technologies-adf2e22da2ad)하기 때문에 사실 규모는 파이썬 사용 유무와는 무관하다고 봐야 한다.
3장에서는 실습을 위한 이클립스 설치를 설명하는데, 이 부분은 조금 아쉽다. 이미 python에서 가장 많이 사용하는 IDE는 pycharm으로 넘어온지 오래인데, 아마 저자들이 이클립스를 많이 사용해서 선택한 게 아닌가 추측해볼 뿐이다.
4장 알고리즘 기본, 5장 변수와 상수 등 부터 본격적인 프로그래밍 기초를 설명한다. 이미 경험있는 프로그래머가 읽기에는 지루할 수도 있는 부분이지만, 앞서 말했듯 20여년 전 처음 프로그래밍을 배울 때 생각했던 당혹감을 생각해보면 이렇게 하나하나 설명이 있어야 초보자들이 그나마 이해하기가 쉽다는 걸 이해할 수 있다. 특히 8장 추적표는 많이 와 닿았는데, 요즘에도 알고리즘 문제를 손으로 풀 때 비슷하게 디버깅을 하고 있기 때문이다. 예제 8.1–2같은 부분은 특히 프로그래밍 초보자에게는 귀중한 설명이다. a, b = b, a와 같은 swap이 프로그래머들에게는 매우 당연한 이야기이고, tmp = a; a = b; b = tmp; 와 같은 temporary 변수 사용 또한 공기와도 같은 부분이지만, 초보자들에게는 안 그래도 어지러운 머리를 또 한 번 복잡하게 할 수도 있는 부분인데, 이걸 이해하기 쉽게 그림과 함께 설명하고 있다. 9장에서는 이클립스로 프로젝트를 만들고 디버깅하는 방법을 보여주면서 본격적으로 프로그램을 작성할 준비를 한다.
그 뒤로 제어와 관련된 구문을 계속 설명하는데, if else나 loop에 대한 설명이 part V, 525 page까지 이어진다. 중간중간 추적표와 예제마다 곁들여진 그림으로 설명하기 때문에 혼자서 읽어도 대부분 쉽게 이해할 수 있을 거 같다.
알고리즘 서적이라면 정렬/검색이 기본인데, 662 page가 되어서야 처음으로 버블 정렬을 통해 정렬 알고리즘을 설명하고 part VII이 되어서야 function/procedure 및 39.8 재귀(774 page)에 대해 설명한다.
다시 한 번 말하면, 이 책은 초보자 중에서도 입문자를 위한 서적이다. 책을 읽어보고 조금이라도 지루한 부분이 있다면 이 책을 추천하지 않는다. 하지만, 프로그래밍을 시작해보려다가 포기한 경험이 있는 사람이라면 강력히 추천한다. 왠만한 선생님보다 좋을 것이다.
끝으로 한 가지 아쉬운 점. 14.4 IS_NUMERIC을 통해 정규식으로 문자열이 숫자인지 검사하는 방법을 보여주고 있는데, 아무 설명없이 정규식을 사용하는 건 좀 어려울 거 같단 생각을 했다. 이 책에서 아마 유일하게 자세한 설명없이 사용하는 고급(?) 기법일 거 같다. 뒤에서도 계속 여러가지 예제에 사용하기 때문에 그냥 간단히 넘어간 거 같다.
https://github.com/Jpub/Python_Algorithms 를 통해 책에 나온 코드를 다 제공하지만, 입문자 수준에서 github을 사용하는 건 약간 난이도가 있을 거라고 생각하는데, 이에 대한 설명이 없다는 점도 사람에 따라서는 아쉬울 수 있을 거 같다.