사람들은 말합니다. 프로그램 언어는 종류가 많고, 각각의 언어는 모두 나름의 장/단점을 갖고 있다고 말이죠.
이 말에 동의하지 않는 사람은 없습니다.
하지만, 누군가가, "처음 프로그램을 배울때, 어떤 언어를 선택하는 것이 좋을까요?" 라고 물을 때, 방금 동의했던 것 처럼, "여러 언어들이 있으니까, 그 언어들을 다 배우세요" 라고 말한다면, 초심자의 열정을 바로 꺼버리는 열정 소방수의 역할을 하게 될 뿐일 것입니다.
수 많은 언어들이 있고, 각각의 언어들이 나름의 장/단점을 갖고 있다고 해도, 그 많은 언어를 모두 배우고 익히기에는 우리의 인생은 너무 짧습니다.
예술은 길고, 인생은 짧지만, 프로그램의 언어도 익숙해지기 위해서는 길기만 할 뿐이죠.
20년 전까지만 했어도, 일단 프로그램의 시작은 C 언어였고, 그 다음에는 JAVA였고, 요즘은 Python이 시대의 흐름을 주도하고 있기 때문에, 아무래도, 요즘 첫 프로그램 언어로는 Python을 선택하는 것이 가장 현명하지 않을까 싶긴 합니다.
이렇게 어떤 언어를 고를 것인지를 결정하고 나면, 그 다음에는 어떻게 배워야 하는지를 계획해야 합니다.
그 전에 잠깐 영어를 생각해보죠.
30년 전에 영어를 배울 때는, 1) 알파벳 외우기, 2) 문법 외우기, 3) 단어 외우기, 4) 독해하기.. 여기까지가 일반 코스였습니다. 듣기나 회화 같은 것은 그다지 중요하지 않게 여겨졌었죠.
하지만, 시간이 흘러, 토익이 대중화 되면서, 듣기의 중요성이 요구되었고, 그 다음에 회화의 중요성이 대두되었습니다.
그러면서, 사람들은 "문법이냐 회화냐"를 두고 어느것을 해야 하는지에 대한 논쟁을 했지만, 정답은, 둘다 해야 한다였죠.
프로그램언어도 마찬가지입니다.
일단, 언어의 문법을 익혀야 하고, 또, 그 문법을 활용해 유효한 프로그램을 만들 수 있어야, 어엿한 프로그래머가 될 수 있습니다.
초기 프로그램 수업에는 무조건 문법을 가르치는 것이 전부였습니다. 마치, 옛날 성문영어가 중고등학교 영어 시장을 장악하고 있었던 것 처럼 말이죠.
그러다보니, 재미없는 문법 공부만하다가, "아 프로그램 재미없어" 하며 포기하는 사람들이 많아지고, 또 문법을 아무리 익혀도, 막상 프로그램을 만들려고 하면, 어떻게 만들어야 하는지를 몰라야 하는 사람들이 생기기도 했습니다. 심지어 그래서, "프로그램은 대학교 전산과에서 배우는 것이 아니라, 코딩 학원에서 배우는 것이 더 쓸모있다" 같은 얘기들도 나왔었죠.
그리고, 이때 쯤 "헤드 퍼스트" 시리즈가 나오기 시작하면서 히트를 치기 시작합니다. "헤드 퍼스트"시리즈는 마치 영어 문법 전에 회화를 가르치는 것처럼, 언어의 문법을 세세하게 요구하지 않고, 일단 원하는 것을 구현하는 방법을 알려주는 책이었고, 당시 지루한 언어 문법에 프로그램을 포기하던 사람들에게 단비와도 같은 책이었습니다.
하지만, "헤드 퍼스트"는 일단 책의 내용을 따라서, 뭘 하나 만들어보고 나면, 그 다음에 어떻게 해야 할지를 모르게 된다는 단점이 존재했습니다. 그냥 하라는 대로 하면 돌아가는 것을 경험할 수 있게 도와주지만, 그게 왜 그렇게 돌아가는지에 대해서는 알려주지 못했고, 그러다 보니까, 따라하는 것은 해 봤지만, 응용을 할 수 없게 되는 단점이 있었죠.
마치, 영어 회화 책을 열심히 공부하고 나서, 지문에 있는 회화 패턴은 잘 하지만, 문장에 조금만 변경이 생기면 말문이 막혀버리는 듯한 상황이 되는 것 말입니다.
결국, "헤드 퍼스트" 시리즈도 초반의 그 열풍은 사그러들기 시작했고, 사람들은 다시 처음을 되돌아왔습니다.
언어 문법을 아는 것이 먼저냐, 일단 뭐라도 만들어봐야 하는 것이 먼저냐의 싸움은 취향의 문제가 되었고, 어차피 할 사람들만 그 둘 사이의 갭을 이겨내서, 문법도 공부하고, 구현도 해 보는 사람들만 살아남는 초기의 정글로 되돌아가게 된 것이죠.
그러던 와중에 이 책을 보게 되었습니다.
이 책은, 600여 페이지의 분량으로 분책이 되어 있습니다.
전반 기초편에는 기본 python 문법을 간단하게 소개합니다. 너무 어렵지 않지만, 그렇다고, 너무 겉핥기도 아닌, 딱 뭔가를 만들어볼 정도의 깊이로만 설명하고 있습니다. 이미 python 관련 책을 한번이라도 읽어본 사람들이라면, 요약 정리하는 수준으로 볼 수 있었고, 만약 처음 python을 접한다면, 큰 어려움 없이 기본적인 개념들만 어렵지 않게 익힐 수 있는 수준이었습니다. (사실 이 수준을 맞추는 것이 가장 어려운 점이긴 하죠. 마치 골디락스의 난이도랄까요)
그리고 후반의 실습편에서는 앞에서 배운 파이선 문법을 가지고 여러가지를 만들어봅니다.
크게는, 1) 파이게임으로 만드는 스페이스 인베이전, 2) csv 파일 읽어서, matplotlib, plotly 등으로 시각화하기, 3) Django 사용하기 의 3가지 실습 예를 보여주고 있습니다. 하나같이 python이 다른 언어들에 비해 장점으로 갖고 있는 것들이죠. <게임, 시각화, 웹> 이었습니다.
프로그램 공부를 시작할 때, 어떤 언어로 시작할 것인지를 선택한 이후의 문제를 한번에 해결해주는 책이었습니다.
1) 문법을 어떻게 공부하고
2) 그 문법을 사용해서 무엇을 (어떤 어플리케이션을) 어떻게 만들 것인가
에 대한 문제에 대한 가장 확실한 답을 해 주는 책이었습니다.
그 동안 수 많은 입문서들을 봐 왔지만, 이 책은 가장 훌륭한 입문서였습니다.
만약, 누군가가 "프로그램을 공부해보려고 하는데, 어떻게 하면 좋을까?" 라고 물어본다면, 고민 없이 이 책을 추천해 줄 것 같습니다.
다만, 맨 처음에 이 책으로 프로그램에 입문하면, 이 책의 진정한 가치를 모를 수 있습니다.
오히려, 기존에 다른 책으로 프로그램 공부를 시작했다가, 포기했던 사람이 다시 한번 도전해보려고 할 때, 그때 진가를 발휘할 수 있는 책이 아닐까 싶었습니다.
-----
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
-----