Head First Programming - 파이썬으로 처음 배우는 프로그래밍 Head First 시리즈
폴 베리 & 데이빗 그리피스 지음, 강권학 옮김 / 한빛미디어 / 2011년 3월
평점 :
절판


읽은 기간: 5/23 ~ 5/28(머리와 눈으로 일독하는데 3시간 53분 걸림, 현재 머리와 손가락으로 재독 중)
총평: 매우 좋다!

일단 이 책은 파이썬 프로그래밍 언어에 대한 책이 아니다. 당연하다. 그럼 프로그래밍 방법론에 대한 책인가? 그렇다고 말할 수 없다. 방법론도 약간 소개되고 있지만 주된 내용은 아니다. 그럼 무엇에 관한 책인가? 물론 프로그래밍이다. 아다시피 프로그래밍이란 요구조건에 맞추어 논리 구조를 짜고 그것을 구현하는 것이다. 이 책은 실제의 바로 그 프로그래밍에 집중하고 있다.

제1장은 숫자 맞추기 게임을 만드는 과정을 통해 데이터 타입 변환, if 문, while 문, 라이브러리 사용법 등을 소개한다. 물론 문법 구조로서가 아니라 일종의 패턴(이디엄)으로서다. 그리고 곧 이러한 간단한 개념들만 알고 있는 독자들에게 다양한 요구 조건에 맞춰 프로그래밍할 과제들이 쏟아져 들어온다.

예를 들면 이렇다. 웹 페이지를 주시해서 가격 정보를 체크하라. 해당 웹 페이지의 전체 문자열에서 가격 정보 부분 문자열의 인덱스를 읽어서 해결. 그런데 웹 페이지가 동적이라서 인덱스가 계속 변한다. 어떻게 해야 하나? 가격 정보 부분 문자열을 검색하는 것으로 코드를 바꿔서 해결. 그런데 가격이 4.74 달러 이하일때 살 수 있도록 알람을 해주면 좋겠는데? 4.74를 while 문에 걸어서 계속 웹 페이지를 긁어대는 것으로 해결. 그런데 그렇게 했더니 상대 서버가 과부하로 다운됐다!(이 부분 읽으면서 빵 터짐) while 문의 주기를 조정하는 것으로 해결. 4.74 달러보다 비싸더라도 재고가 없으면 사야 하지 않겠어? if 문을 써서 긴급 구매 조건을 처리하는 것으로 해결. 난 외근이 잦으니까 가격 정보를 트위터로 볼 수 있게 해줘. 트위터 API를 써서 해결. 휴~

이런 식이다. 이것이 앞서 말한 "실제의 바로 그 프로그래밍에 집중하고 있다"는 말의 의미다. 프로그래밍에서 뿐 아니라 일반적인 학습도 이러해야 한다고 나는 주장한다. 왜냐하면 첫째, 아이가 말을 배우는 과정이 바로 이렇기 때문이다. 아이에게 내적 혹은 외적 요구가 발생하면 아이는 자신이 가진 개념들을 조합하여 실험적으로 구사해 본다. 기대했던 반응이 주변(엄마)으로부터 오는지를 체크하면서 아이는 자신의 언어를 발전시켜 나가는 것이다. 둘째, 신이 세상을 만들어 가는 과정도 그랬다. 신이 처음부터 완벽한 세상을 창조했던가? 아니다. 신은 세상에 과제를 주고 세상이 그 과제를 해결하면서 성장하도록 했던 것이다.

이 책의 저자들은 개념에 앞서 문제를 준다. 문제를 해결하는 과정에서 개념이 등장하는 것이다. 아, 얼마나 많은 사람들이 이 과정을 등한시 하고 있는가! 이런 사람들은 먼저 개념을 갖고 온다. 다른 사람들이 만든 개념들. 예를 들면 외국에서 수입된 개념들. 그리고 그에 맞는 문제, 상황을 찾으려 한다. 못찾겠으면 문제, 상황을 개념에 두드려 맞추려고 한다. 고로 현실은 없고 개념만 있게 된다. 혹은 왜곡된 현실과 왜곡된 개념만 있게 된다. 먼저 문제 위에 서야 한다. 아니, 문제를 발견하여야 한다. 개념은 거기서 생성된다.    
 
