제이펍 출판사가 2020년 11월에 출판한 '프로그래머를 위한 파이썬' 도서의 서평 이벤트에 당첨되어 무료로 제공받은 도서를 읽고 적는 서평입니다. 가격을 보니 250페이지 분량에 25,000원 이네요. 책을 무료로 증정 받았다고 서평을 결코 우호적으로 적지는 않았음을 미리 밝힙니다.
딥러닝 이후로 파이썬 기초 서적들이 하루가 멀다 하고 출간되는 상황입니다. 최근 일반인부터 프로그래머들까지 다양한 계층에서 파이썬을 공부하고 있기 때문에 책이 잘 팔려서 많은 파이썬 책들이 출판되고 있는 겁니다. 한가지 아쉬운 점은 기존의 책들이 비슷 비슷한 기초 수준의 내용을 주로 다루고 있다는 점입니다.
기존에 출판된 파이썬 책들은 문법 위주의 책들이 대부분인 상황이고, 파이썬은 다른 프로그래밍 언어에 비해서 상대적으로 쉽기 때문에 누구나 시간을 투자하면 문법을 익힐 수 있습니다. 그리고 조금 더 노력하면 간단한 프로그램을 쉽게 만들 수 있습니다. 하지만 그 다음 단계인 '좋은 디자인, 확장성이 있는 디자인' 이런 것들을 고민하는 분들에게 적당한 책은 많지 않았습니다. 물론 여러 좋은 책들이 있었지만 필자가 보기에는 일반인이나 파이썬 초보자들이 보기에는 갑자기 내용이 어려워 지는 책들이 대부분 이었습니다. 그 중간을 채워줄 수 있는 책이 없었다고 보는게 정확할 겁니다.
'프로그래머를 위한 파이썬'이라는 책을 한 마디로 표현하면 파이썬 프로그래밍 초보자를 위한 좋은 설계 방법론을 소개하는 책이라고 말하고 싶습니다. 테스트 주도 설계와 디자인 패턴, 리팩토링을 간단한 예제(콘솔 기반 북마크 관리)를 통해서 구현하고 해당 프로그램에 점점 기능을 추가하는 상황에서 어떻게 하면 더 좋은 프로그램을 설계를 가져갈 수 있는지를 책의 후반부까지 잘 설명하고 있습니다.
몇 가지 예를 들어보겠습니다. 필자를 비롯하여 많은 초보 프로그래머는 다음과 같이 if ~ else 구문을 자주 사용합니다. 하지만 이런 형태의 구조의 확장성에 한계가 있음을 지적하고 이를 커맨드 패턴으로 변경하고 변경했을 때 얻게되는 장점을 잘 설명하고 있습니다.
두 번째로 파이썬 생성자에서 다른 클래스의 객체를 직접 instantiation하는 경우의 문제점 역시 그림으로 설명하고 이에 대한 해결책도 잘 설명합니다. 각각의 클래스 간의 결합을 낮추는게 중요하다고 여러 곳에서 강조합니다. 그렇지 않으면 하나를 수정하면 여러 곳을 모두 수정해야 하거든요.
마지막으로 상속에 대한 부분도 상속의 문제점을 이야기하고 상속을 사용할 수 있는 경우에 대해서 잘 설명을 해줍니다. 무조건 상속이 좋다는 생각은 이제 버려야 겠지요?
여기에 추가로 책의 중반부에는 unittest와 pytest를 사용한 유닛 테스트 챕터도 있습니다.
필자는 초보 프로그래머나 또는 파이썬을 이용한 디자인 패턴을 공부하시려는 분들께 이 책을 추천합니다. 물론 비 프로그래머 분들이 여러 목적으로 파이썬을 공부하시는 경우에 이 책은 규모가 있는 프로그램을 위해서 어떻게 설계하는게 좋은지를 예제를 통해서 설명하므로 비 프로그래머 분들께도 도움이 될 겁니다.
필자는 파이썬 책을 거의 모두 읽어보고 있는데 이 책은 최근에 읽었던 책 중에서 가장 빨리 완독을 했을 정도로 번역도 잘 되고 내용도 상당히 좋았습니다. 아마존의 서평을 보니 너무 쉽다고 쓰시는 분들도 많은데 이제 파이썬의 독자층이 넓어지고 있기 때문에 분명히 이 책은 큰 도움이 될 것이라고 생각합니다. 디자인 패턴을 이미 잘 알고 현업에서 잘 사용하고 있는 프로그래머가 아니라면 이 책에 만족하시리라 봅니다. 필자 역시 파이썬 디자인 패턴 책을 몇 권 읽었는데 다 완독하지는 못했는데 이 책은 그런 점에서 볼 때 꽤 좋은 책이라 생각합니다.
이상으로 설명을 마칩니다.
'도서리뷰' 카테고리의 다른 글
유튜브 영상 편집을 위한 파이널 컷 프로 X (0) | 2022.11.06 |
---|---|
효율적 개발로 이끄는 파이썬 실천 기술 (0) | 2022.11.06 |
점프 투 플라스크 (0) | 2022.11.06 |
매출 팍팍 포토샵 상세 페이지 디자인 (1) | 2022.11.06 |
업무와 일상을 정리하는 새로운 방법 노션 (0) | 2022.11.06 |