프로그래밍(or 코딩)에 대한 관심이 뜨겁다. 초등학생 교과과정에도 프로그래밍이 필수과정으로 채택된다고 하니 말이다.
초등학교 2학년인 아이에게 스크래치를 가르치고 있는데 나 자신도 프로그래밍에 좀더 관심을 가지고자 범용 언어인 c#을 개인적으로 학습하고 있는 상황이다. 이런 상황에서 인터프리터 언어인 파이썬 또한 컴파일 언어인 c# 못지 않게 향후 나의 미래 구상에 중요한 역할을 해 줄 것으로 생각되어 배움을 시작하게 되었다.
나는 교재 선택을 매우 중요하게 여긴다. 파이썬을 배우기 위한 교재로 위 책을 선택하게 된 것은 목차와 내용 구성이 기존의 파이썬 입문 도서와는 사뭇 달랐기 때문이다. 보통은 도서 전체가 파이썬에 대한 문법과 구문에 대한 설명으로 가득 차 있다. 일단 그 방대한 양에 처음부터 좀 질리게 마련이다. 이 책도 기본 문법에 대한 설명이 Part 1을 차지하고 있으며 전체 600여 페이지 중 300페이지를 차지하고 있으니 상당한 양이고 왠만한 입문책의 부피와 비슷하다. 그러나, 다른 책에 없는 부분이 Part 2~5 부분이다. 이 책의 백미는 이 뒷 부분이라고 본다(추후 설명하겠다)
1. Part 1
윈도우, 리눅스, Mac OS 3가지 운영체제에서 모두 파이썬을 설치하는 법을 상세히 다루고 있다. 다양한 OS 환경을 고려하여 Step by Step 상세히 설명하고 있다. 중간에 실수하기 쉬운 부분(Path 추가 등)도 상세히 설명하고 있어 초보자를 위한 배려가 돋보인다. 또, 무료 에디터인 Geany란 프로그램으로 전체 프로그래밍을 진행하도록 하여 IDE가 없어도 프로그래밍을 손쉽게 할 수 있도록 도와주고 있다.
아래의 내용은 초보자를 위해 필요한 내용이 잘 설명되어 있는 부분이다. 사실 프로그래밍을 하다보면 에러/버그 등은 피할 수 없는데, 초보자는 무슨 문제가 생기면 도대체 어떻게 해야하지? 하고 약간 멘붕에 빠지게 되는데, 아래에 보이는 에러메시지 조차 해석을 할 수 없어서 인터넷 커뮤니티에 책에 있는 대로 쳤는데 안 되요라는 질문을 올리게 된다. 책은 친절하게 트레이스백이라는 내용을 설명해 준다. 물론, 다 이해해서 문제를 해결할 수는 없겠지만, 1), 2), 3)으로 구분해서 내용을 설명해 주면 일단 마음의 안정(?)을 찾고 다음에 할 일을 찾게 되니 말이다.
문자열, 숫자(계산), 주석 등 간단한 내용을 다룬 다음, 의외로 바로 리스트를 소개하는 내용이 흥미롭다. 보통 다른 책자는 if/for/while 구문 등 소개로 진행하는데, 데이터를 저장할 수 있는 도구인 "컬렉션" 중 하나인 리스트를 바로 소개한다. 리스트 자체를 다루는 내용도 있지만, 리스트와 for, if(-elif-else)를 연결하여 여러가지 예제를 다루고 있다. 실제적으로 사용 빈도가 가장 높은 컬렉션과 구문을 동시에 연습할 수 있는 방법으로 매우 효과적으로 학습을 진행할 수 있어서 유용했다(5장).
이후 다른 컬렉션인 딕셔너리, 튜플을 다룬 후 다시 while 구문과 입력함수와 컬렉션(리스트, 딕셔너리)에 연계시키는 예제를 다루어 필수적인 컬렉션을 쉽게 다룰 수 있게 반복하는 과정을 거치게된다(6, 7장). 이후 함수/클래스 등을 다루며 객체지향 문법을 입문 수준으로 다루고 이후 파일 입출력(읽기, 쓰기)과 예외(exception)을 다루게 된다(8, 9, 10장). 사실 클래스 부분은 좀 깊이있게 다루지 않았으나, 사실 처음 배우는 사람에게 너무 객체지향 문법을 길게 설명해 봤자 이해 못하고 괴로움만 늘어나게 된다고 본다. 초심자에게 꼭 필요한 부분만 적절히 다루고 넘어가는 것으로 본다.
이상으로 Part 1에서는 파이썬 기본 문법을 다루고 있다. 물론, Part 1 해당되는 내용만으로 훨씬 두꺼운 책들이 많다. 그것도 입문용으로 말이다. 사실 다른 언어를 접해봤거나 사용하던 사람이 아니라 초심자들은 그 두께외 내용의 방대함에 질리게 마련이다. 이 책은 문법 설명부분을 Part 1, 300 페이지 수준으로 간단히(?) 정리하고 있어 부담을 줄이고 있다.
이 책의 백미는 Part 2, 3, 4이며 아래에 간단히 읽은 소감을 설명하겠다.
Part 2. 외계인 침공 프로젝트(게임만들기)
게임만들기 부분은 솔직히 한번 봐서는 전체 흐름을 이해하기 힘들었다. 물론, 프로그램을 작성하는 연습이 안 되어 있고, 체계가 잡히지 않았기 때문으로 생각된다. 일단 한번 읽고 나서 프로그램을 직접 입력하면서 익히기 시작했다. 순서대로 따라하고 입력하면 해당 프로그램이 작동하는 것을 확인할 수 있었다. 문제는 전체적인 프로그램 작성의 체계와 흐름이 없이 저자가 제시하는 설명과 방향대로 이끌려 다녀야 하는 부분이 좀 불편했다. 물론, 책 한권에 모든 것을 다 넣을 수는 없고(즉, 프로그램 작성방법의 개요 같은) 어쩔 수 없는 선택으로 보인다.
처음 게임프로그램 작성시 고려해야 할 부분에서 설명을 개시하여, 조종할 비행기 관련 내용을 거쳐 외계인, 점수 관련 처리까지 게임에 필요한 모든 부분을 다루고 있다. 한번 읽고 한번 프로그램을 작성한 수준으로 평가하기는 어려우나(사실 따라하기도 매우 힘들었다 ㅠㅠ), 여러 번 반복하거나 프로그래밍 관련 다른 책을 좀더 공부하고 다시 본다면 더 깊이 이해할 수 있으리라 본다. 객체지향적 내용을 잘 녹여서 프로그램을 작성하는 방법을 제시했다고 본다.
Part 3. 데이터 시각화 프로젝트
사실 개인적으로 이 부분이 많이 필요했다. 파이썬을 배우려는 목적이 data handling, processing 쪽에 있다보니 더욱 필요했다. 여러 Plot을 사용하고 legend 설정하는 기본적인 내용을 잘 설명하고 있다. 16장부터는 csv(comma separate value)를 다운받아 처리하고 datetime을 이용하여 시계열(time series) data를 처리하는 방법을 잘 설명해 주고 있다. 처리된 내용을 그래프로 표시하는 방법 또한 충분히 잘 설명해 주고 있다. 17장 API 부분에서는 웹을 통해서 특정 정보를 요청하고 수신하는 방법을 간략히 알려주고 있다. Github과 해커뉴스 API를 이용하는 방법을 사례로 설명하고 있다. 실제 자료를 요청하고 받아서 후처리하여 사용할 수 있는 형태로 정리하는 방법까지도 설명해 주고 있다. 이 사례로 API 동작에 대해서 첫 경험을 해볼 수 있었다. 전체적으로 꼭 필요한 내용이 잘 정리되어 있다고 본다. 시작하는 입장에선 이 정도만 알고 나머지는 구글링만 잘 해도 꽤 많은 내용을 처리할 수 있을 거 같다.
Part 4. Web application Project
이 부분은 리눅스에서 실습 환경이 구성되어 있는 것으로 보였다. 윈도우용 예제 자체가 나오지 않았다. 리눅스가 설치된 환경이 없어서 전체적인 내용을 테스트해보지는 않았다. HTML과 파이썬을 적절히 혼합하여 웹애플리케이션을 만들고 히로쿠라는 웹 환경에 올려 서비스를 제공하는 법까지 다루고 있다. 물론 매우 간단한 밖에 없지만 전체적인 서비스 개발/배포의 흐름을 알 수 있어 유용하다.
Part 5. 끝으로
파이썬을 운영체제별로 설치하는 방법, 에디터를 설치하는 방법을 설명하고 있고, 셋째로 "문제를 해결하는 방법"이 설명되어 있다. 마지막이 초보자에게는 더욱 필요한 내용으로 본다. 마지막으로 Git을 이용하는 방법을 간단히 설명하고 있다. 이 또한 초보자가 익혀두면 좋을 내용으로 꼭 필요한 몇 개의 기능만 설명되어 있다. 마지막 Part 5는 초보자에게 많이 도움되는 내용으로 꼭 숙지할 필요 있는 내용만 정리되어 있다.
총평하면, 맨 처음 프로그래밍을 배우는 사람에게 Part 1은 적절한 수준의 난이도와 흐름으로 구성되어 있다고 평가할 수 있다. Part 2, 3, 4는 약간의 프로그래밍 경험이 있는 사람에게 파이썬 응용 방법을 익히기에 적절한 사례로 구성되어 있다고 보여진다. 솔직히, 프로그래밍 경험이 전혀 없는 사람이 게임을 만들고, 웹 어플리케이션 프로젝트를 하는 건 거의 불가능에 가깝다고 본다(Part 3는 그냥 따라하기만 해도 충분히 익힐 수 있다). 이 책은 다른 프로그래밍 경험이 많지 않아 완전 생초보라고 하기는 어려운 수준의 사람에게 가장 적합한 책으로 생각된다. 정말 프로그래밍에 대해서 아무것도 모르는 사람은 Part 3 외에는 따라해도 무슨 말인지 이해하기 어려울 것이다(OOP 기본 컨셉과 웹서비스에 대한 기본 지식이 전무하기 때문에). 나는 과거에 C, Basic을 조금 만져본 경험이 있으나 약 10년의 공백기가 있었고 요즘 C#을 공부 중인 상황이다. 파이썬은 처음으로 제대로 책을 읽어보는 데 내용을 따라하기도 사례를 따라하기도 괜찮았다.
전체적으로 균형감있는 책이고, 이 책을 통해 파이썬을 한번 경험하고 난 후 좀더 깊이 있는 부분을 파면 될 것으로 보인다. 좋은 책을 번역한 한빛미디어에 감사 인사를 드린다.