책으로 돌아가자. 다양한 요구 조건을 아우르려 하다보면 하나의 코드가 여러 곳에 반복될 수 있다. 코드가 반복되면 나중에 수정할 때, 즉 유지 보수할 때 힘들어 진다. 이에 대한 해결책으로 이 책은 함수라는 개념, 장치를 도입한다. 나에게 커다란 파일이 하나 주어져 있다. 이 파일 안에 적혀 있는 항목들에 접근하려면 어떻게 해야 하나? 배열이라는 장치를 사용한다. 항목들이 사람-몸무게 식으로 연관되어 있다. 이 항목들을 별개의 배열에 담으면 연관 구조가 깨어진다. 어떻게 해야 하나? 연관 배열을 사용한다. 이런 식이다. 물론 별로 참신함을 느끼지 못하는 사람도 있을 것이고 뻔한 얘기를 돌려서 얘기한다고 답답해 하는 사람도 있을 것이다. 아무튼 책 전체가 이런 식으로 사고를 일깨우는 구조로 되어 있다. 나는 감탄.

그렇다고 이 책이 완벽하다는 것은 아니다. 스토리를 만들려다 보니 어색한 장면도 있고(예를 들면 전역 변수, 지역 변수를 설명하는 부분. 왜 이런 얘기를 꺼내나 싶었다), 코드가 심하게 못생긴 부분도 있다(예를 들면 함수 안에다 파일에 접근하는 경로명을 직접 적어 놓은 부분. 저자들은 스토리 진행을 우선으로 생각하기 때문에 별 탈 없이 돌아가는 코드에는 가급적 손을 안대려 하는 것 같다). 걸리적 거리기는 하지만 흥을 깰 정도는 아니다.

이 책은 프로그래밍 과정에 집중하고 있기 때문에 프로그래밍 툴(파이썬과 파이썬의 통합개발 환경인 IDLE)에 대해서는 많은 정보를 제공하고 있지 못하다. 다시 말하면 이 책은 파이썬에 대한 책이 아니다. 그래서 이 책을 읽고 뭔가를 해보려 한다면 파이썬과 같은 프로그래밍 언어에 대한 별도의 책이 필요하다. 그 문 앞까지 인도하는 것이 이 책의 역할인데 탁월하게 잘 해낸 것 같다.

저자들이 실습용 언어로 파이썬을 선택한 것도 정말 잘한 일인 것 같다. 파이썬 코드가 깔끔해 보인다는 점에서도 그렇고 IDLE에 모든 것이 통합되어 있어서 자질구레한 것에 신경 쓸 일이 전혀 없다는 점에서도 그렇다. 예를 들면 tkinter라는 GUI 라이브러리나 SQLITE3 라이브러리를 따로 설치하고 설정해 줄 필요가 없다. import 문 하나면 바로 사용가능하다.    
 
나는 이 책을 빠르게 한 번 읽고 나서 재독 하고 있다. 재독을 하면서는 "하루에 1시간 이하, 또는 하루에 한 챕터 이하"란 규칙을 정하고 하나 하나 프로그래밍을 해보고 있다. 프로그래밍하면서 책장을 넘기다 보면 어느새 한 챕터가 끝나 있는 경우가 있다. 그럴 때면 난 혼잣말을 한다. "어, 벌써 끝났네!"

댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 

-계획했던 것
1. 플랫폼 전략 리뷰 쓰기[완료], 5/29, 5/29, 1.10
2. 헤드 퍼스트 프로그래밍[완료], 5/23, 5/28, 3.53
3. 구글노믹스 리뷰 쓰기[빚]
-그리고
4. 페이스북 이펙트(이준구 저)[완료], 5/23, 5/24, 3.25
-----------------------------------------------
총 7시간 28분 읽고 씀

-다음 주 계획
1. 부자 통장 리뷰
2. 구글노믹스 리뷰
3. 헤드 퍼스트 프로그래밍 리뷰

