짧지도 길지도 않은 나의 개발경력에 많은 언어를 다뤄본게 사실이다. 지금은 언어보다는 알고리즘 및 구현방법에 대해서 더 많은 관심이 가 있는게 사실이지만 한때 많은 언어를 아는게 자신의 툴박스 내용물을 늘리는 일이자 이력서에 한줄 더 넣을수 있는것이라고 느껴 닥치는 대로 언어를 습득하던 시절이 있었다.
요즘 이력서를 정리하다보면 예전보다 언어 종류가 많이 줄어들은걸 알수있다. (실제 줄여쓴다.) 왜 줄여쓰느냐 함은 여타 다른 할줄아는 언어들이 지금 하고있는일에 별 도움이 안되고, 많이 쓰지도 않기 때문이다. 아마도 Gogamza Profile에 보면 3가지 언어를 쓸줄안다고 써 놨지만, 실제 이 밖에도 VB, Delphi, Ruby, C++, Perl, Shell Script 등의 언어를 사용해봤다.
하지만 일단 3가지 언어(C, Python, Java)는 현재 노트북에 모든 환경이 다 설정되어져 있기도 하고 바로 지금 이순간에도 개발을 시작할수 있을정도의 감은 평상시에 유지하고 있다. 실제 그런 감을 유지하기 위해 작년 학기 패턴인식이나 기계학습 수업 프로그램을 작성할때 3가지 언어를 돌려가며 구현을 해보곤 했었다.
그래서 이번 포스팅에서는 그래도 3가지 언어에서 중급이상의 실력을 가지고 있다고 자부하기에 나의 추천책을 올려보도록 하겠다.
먼저 C언어이다.
C언어는 한권의 입문서과 중고급으로 도약할수 있는 중,고급서 한권을 소개하겠다. 먼저 열혈강의 C언어라는 책이다. 이 책은 윤성우씨라는 비트캠퍼스 강사분이 지은 책인데 솔직히 나는 이 책을 통독을 한적이 없지만, 주변에서 추천을 해주길래 잠깐 읽어보긴 했었다. 구성이 상당히 알차게 되어있고, 설명도 쉽고, 게다가 동영상까지 제공되니 혼자 C언어 공부하기는 제격의 책이 아닌가 싶다.
초급서 다음에 보면 좋을 책 한권은 쉽게 배우는 C 프로그래밍 테크닉 – gcc 컴파일러 기반이라는 책으로, 헤더파일연결하는 방법이라든지, 메모리 관련 기본 테크닉, 좋은 C코딩방법 등에대해서 잘 설명해놓은 책이다.
고급서로는 C언어 펀더멘탈을 강추한다. 이 책에 대한 이야기는 이전 블로그에서 많은 설명을 했었다. 책에대한 서평을 읽어보면, 굉장히 극과 극을 달리고 있는데 솔직한 이야기로 이 책에 대한 악평을 다신분들은 이 책의 목적에 맞지않는 환경에 계시거나 이런 책의 필요성을 못느낀 독자라고 생각이 된다. (아니면 성격이 급하시거나) 작년 말에 통독을 하고(1000페이지 가까운것을) 매우 많은걸 얻을수 있었던 책이였다. 지금도 항상 책장에 두고 보는 책이다. 개인적으로 이런 국내서적이 있다는것을 매우 자랑스럽게 생각한다.
두번째 Java
Java언어도 매우 인기있는 언어라서 C언어처럼 좋은 책이 시중에 많이 있다. 초급서는 왠만하게 서점에서 랭킹되어 있는 책 아무책이나 봐도 무리가 없을만큼 좋은 책이 많이 있어 그리 문제될건 없다고 생각한다.
중급서 중에 추천을 하자면, Thinking in Java를 추천한다. 이 책은 문법보다는, 왜 어떤걸 쓰면 되고 안되는지에 대한 이유를 설명을 상당히 많이 해주고 있다. 또한 객체에 대한 개념을 아주 잘 설명하고 있는 Java책중에 하나이다.
세번째 Python
Python은 입문서중 국내서적으로 쓸만한 책이 딱 1권 있다. 이 외에 다른 서적은 거의 필요없을듯 하다.
열혈강의 파이썬(Python)이라는 책인데, 광운대학교의 이강성 교수님이 저자이시며 Python언어에 대한 애착이 남달리 강한분들중에 한명이시다. 메일로 질문해도 잘 알려주시며 책도 상당히 이해하기 편하고 레퍼런스 용도로 쓰기 딱 좋게 만들어져 있다. 본인이 소유하고 있는 책은 이 책의 이전 판 책이다.
이 책을 기분좋게 다 읽고 실무도 조금 해봤다면 다음에 추천하는 책은 PROGRAMMING PYTHON(2nd)이다. 언어적인 측면보다 라이브러리 활용 측면이 강한 책이다. 책값이 조금 비싸긴 해도 Python을 사용한다면 꼭 한번정도 볼 책이다.
종종 면접이나 다른 개발자들과 이야기를 하다가 얼토당토 않은 이야기를 들을때가 종종 있다. C++컴파일러를 사용하는데 내용은 C로 코딩을 한다는것이다. 그러고나서 자신은 C++을 잘 한다고 말을한다. 그리고 C++로 개발을 해봤다고 이야기 한다. 그래서 왜 C로 코딩했는데 C++ 이력으로 넣었습니까? 하고 물어보면 그건 컴파일러를 C++ 컴파일러를 써서 그렇다고 이야기 한다.
이런 어처구니 없는 이야기를 하시는 분들이 종종있다. 대체 C++과 C의 태생적 차이나 언어적 차이 그리고 왜 C++이 나오게 되었는지에 대해서 전혀 모르고 있는 사람이다.
내 개인적인 생각으로는 C++을 해봤다고 하는건 “C언어 + 객체지향개념”정도를 습득하고 있다는걸로 알고 있는데 말이다.
문법을 안다고 절대 해당 언어를 아는건 아니라고 생각한다. 항상 어느 언어를 써서 코딩을 할때 그 언어에 가장 어울리는 표현방법은 무엇일까 고민하고 노력하는게 진정 그 언어를 이해할수 있는 가장 빠른 길이 아닐까 한다. 그런 고민과 노력의 끝은 언어를 골라서 사용하게 하는 유연성의 근거적 기반이 될것이다.
나의 언어별 추천책들 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.