티스토리 뷰

<해당 포스트에서 다루고 있는 "엔지니어를 위한 파이썬" 책은 제이펍 출판사로부터 지원을 받고 이에 대한 서평을 쓴 것임을 알려드립니다.>

 최근에 들어오면서 가장 핫한 언어는 무엇일까? 많은 평가 지표들이 있지만, 그래도 많이 인용하는 지표가 TIOBE Index라는 것이다. 대충 소개글을 읽어보면 이 index는 한달에 한번 전세계 개발자들과 vendor들의 투표를 바탕으로 발표된다고 하는데 이번 12월 결과를 한번 살펴보면 다음과 같다.

결과를 보면 작년과 대비해서 상위권에 있는 언어들의 순위는 바뀌지 않는다. 그 중 내가 장담하건데(물론 내가 장담한다고 뭐가 되는건 아니지만...) 적어도 Python의 위치는 언젠가는 JAVA, C, C++의 순위 중 하나를 차지하지 않을까 싶다. 물론 그러기엔 C,C++, JAVA가 차지하는 비중이 크긴 하지만 차후의 지원성 측면이나 최근 핫한 이슈중 하나인 딥러닝/머신러닝 를 쉽게 실생활에 반영할 수 있다는 점에서는 Python의 사용 빈도는 향후 더 커질 거 같다. 

 그래서 그런지 서점을 찾아보면 부쩍 Python 입문서들이 많이 보인다. 최근에 관심있게 본 주제는 Python을 통해 주식 트레이딩 프로그램을 만드는 책이었는데, 이렇게 실무로 접근하는 책도 있고, 정말로 문법과 예제를 토대로 내용을 전개하는 책들이 많이 있었다. 그런데 아마 나랑 비슷한 생각을 가진 사람이 있었겠지만, 정말 문법과 예제를 다루는 책은 정말 거기서 거기인것 같다. 그도 그럴것이 중요한 문법 내용이나 예제는 Python 공식 문법만 보더라도 충실히 소개되어 있기 때문이다. 그리고 구글링만 해봐도 더 잘 나와있는 경우가 있다. 그래서 한번 이번 포스트에서 소개하고자 하는 책은 그런 입문에서 다루는 문법이나 예제가 아닌, Python script를 디버깅하고, 정적분석 하고, 프로파일링 하는 등 입문에서 벗어난 내용을 다룬 책이다.

입문을 위한 책은 아니다.

사실 딱 책제목에 있는 엔지니어를 위한 파이썬이라는 말이 이 책을 잘 표현한다고 생각한다. 이 책의 예상 독자는 엔지니어로써, 뭔가 배우는 입장이 아닌 실제 프로젝트에 반영하고, 문제가 발생했을 때는 디버깅을 할 수 있어야 하고, 필요하다면 성능을 개선시킬 수 있어야 한다. 그래서 책 내용도 보면 파이썬의 기초에 대해서 다룬 파트 하나를 제외하고는 모두 실제 많이 사용되고 있는 라이브러리와 디버깅 기법, 최적화 방법에 대해서 소개하고 있다. 그중 인상 깊었던 내용이 몇가지 있었다.

정적 분석?

 사실 정적 분석(Static Analysis)이라고 하면 프로그램의 성능을 높이는 것보다는 코드 작성시 유발될 수 있는 버그를 근본적으로 막기 위한 일종의 소프트웨어 공학 기법 중 하나이다. 엄밀히 말하자면 코드를 특정 툴로 분석해 불필요하게 작성되어 있는 코드를 찾아내거나 버그를 유발할 수 있는 분기점을 찾는 방법 자체를 말하는데 이 방법이 중요하긴 해도, 실제로 책이나 문헌을 통해서 이를 다뤄지는 것은 흔치 않았던 것 같다. 이 책에서 그런 부분을 약간 다루고 있다. (사실 인터넷으로 파이썬 관련 내용 찾아보면 자기가 원하는 주제에 대한 예제 코드나 문법을 찾지, 버그를 줄일수 있는 방법론을 찾아볼까...) 개인적으로 이런 정적 분석 자체도 뭔가 실제 프로젝트에 코드를 반영하기 전에 꼭 수행해야할 중요한 작업이라 생각하는데, 책에서 다룬 주제를 보면서 "저자가 전반적으로 다루는 입장에서 신경을 썼구나.." 하는 생각을 잠시 해봤다.

최적화?

책의 11, 12장에서는 프로그램의 최적화와 그 응용 예시로 Cython을 이용한 예시를 보여주고 있다. 딱 위에 있는 목차만 보더라도, 뭔가 입문에서 다뤄질 내용보다는 병렬처리를 이용해서 성능을 개선하는 방법, 쓰레드를 여러개 두는 방법 등을 소개하고 있다. 아마 자신이 만든 프로그램의 성능을 확장시키고자 하는 사람이라면 이 부분의 내용은 여러모로 도움이 될 것 같다.

엑셀?

신기하게도 Python으로 Excel을 처리하는 기법에 대해서도 잠깐 소개하고 있다. 회사에서 자동화 업무때문에 Python으로 Excel을 처리하는 스크립트를 만들어본 나로써는 매우 흥미있던 주제중 하나였다. 


수치해석 관련자보다는 정말 엔지니어가 봤음 하면 책!

 책을 열어서 보면 볼수록 구글링해서도 쉽게 찾을 수 없는 주제들이 많이 있었다. 물론 다른 출판사에서 출판된 Python을 기반으로 하는 Data Science 책에도 NumPy, SciPy, Pandas 같은 라이브러리 설명도 되어 있고, 이 부분은 어느 책이 더 좋다고 평가는 못하지만, 이책이 다른 책과 비교했을 때 부각시킬 수 있는 장점이라면 다른 책에선 흔히 다루지 않는 섹션과 주제가 아닐까 하는 생각을 해본다. 
 책의 서두에서도 수치 해석이라는 목적을 가진 독자를 위한 책이라고 언급되어 있지만, 뭔가 수치 해석적 기반 지식이 요구되지 않고, 오히려 파이썬을 조금더 개선시키고 활용시키고자 하는 사람에게는 Python의 영역으로 조금더 깊이 들어 갈 수 있을 만한 책이라고 여겨진다.


참고: 예제를 통해서 책의 내용을 확인하고자 하시는 분이라면 아래 링크를 참고하시기 바랍니다.
https://github.com/Jpub/scTechPython

댓글