-비고
1. 시간 통계가 점점 허물어져 가고 있음을 느낀다. 이주 동안이나 빚으로 남아 있는 일이 있는데도 태연하다-.-
2. 시간  통계가 이것밖에 안나왔지만... 많은 블로그 글들을 읽었고 프로그래밍 연습을 했고 노트를 작성했고 읽은 책들을 다시 읽었고... 그랬다. 그 결과물들을 이 블로그에 올리기는 좀 그래서 적당한 곳을 찾고 있었다. (그래서 찾았다.) 아무튼 시간 통계를 엄격하게 준수하기로 하자.
3. 커크패트릭의 "페이스북 이펙트"를 읽으면서 좀 충격을 받았다. 마크 주커버그는 인터넷을 새로 정의하려는 야망을 갖고 있는 것처럼 보였다. 주커버그가 책의 저자에게 선물경제gift economy에 대해 아느냐고 묻는 대목에서 나는 깜짝 놀랐다. 나는 그 개념을 서키의 책이든가, 자비스의 책이든가에서 읽은지 얼마 안되었기 때문이었다. 주커버그는 자신이 하려는 일이 어떤 일인지, 어떤 일이어야 하는지를 두고 오래 숙고를 하고 있었을 것이다. 그리고 그 해답 중 하나를 적절히 표현해 주는 개념을 발견해 낸 것이었을 것이다. 나는 그것이 시대가 진화해 가는 방식이라고 생각한다. 그것이 사람들이 룻소나 볼테르의 문장에서 자신들의 사고의 표현을 발견하던 방식이었을 거라는 얘기다. 룻소나 볼테르를 일러 철학자, 사상가라 한다면 우리 시대의 사상가는, 내가 보기에는 구글이나 페이스북, 애플과 같은 시대의 아이콘을 경영하는 사람들인 것 같다. 그들은 무엇보다도 엔지니어들이다. 구글의 창설자들은 검색 알고리듬을 만든 사람이고 페이스북의 CEO는 페이스북을 직접 코딩한 사람이고 애플의 독재자는 유저 인터페이스의 룩앤필을 픽셀 단위로 검토하는 사람이다. 그러면서 그들은 시대의 흐름을 조망하고 자신의 방식대로 시대를 만들어 갈 수 있는, 지구상의 인간을 기준으로 평가한다면 가장 강력한 힘을 갖고 있는 사람이다. 말하자면 그들은 슈퍼 파워 테크놀로지스트다. 나는 갑자기 그들의 머리 속을 들여다 봐야 한다는 강박관념을 갖게 되었다. 그리고 짐작하듯이... 체했다.
4. 비트겐쉬타인의 청갈색책 원서가 왔다. 번역에서 문제가 되었던 부분만 한번 쓱 보고는 구석에 던져 두고 있다. 나의 블로그의 주 테마는 철학이다. 그러나 철학은... 어렵다. 일단 사고가 어렵다. 그리고 건설적이라기보다는 비판적, 파괴적이다. 그리고 무용... 하다. 나는 곧 청갈색책으로 돌아갈 것이다. 그런데 그것이 마치 내게는 짐처럼 여겨지기도 한다.
5. 철학, 주로 Spinoza에 대해 이야기할 수 있는 별도의 블로그를 하나 만들것[someday], modern times라는 주제에 걸맞는 이야기를 할 수 있는 별도의 블로그를 하나 더 만들 것[someday]. 너무 과한 욕심을 부리지 말 것. 
6. 5월 한달 동안 7권 혹은 8권의 책을 읽었다. 그러나 리뷰는 2권에 불과하다. 빚이 많다.

댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기
 
 
 
플랫폼 전략 - 장(場)을 가진 자가 미래의 부를 지배한다
히라노 아쓰시 칼 & 안드레이 학주 지음, 천채정 옮김, 최병삼 감수 / 더숲 / 2010년 12월
평점 :
절판


읽은 기간: 5/7 하루(1시간 45분 걸림)
총평: 더 두꺼워야 했다!!

이 책의 저자는 일본 사람이다(저자 중 한 사람은 일본 사람, 다른 한 사람은 미국 사람으로 생각됨). 미국 사람이 썼더라면 더 풍부하고 현대적인(!) 예화들을 모아다 피카레스크식으로 묘사하면서 책의 부피를 늘렸을 것이다. 그랬더라면 더 읽을 만한 책이 되었을 것 같다. 무엇보다도 이런 주제로 이런 얇은 분량은 도대체 말이 안되기 때문이다.

이 책은 플랫폼 전략이란 단일 주제에 집중하면서 이를 (마치 수학에서처럼) 공식화한다. 그래서 대단히 명료하게 읽히고, 또 곳곳에서 통찰력을 발휘하기도 한다. 이런 통찰력은 고도의 추상화때문임을 인정하지 않을 수 없다.

