- 기본 카테고리

진자운동
- 작성일
- 2023.9.24
코딩 뇌를 깨우는 파이썬
- 글쓴이
- 존 V. 구태그 저
한빛미디어
0. 프롤로그
오랜만에 돌아왔습니다. 한빛미디어와 함께하는거.....이제 다 알고 계시겠죠? ㅎㅎ 한 달에 한 권 데이터 과학 도서 읽기 프로젝트입니다. 9월의 차례가 돌아 왔는데요, 제가 이번에 신청한 도서는 <코딩 뇌를 깨우는> 이라는 제목과 귀여운 표지를 갖고 있는 책입니다. 표지만 봐서는 이제 코딩책인지 동화책인지 모를 정도로 깜찍해요. 그런데 이 책을 겉만 보고 가볍게 접근하면 큰 코 다칩니다 ㅠㅠ 이 책의 저자는 무려 MIT 전기공학 및 컴퓨터과학부에서 교수로 재직하고 계신 존 V. 구태그님이거든요. 그냥 쉽게 쉽게 따라갈 수 있을만한 쿡북이라고 생각했다가는 책의 한 장 한 장이 쉽게 넘어가지 않을 거라고 생각합니다. 그럼 천천히 책을 살펴볼까요?
1. 참고자료
일단 이 책의 원래 용도는 '대학 강의 교재' 입니다. 책을 잘 살펴보면 아시겠지만 온라인에서 제공되는 무료 MITx 강좌의 교재입니다. 이 책을 갖고 들을 수 있는 강의는 다음 두개입니다.
- 6.0001 Introduction to Computer Science and Programming in Python
https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/
- 6.0002 Introduction To Computational Thinking And Data Science
https://ocw.mit.edu/courses/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/
책은 크게 두 부분으로 이루어져 있으며 온라인 강의와 동일한 내용을 다루고 있다고 보시면 됩니다. 사실 책 없이도 온라인 강의를 들을 수 있습니다(유튜브의 자동번역 기능을 이용하면 굳!) 또한 책의 내용과 강의를 비교하면 아무래도 텍스트를 통해 좀 더 자세하게 설명해주는 느낌이 있고요. 그러나 한 학기 짜리 수업영상을 모두 보는 것은 우리에게 쉽지 않은 일이잖아요?독자가 의지가 있는 편이라면 책이 더 편리한 도구가 될 수 있다...고 생각하시면 되겠습니다만 그래도 MIT 교수님들의 능력은 상상 초월입니다. 저 같은 경우는 책만 보는 것보다 강의가 있을 때 시너지가 나는 타입이라 영상을 같이 보고 있어요 ㅎㅎ 각자의 상황에 맞추어 공부하시면 좋을 것 같습니다.
만약 MIT의 수업이 본인에게 다소 무겁다고 생각되신다면 이 책의 번역가이신 박해선님의 다소 light한 유튜브 강의도 있습니다. 역시 참고하세요.
https://youtube.com/playlist?list=PLVsNizTWUw7EQuMp-11btC4_yPM5UxvkI&si=OUminm7mz6NGFuFc
2. 책의 내용
일단 이 책의 초점은 코딩 구문 학습에 맞추어져 있지 않습니다. 우리가 당면한 문제를 분석하고 해결책을 만드는 방법을 배우는 데 중점을 둡니다. 따라서 Python을 배우기 시작하려는 사람들에게는 살짝 버거운 느낌이 들 수 있겠지만(기초 구문에 대한 설명은 부족합니다), 훌륭한 데이터 과학자가 되고싶거나, 혹은 문제를 해결하는 방법을 배우고 싶은 사람들에게는 매우 효과적일 것이라 생각합니다. 즉, 이 책을 읽는다고 해서 Python 코딩을 마스터할 수는 없을 것이지만, 컴퓨터 과학의 근본적 원리 혹은 개념을 배우기 시작하는데는 이만한 것이 없을거예요.
하지만 그만큼 엄밀한 내용들로 가득 차 있으므로, 독자가 이 책을 읽는 데 상당한 에너지와 시간을 소비할 가능성이 높다는 말이기도 합니다. 컴퓨터가 계산하는 방식을 이해하고 과학자 혹은 공학도처럼 프로그램을 작성하는 데 필요한 지식을 망라하여 다루기 때문이지요. 감사하게도 알고리즘을 통한 계산, 코드 효율성의 특성에 대해 알아야 할 거의 모든 것이 책에 포함되어 있습니다. 이를 100% 받아들일 수 있냐는 전적으로 독자의 의지와 능력에 달렸겠지요?그래서 제가 프롤로그에서 강의와 병행하는 것이 훨씬 도움이 될 것이라고 말씀드린겁니다 -_-;
특히 이것은 데이터 과학이나 머신러닝 분야에서 일하고 싶어하는 분들에게 훌륭한 입문서가 될 것 같습니다. 책의 후반부에 알고리즘, 확률 및 통계적 추론에 대한 내용이 실려 있기 때문입니다. 특히 이번에 나온 3rd 개정판에는 파이썬에서 가장 유용하게 사용되는 라이브러리인 pandas를 다룬 부분도 추가되었거든요. 저 역시 통계를 공부하는 사람이라 이 부분이 더 유용하게 느껴졌습니다. 그러나 머신러닝에 관련된 sklearn이나 tensorflow와 같은 다른 중요한 기계 학습 라이브러리에 대한 내용은 부족합니다. 그래서 입문서라고 말씀드린겁니다..ㅎㅎ
혹시 오해하시는 분들이 있을까봐 첨언하면 pandas를 이용한 데이터 처리법의 내용은 있지만 데이터베이스 관리 시스템 등 데이터 엔지니어 분들에게 필요한 스킬들은 전무합니다. 슬슬 우리나라도 데이터 사이언티스트와 데이터 엔지니어의 역할을 구분하고 있는 모양새니 이 부분을 잘 캐치하셔야 겠습니다. 어쨌거나 우리의 구탱 교수님은 무려 600쪽에 걸쳐 쉴새 없이 많은 내용을 다룹니다. 아마 책의 마지막 장을 덮을 때 쯤이면, Python을 사용하여 체계적으로 문제를 해결하고, 데이터 분석 및 계산 모델링을 수행하여 실제 문제를 풀어내는 데 능숙해질 것이라 생각합니다.
3. 아쉬운 부분
말씀드렸다 시피 이 책은 교수님이 컴퓨터 과학 학부생 수준의 교재로 쓴 책이므로 매우 학문적인 접근법을 사용한다는 점을 기억하셔야 할 것 같습니다. 아시잖아요? 전공서적의 그 어투, 설명..... 뭔가 살짝 졸릴 것 같은 그런거요 ㅎㅎ 물론 많은 전공서적 들이 그런 것처럼 내용적인 구조는 탄탄합니다. 게다가 자주 업데이트가 되지 않는 전공서적의 단점을 상쇄합니다. 무려 21년에 개정이 된 책이니까요. 완벽하게 모든 내용을 다 공부하진 못했지만 저에게는 아주 큰 도움이 될 것 같은 책입니다.
그러나 여러 사이트에서 이 책에 대해 찾아보다가 알게된 내용이 몇 개 있어요. 어떻게 말하자면 책의 단점이죠. 이는 몇몇 사이트에서 이 책에 대해 실제 개발자로 일하는 분들이 느낀 부분을 발췌한 것인데요, 참고하시길 바랍니다.
이 책의 내용들은 학문적 영역에서는 허용될 수 있지만 상업 세계에서는 초보 프로그래머에게도 허용되지 않는 접근 방식이 많이 있습니다. 특히 잘못된 코드와 기술이 좋은 사례보다 우선시되는 방식이 있습니다. 예를 들어 앨리어싱 문제는 여러 페이지에 걸쳐 설명되어 있지만 이를 방지할 수 있는 방법을 보여주는 명확한 코드 조각은 없습니다. 또한 단순한 것을 불필요하게 복잡하게 만드는 경우가 많습니다. 강의의 맥락에서 그러한 접근 방식은 마음을 넓히는 측면에서 용서할 만한 수준이지만, 특히 컴퓨터 프로그래밍에 첫 발을 내딛는 사람들을 대상으로 한 책에서는 독자가 전체 주제가 자신에게 너무 어렵다고 느끼게 만들 위험이 있습니다. 적절한 설명이 부족하고 이해하기 어려운 코드 줄과 몇몇 오류가 있습니다.
여러 세대의 학생들이 이 책을 기본서로 삼아 공부해 왔기 때문에 내 비판이 다소 성급하다고 생각할 지 모릅니다. 그러나 견고하고 유지 관리가 가능한 코드를 생성해야 하는 상업적인 요구 사항보다는 학문적 이상과 교육에 따라 처음 10년 동안 프로그래밍을 한 사람들이 만든 소프트웨어 지배 세계로 이동함에 따라 위기가 다가오고 있습니다. 그러므로 이 책에 대한 나의 의견은 상업계에 발을 디딘 적이 없는 학자들이 쓴 다른 많은 컴퓨터 과학 서적에도 동일하게 적용됩니다. 제4판의 개선 사항에 관해 저자와 대화를 나누게 되어 매우 기쁩니다. 물론 절대 나쁜 책은 아니고 좋은 부분이 많이 있지만 전체적으로 초반 부분은 아쉬운 느낌이 듭니다.
4. 총평
그러나 저를 비롯한 세계의 많은 독자들은 의심할 여지 없이 이 책이 컴퓨터 과학과 컴퓨터 과학에 관한 걸작이라는데 한 목소리를 내고 있어요. 특히 이번 학기에 저는 위에 올려드린 MIT의 강의 2개를 모두 듣고자 하는 목표를 세웠는데요(물론 겨울방학 포함ㅋㅋ) 이를 통해 저의 코딩실려이 일취월장 할 것이라고 기대하고 있습니다.
코딩을 공부하다보면 내가 다른 사람의 코딩을 보고 단순히 따라 치며 공부한다고 생각이 들 때가 많았습니다. 그러니까 나의 논리대로 코드를 짜는 것이 아니라 남의 코드를 복붙하고 있다는 느낌이 드는거죠. 특히 CHAT GPT의 등장 이후로 이런 경향은 더 심해졌다고 생각합니다. 저도 참 반성해야 할 부분인데, 시간에 쫓기다 보니 자꾸 편한 선택을 하게 되더라고요.
저는 이 책의 효과가 그런 기술의 발전에 역행하면서 개발자로 성장하는 밑거름을 제공하는데 있다고 생각합니다. 프로그래밍을 수행하는 데 필요한 개념적 계산 능력을 키우고, 비어있는 나의 머릿속을 채워가는 거죠.
마지막으로 인도의 한 개발자가 이 도서에 남긴 찬사로 마무리 짓겠습니다. 우리 카레국 형님을 믿고 다시 이 책을 열심히 공부하러 가 보려고 합니다 ㅎㅎ 그럼 10월 도서로 찾아올 때까지 안녕히 계세용!
이 책은 제가 파이썬 프로그래머로 성장하는 데 도움이 되었습니다. 나는 프로그래밍의 아주 기본적인 것(고등학교 C++)을 알고 있었습니다. 이 책은 Python 언어 소개와 함께 프로그래밍과 연산의 핵심 개념을 쉽게 설명합니다. 나는 새로운 Python 프로그래머를 꿈꾸는 사람들에게 John Guttag 교수와 Eric Grimsson 교수가 진행하는 edx 과정과 함께 이 책을 강력히 추천합니다. 과제와 프로젝트는 정말 흥미로웠고 언어와 컴퓨터 과학의 핵심 개념을 이해하는 데 많은 도움이 되었습니다. 이 강좌는 너무 흥미로워서 온라인 강좌에 대한 검증된 인증서를 구입했습니다. 손가락 연습과 같이 개념당 하나 또는 두 개의 연습 문제가 있으며 온라인 강좌는 훨씬 더 많은 콘텐츠와 프로젝트를 제공합니다.
- 좋아요
- 6
- 댓글
- 0
- 작성일
- 2023.04.26
댓글 0

댓글이 없습니다.
첫 번째 댓글을 남겨보세요.