예를 들어 저자는 플랫폼의 기능 중 하나로 삼각 프리즘 기능을 든다. "언뜻 보면 직접적인 상호작용이 일어나지 않을 것 같은 두 개 이상의 그룹을 서로 연결해 주는 기능이다. 예를 들어 잡지나 TV, 신문 등은 광고주와 구독자(혹은 시청자)라는 두 개의 그룹을 연결하기 위해 제3의 그룹, 즉 구독자(혹은 시청자)가 원하는 기사나 프로그램을 제작하여 미디어라는 플랫폼을 만들고 있다."(50페이지) 통찰력이 빛나는 명쾌한 문장들이다. 이런 관점에서 본다면 구글은 광고주와 사용자를 연결하기 위해 검색이라는 서비스를 제공하는 플랫폼이고 페이스북은 관계라는 서비스를 제공하는 플랫폼이다.

이렇게 추상적으로 플랫폼을 정의하고 나면 플랫폼 이용자와 플랫폼 운용자 사이의 전략적 행동을 쉽게 이해할 수 있게 된다. 예를 들어 구글은 애플의 iOS에 맞서 안드로이드 진영을 창설하였다. 구글은 모바일 시장의 절대 강자인 애플의 플랫폼에서는 제대로 힘을 쓸 수 없음을 깨닫고는 안드로이드를 무상으로 시장에 제공하여 스스로를 플랫폼화한 것이다. 저자들은 이를 거대 플랫폼에 대해서 오픈 플랫폼으로 대항하는 전략적 행동으로 설명한다. 명쾌하다.

이러한 연역적이고 추상적인, 그러므로 명쾌한 논리는 이 책의 대단한 장점이다. 그러나 이 책은 얇다. 이러한 멋진 논리에 더 풍부하게 살을 붙였어야 했다. 예를 들어 저자들은 플랫폼 전략이란 "관련 그룹을 플랫폼에 모아 네트워크 효과(일종의 입소문)를 창출하고 새로운 사업의 에코 시스템, 즉 생태계를 구축하는 전략이다."(16페이지)라고 정리해 준다. 그러면 실제로 관련 그룹들을 어떻게 플랫폼에 모을 것인가, 어떻게 네트워크 효과를 창출할 것인가? 그러나 저자들은 이에 별 관심을 주지 않는다. 탁월한 검색 서비스일 수도 있을 것이고, 대대적이거나 독특한 홍보일 수도 있을 것이고, 풍부한 콘텐츠일 수도 있을 것이다. (그럼 페이스북의 경우는 무엇일까?) 저자들은 이에 대한 조언을 해주지 않는다. 또, 네트워크 효과에 대해 이야기하면서도 페이스북의 뉴스피드나 트위터 등에 대한 언급이 전혀 없다.

그러므로 내가 보기에 이 책의 가장 큰 한계는 바로 그 분량이다. 이 책은 더 좋은 책이 될 수도 있었다. 

댓글(2) 먼댓글(0) 좋아요(3)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
김준호 2011-07-17 08:09   좋아요 0 | 댓글달기 | 수정 | 삭제 | URL
안드레이 학주는 미국사람으로 알고 있습니다.

weekly 2011-07-17 11:15   좋아요 0 | URL
지적 감사합니다.
제가 다시 확인해 보지는 않았지만 저도 그렇게 생각되어서 본문에 반영했습니다.
 

www.youtube.com/watch
알라딘 블로그에 동영상을 붙여 넣는 기능이 없구나... 위 링크는 Everwood라는 미국 드라마의 한 장면(2분 15초짜리)이다. 내 아이폰에 저장되어 있어서 하루에 몇번씩, 주로 자기 전에 돌려 보곤 한다. 이상한 건 내가 저 동영상을 다운로드하지 않았다는 것이다. 나는 Everwood라는 드라마를 전혀 알지 못했으니까. 어쩌면 유튜브 동영상 다운로드 프로그램에 디폴트로 저장되어 있는 것일지도 모르겠다(그럴 것 같지는 않지만). 다른 누군가 넣어놨을까(가능성 제로)?

나래이션이 너무 좋고 쓸쓸한 감을 주는 음악도 너무 좋고 영상도 너무 좋다. 무엇보다도 짧아서 좋다.

나래이션이 영어로 되어 있기 때문에 완전히 알아들을 수가 없었다. 구글링을 하여 정확히 저 장면의 스크립트를 쉽게(너무 쉽게) 찾을 수 있었다. 아래에 붙여 둔다.

   
  The more things change, the more they stay the same. I'm not sure who the first person was said that. Probably Shakespeare or maybe Sting. But at the moment, that sentence best explains my tragic flaw; my inability to change. I don't think I'm alone in this. The more I get to know other people, the more I realize it's kind of everyone's flaw: staying exactly the same for as long as possible, standing perfectly still just feels better somehow. And if you are suffering...at least the pain is familiar. Because if you took that leap of faith, went outside the box, did something unexpected, who knows what other pain might be waiting out there? Chances are it could be worse, so you maintain the status quo; choose the road already traveled, and it doesn't seem that bad; not as far as flaws go. You're not a drug addict, you're not killing anyone...except maybe yourself a little. When we finally do change, I don't think it happens like an earthquake or an explosion, where all of a sudden we're another person. I think it's smaller than that. The kind of thing that most people wouldn't even notice unless they looked really really close, which, thank God they never do. But you notice it. Inside of you, that change feels like a world of difference, and you hope that it is; that this is the person you get to be forever...that you'll never have to change again.
 
   


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기
 
 
 

#5/16 ~ 5/22
-계획했던 것
1. 청갈색책 갈색책 부분 완독하기[못했음],5/16,,1.06
2. 페이스북 이펙트 완독하기[완료], 5/11, 5/16, 6.00?, [총]10.58
3. TED 세 개 보고 리뷰 쓰기[못했음]
4. 영어 공부 매일 진척 상황 기록하기[못했음]
5. 부자통장 리뷰 쓰기[못했음]
6. 구글노믹스 리뷰 쓰기[못했음]
7. 끌리고 쏠리고 들끓다 리뷰 쓰기[완료], 5/22, 5/22, 2.45
8. 초월하는 애플 추월하는 삼성 리뷰쓰기[완료] , 5/22, 5/22, 1.42
9. 아이폰 사진 스쿨 완독하기[완료], 5/20, 5/20, 1.08
-----------------------------------------------------------
총 12시간 44분 읽고 씀(지난 주랑 똑같다!)

-다음 주 계획
1. 플랫폼 전략 리뷰 쓰기
2. 헤드 퍼스트 프로그래밍
3. 구글노믹스 리뷰 쓰기

-비고
1. 이번 주는 좀 놀자 했는데 막상 시간 통계를 보니 아주 놀지는 않은 것 같다. 지난 주에 진을 좀 뺐고, 월요일에 서울 갔다 내려왔고, 우분투 리눅스를 다시 갈아엎고 윈도로 복귀했고, 시간 통계를 의식하면서 사는 것에 짜증이 날 때도 되었고, 어짜피 한 주 놀면 다음 주부터는 정신 바짝 차리겠지 하는 마음도 있었고 해서 어느 정도 게으름을 부린 한 주였던 것으로 기억한다. 어쨌든.
2. 계획을 좀 단순하게 짜기로 했다. 너무 빠듯하면 결국 지치게 마련인 것 같다. 단기적 성과는 풍성해 보일런지 몰라도 장기적으로는 구색만 남는 것 같다.
3. 책을 몰아서 읽지 말자. 하나 읽고 리뷰 하나 쓰고 다음 책으로 넘어가고... 이렇게 하자. 완전히 소화시키고 다음 음식을 먹자는 이야기. 아직 리뷰가 너댓 개 남은 것 같다. 이것들 끝날 때까지 새로운 책에 들어가지 말자. 그렇다고 리뷰만 써댈 수도 없으니 프로그래밍 책을 보자!^^
4. 계획된 것들에 손대기가 싫어서 이것 저것 잡다한 것들을 건드렸었다. 그러나 그것들은 시간 통계에 올라 있지 않다. 집중된 시간이 아니었다는 의미다. 만약 TED 보기를 계획에 넣어 놓지 않았다면 그 시간에 TED를 봤을 것이다. 인간의 심리란 묘하다. 똑같은 의미지만 달리 표현하면, 인간의 심리란 너무도 뻔하다. 푸념.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기