토요일, 1월 26, 2013

[독서광] 루비 프로그래밍 언어

루비 프로그래밍 언어는 간결하면서도 표현력이 막강한 객체지향형 스크립트 언어로 松本行弘가 1995년에 만들었다. 웹 개발을 위한 오픈 소스 프레임워크인 루비 온 레일즈에 이어 최근에는 시스템 관리 부문의 오픈 소스에서도 많이 사용되면서 인기를 끌고 있으므로 다들 관심이 많을 것이다. 오늘은 오라일리의 'The Ruby Programming Language'의 한국어판인 '루비 프로그래밍 언어'를 소개하고, 부록으로 참고할만한 다른 전자책 링크를 정리해보겠다.

프로그래밍 언어 서적의 마술사인 데이비드 플래너건과 루비의 창시자인 유키히로 마츠모토가 공동으로 집필했기에 기대치가 상당히 높았다. 아니나 다를까 인터넷에서 살펴본 다른 전자책과는 달리 루비 프로그래밍 언어의 철학과 동작 원리를 꼼꼼하게 설명하려고 노력한 결과 루비 프로그래밍 언어에 대한 미묘한 부분까지도 짚고 넘어간다(1.8과 1.9의 차이점에 대해서도 상당히 세부적으로 파고든다). 하지만 기존 스크립트 형식의 프로그래밍 언어(특히 파이썬이나 펄)에 익숙한 개발자이거나 함수형 언어를 이해하는 개발자에게는 좋은 친구로 다가올지 몰라도, 처음으로 스크립트 언어를 배우는 사람이 읽기에는 구성이나 설명 방식이 절대 만만하지 않다. 오라일리 책의 공통적인 특성인 코드 조각 내기로 인해 뭔가를 따라서 진행하고픈 초보자들에게도 장벽은 높기 마련이다. 하지만 손쉬운 지침서만 읽어서는 독학으로 알아내기 어려운 여러 가지 루비 언어의 특성을 설명하고 있기에 일단 쉬운 책부터 한 권 독파하고 이 책으로 넘어오면 어떨까 하는 생각이 들었다.

목차를 보면 '소개' 부분이 나오고 차례로 프로그램 구조/실행 방법, 데이터형/객체, 표현식/연산자, 문장/제어구문, 메서드/proc/lambda/클로저, 클래스/모듈, 리플렉션/메타프로그래밍, 루비 플랫폼, 루비 환경 순서로 설명이 전개된다. 문제는 프로그래밍 서적의 일반적인 특성(?)인 딱딱한 구성으로 인해 마치 K&R의 "The C Programming Language"를 독파하는 각오로 책을 읽어야 한다는 데 있다. 실제 프로그래밍을 배우는 좋은 방법으로 '부딪혀보기'가 있는데, 이 책으로 '부딪히'다가는 온 몸에 멍이 들지도 모른다는 걱정을 해본다(몸이 근질거린다면 뒤에 소개하는 전자책 링크를 먼저 따라가보자.). 게다가 함수형 언어 등에서 아주 유용하게 나오는 개념과 최신 프로그래밍 이론에서 나오는 개념들이 돌직구처럼 던져지므로 절반을 넘기는 지점부터는 상당히 괴로울지도 모르겠다. 루비 자체가 파이썬보다 학습 곡선이 무척 가파르다는 사실을 감안하더라도 책이 다소 어렵게 전개된다는 느낌을 지울 수 없다. 물론 이 책을 다 읽고 나서도 루비스럽게 코드를 작성할 때까지는 상당한 연습과 노력이 필요하다.

번역 상태는 프로그래밍 서적을 번역하면 생기는 동일한 문제가 그대로 등장한다(이 부분은 누가 하더라도 풀기 어렵다). 즉, 읽어도 이해가 잘 안가는 부분이 많으므로 한번 더 읽을 셈치고 일단 읽고 넘어가는 편이 정신 건강에 이로울 테다. 그래도 잘 이해가 가지 않으면 원서도 참고하고 루비 공식 문서도 살펴보고 직접 프로그램도 짜면서 머리가 아니라 몸으로 느끼기 바란다.

애독자 여러분을 위해 읽을만한 루비 관련 전자책(HTML/PDF) 링크를 정리해보았다. 모두 영어라서 부담이 있긴 하지만... 온라인에서 무료로 읽고 예제도 (Copy & Paste로) 바로 실행해볼 수 있다는 장점이 있으므로 필요에 따라 골라서 읽어보기 바란다.

  • 루비 공식 문서: 루비 프로그래밍 과정에서 반드시 참조해야 하는 필수 사이트!
  • Programming Ruby The Pragmatic Programmer's Guide: The Pragmatic 시리즈로 나온 루비 프로그래밍 서적. 간결하면서도 빠짐없다.(난이도: 중하)
  • The Book of Ruby: 전형적인 No Starch 책(난이도: 중).
  • The Little Book of Ruby: 사례 중심의 루비 기본서(난이도: 중하). The Book of Ruby의 경량 버전
  • Poignant Guide to Ruby: 이야기식으로 루비 프로그래밍 기법을 전개(난이도: 중). 문화적인 차이로 인해 영어권 유머에 익숙하지 않는 분들께는 권장하지 않음
  • Ruby User's Guide: 깊이가 얕은 대신 넓은 주제를 사례 중심으로 소개(난이도: 하)
  • Humble Little Ruby Book: 짧고 빠르게 루비를 독파하고픈 사람에게 추천(난이도: 중)
  • The Bastards Book of Ruby: 시원시원한 그림을 곁들여 유머러스하면서도 정곡을 찌르는 내용을 제공(난이도: 중상)
  • Ruby Essentials: 예제 중심으로 쉽게 설명한 루비 입문자용 문서(난이도: 하)
  • Ruby Best Practices: 루비스런 코드를 작성하기 위한 우수 사례 소개(난이도: 최상)

자, 루비 세상으로 출발할 준비가 끝났는가? 즐거운 여행 되시기를 바란다. :)

EOB

토요일, 1월 19, 2013

[독서광] The Art of Software Testing(소프트웨어 테스팅의 정석)

작년 연말에 진행하던 과제와 관련해 테스트를 수행하는 바람에 간만에 테스팅 쪽에 관심이 가고 있었는데 마침 에이콘 출판사에서 테스팅 관련 책을 하나 선물로 주셨다. 바로 테스팅 관련 업계에 종사하시는 분들께서는 한번쯤 읽어봤을지도 모르는 'The Art of Software Testing'이라는 책이다.

이 책을 아마존에서 찾아보면 초판 발행일이 무려 1979년이다. 한국어판 번역서의 기준인 2판은 2004년도에 그리고 가장 최근인 2011년 11월에 3판이 나왔는데, 2판과 3판의 목차를 대조해보니 3판에서는 모바일 쪽 테스팅 기법이 더 추가된 듯이 보인다. 1판에서 2판으로 옮겨갈 때는 상당한 변화가 있었는데, 좀더 최신 프로그래밍 언어(C++, Java), 애자일 개발 방법론 소개, 웹 기반 테스팅 기법 소개 등 나름 시대에 뒤쳐지지 않도록 노력한 흔적이 보였다. 하지만 업무 논리가 비교적 산술 계산과 작업 흐름에 의존적인 MIS 프로그램을 중심으로 내용이 전개되고 있으므로, 요즘과 같이 복잡한 요즘 프레임워크 기반의 각종 개발 기법을 뒤쫓아오기에는 역부족이다. 다소 원론적인 교과서 같다는 느낌이라고 할까나? 여하튼 시대의 흐름에 맞춰 새롭게 리뉴얼하려 했지만 시류를 완벽하게 쫓아가지도, 그렇다고 고전의 반열에 오르지도 못했다는 생각이다.

뭐 이렇게 적고 나면 딱딱한 대학교재처럼 보일지도 모르겠지만 나름 테스팅에 대한 정의, 이론, 역사, 용어 등을 일목 요연하게 정리하고 있으며, 수학적인 방법으로 테스팅을 정형화하는 기법에 대해서도 사례를 들어 설명하기에 개발자들이 자주 저지르는 실수 등을 찾아내기 위한 몇 가지 힌트도 제공하고 있다. 물론 사례 중에 포트란과 PL/I으로 만든 코드가 등장하므로 C와 자바 프로그래밍 언어에 익숙한 개발자들이 보면 당황(!)할지도 모르겠다. 번역 상태를 보면... 용어가 조금 오락가락하고('탁상 점검'했다가 '데스크 체크'했다 한글이랑 영어가 왔다갔다 하는 경우를 몇 번 봤다), 프로그래머 관점에서 "응? 설명이 뭐 이렇게 꼬여있어?(예: 최악의 경우 명령어 처리기에서 프로그래밍 에러는 프로그래밍 처리 에러여야 하고 --> 도대체 이게 무슨 말이야???)"하는 부분도 존재하지만 테스팅 관점에서 보면 읽을만 하다.

결론: 테스팅 관련 분야에 몸담고 있는 분들은 역사적이고 큰 관점에서 가치가 있는 책이다. 하지만 최전방에서 전투를 벌이는 동안 테스트 기법이나 디버깅 기법이 아쉬운 개발자들이라면 다른 좋은 책들이 많으므로 그냥 개인적인 관심사에 따라 참고 삼아 읽어볼만한 수준이라 본다.

토요일, 1월 12, 2013

[독서광] 아마존닷컴 경제학 Amazonomics

처음에 이 책을 접했을 때 국내에서 일반인들에게 그리 인지도가 높지 않은(물론 아는 사람은 다 아는) 아마존을 다루고 있었기에 번역서로 착각했다. 그런데 놀랍게도 페이스북에서 늘 좋은 글을 올려주시는 류영호님이 직접 쓰신 국내서였다. 역시 사람의 고정 관념은 깨지라고 있는 모양이다.

이 책은 인터넷 책방에서 전자상거래로 다시 클라우드 서비스와 전자책 킨들 시리즈를 무기로 플랫폼 사업자로 변신을 거듭하고 있는 아마존에 대해 일목 요연하게 정리하고 있으므로, 아마존의 역사, 전략, 철학, 배경 기술 등을 단시간에 파악할 수 있도록 도와준다. 아마존은 우여곡절을 겪으면서도 끝까지 살아남아 성공한 1세대 벤처 기업에 속하므로, 이 책을 읽으며 아마존의 성장 과정을 차근차근 따라가보면 재미와 지식이라는 토끼 두 마리를 모두 잡을 수 있을 것이다. 거의 300쪽에 달하는 분량이 조금 부담스럽기는 하지만(들고 다니거나 읽기 쉽게 다이어트를 했으면 더 좋았을뻔 했다) 그 동안 쌓아온 아마존의 화려한 업력과 현재 진행형으로 펼쳐지고 있는 각종 사업을 고려해보면 내용을 더 줄이기도 힘들었으리라.

아마존에서 틈만 나면 책을 검색하고 실제로 여러 차례 주문도 해보고, 전자책인 킨들도 써보고, 무엇보다 아마존 클라우드 AWS EC2 서비스를 개발에 적극적으로 활용하는 B급 프로그래머 입장에서 고객의 편의성을 극대화한다는 아마존의 철학은 지름신을 유발하는 지능적인 추천 기능, '원 클릭 구매', 3G로 해변가에서도 책을 내려받도록 지원하는 '킨들'을 접해 이미 알고 있었기에 이 책은 이런 철학을 발전시킨 원동력을 찾는 관점에서 요약 정리 목적으로 좋았다는 생각이다.

하지만 본문을 읽다가 보니 두 가지 아쉬운 점이 있었는데, 바로 AWS에 대한 설명 오류와 아마존의 영향력 증가에 따른 부작용(일례로 추천 과정에서 발생할지도 모르는 고객 프라이버시 침해, 원클릭 서비스로 인한 아마존의 고객 정보 독점 등)에 대한 설명 부족이다. 전문가들도 직접 AWS 환경 하에 프로그램을 만들어보지 않으면 이 서비스가 무엇인지 실체를 알기가 상당히 어려우므로 AWS를 아마존 홈 페이지에서 제공하는 각종 기능을 웹 서비스 형태로 제공한다고 생각하기 딱 좋다. 하지만 AWS product 페이지를 유심히 살펴보면 알겠지만, AWS는 컴퓨팅 자원을 임대해주는 기반 구조(IaaS, Infrastructure as a Service)에 가깝고 Amazon Flexible Payments Service(원 클릭 구매)를 제외하고서는 실제 아마존 홈 페이지에서 제공하는 각종 물품에 대한 정보, 온라인 장터나 재판매를 위한 서비스나 시스템과는 전혀 무관하다. 혹시 이 책을 읽는 독자라면 이 부분에 주의해서 읽으면 좋을 것 같다.

결론: 아마존이라는 회사와 이 회사를 발전시킨 철학과 문화에 대해 궁금한 분들께 추천한다.

뱀다리: 교보문고에서 샘이라는 전자책 대여 서비스를 오는 2월부터 서비스한다는 따끈한 소식이 있다. 책의 소유가 아닌 대여 개념이므로 아마존의 킨들과는 또 다른 사업 모델이므로 사람들이 어떻게 반응할지 상당히 기대된다. 전용 단말은 물론이고 스마트폰에서도 읽을 수 있다니 출시되면 적극 검토해봐야겠다.

EOB

일요일, 1월 06, 2013

[영화광] 라이프 오브 파이(강력한 스포일러 있음)

경고: 일단 들어가기 앞서 이 글에는 강력한 스포일러가 들어있다는 주의 사항부터 짚고 넘어가야겠다. 이 영화를 아직 안 보신 분들께서는 지금 바로 탭을 닫으시기 바란다.

와호장룡을 보신 분이라면 다들 동감하시겠지만, 앙 리(李安) 감독의 연출 실력은 정말 뛰어나다고 봐야 한다. 누가 트렌치 코트에 총이 딱 어울리는 저우룬파에게 대나무 막대기를 들고 와이어 액션 연기를 하도록 배짱 두둑하게 밀고 나갈 수 있을까? 하지만, 이런 결과로 만들어진 양쯔충과 장쯔이의 화려하고 큰 동작이 가미된 대결 장면에 이어지는 저우룬파와 장쯔이의 조용한 대나무 숲 대결 장면은 숨막힐 정도로 절제된 영상미를 보여준다(와호장룡 하이라이트 참고). 자 그렇다면 앙 리 감독에게 망망대해에 보트 한 척, 소년 한 명, CG로 만든 호랑이 한 마리를 던져주면 어떤 작품이 나올까? 앙 리가 아니었다면 얀 마텔이 쓴 베스트셀러인 '라이프 오브 파이' 원작을 들고 가서 영화로 만들겠다고 영화사를 설득하려 했으면 미친 사람 취급 받았을테다. 하지만 어찌되었든 (분명 우여곡절이 많았을테다...) 20세기 폭스사가 설득에 넘어갔고, 결론적으로 3D에 끌려다니는 영화가 아니라 3D를 끌고 다니는 레퍼런스급 영화가 되어 버렸으니(두말하면 잔소리지만 반드시 IMAX 3D로 보시기 바란다) 앙 리 감독 입장에서는 첫 메이지 영화인 헐크의 흥행 실패 정도는 충분히 극복하고 남지 않을까 싶다.

여기까지는 스포일러를 보지 못하도록 독자 여러분을 배려했다고 보면 되고, 지금부터 본 이야기에 들어가보자. 열린 결말로 화제를 불러일으킨 '인셉션'만큼은 아니겠지만 (아마 이 글 읽기 전까지는 그냥 마무리가 조금 불편하다고 느낀 분들이 많으시겠지만) '라이프 오브 파이'도 열린 가능성을 품은 결말로 끝을 맺고 있다. 바로 주인공 '파이'의 이야기가 두 가지 버전으로 나뉘어지며, 정말 어떤 버전을 믿는지는(앞 부분에 다양한 종교 이야기가 나온다. 모든 게 '믿음'의 문제라는 듯이 말이다...) 사실상 독자(또는 관객)의 몫으로 남겨진다.

  • 버전 1: 파이 혼자 여러 동물과 함께 보트에 올라탔지만, 결국 마지막으로 살아남은 파이와 호랑이가 해류를 타고 표류하다 극적으로 구조된다.
  • 버전 2: 여러 사람들이 구명 보트에 올라탔지만, 생존을 위해 잔인하게 서로에게 칼질(T_T)을 한 끝에 파이가 최후로 살아남는다.

영화 속에서 작가가 지적하듯, 버전 1과 버전 2은 (동물과 사람을 1:1로 대응하면) 사실상 동일한 이야기이며 어떤 이야기가 더 맘에 드느냐는 파이의 질문에 작가는 '버전 1'이 'the better story'라 대답한다(불행하게도 한글 자막은 미묘한 뉘앙스 차이를 제대로 전달하지 못했다). 그리고 버전 1이 말도 안 된다고 다그치며 파이를 조사했던 일본 관리 두 사람이 쓴 보고서에서 뱅갈 호랑이에 대한 문구가 언급되는 것으로 보아 일본 관리들도 '버전 1'로 마음이 기울었다는 사실을 넌저시 암시하고 넘어간다. 하지만 정말 버전 1일까? 버전 2일까를 고민하다보면 1:1로 대응할 경우에 버전 1에서 남는 주인공인 '파이'가 문제가 된다. 이런 모순을 해소하려면 버전 1에 등장하는 '파이'와 '호랑이'는 이성과 야성이라는 자아의 분리라고 봐야 한다(영화 초반에 파이의 아버지가 그렇게 '이성'을 강조하는 이유가...). 버전 1에서 멕시코 해안에 도착해서 호랑이가 뒤도 돌아보지 않고 떠나는 장면은 파이의 본성에 숨어 있던 맹수의 잔인함도 함께 사라짐을 의미한다고 봐도 될 것 같다. 여기까지 생각이 전개되고 나서 다시 영화를 처음부터 끝까지 머리 속으로 돌려보니... 중간에 무서운 호랑이가 있어 내가 정신 차리고 살 수 있다는 파이의 독백부터 시작해 중간에 여러 차례 호랑이를 죽일 수 있는 기회가 있었음에도 마음 약하게 살려주고 나중에는 쇠약해진 호랑이를 무릎에 올려 놓고 슬퍼하는 장면이 갑자기 이해가 가기 시작했다. T_T 지금 이 글을 쓰는 순간에도 버전 1과 버전 2가 오락가락하니 '인셉션'보다 더 많은 고민을 안겨준 영화라고 봐도 무방할 듯이 보인다. 물론 여기에 딱 맞는 정답은 없지만 독자 여러분들은 어떤 버전이 더 나아(better) 보이시는지?

뜬금없는 결론: '라이프 오브 파이'는 결코 방학맞이 어린이용이 아니다.

뱀다리: 실험삼아 가본 수원 CGV IMAX관은 화면도 작고 좌석 앞뒤 간격도 극악이라 추천하지 않는다. E 열에서 봤음에도 불구하고 화면이 작아 보였으니 말이다. 적어도 용산 CGV IMAX관 정도는 되어야 IMAX라는 이름값을 하지 않을까 싶다.

토요일, 1월 05, 2013

[독서광] 스티브 잡스

월터 아이작슨이 작심(?)하고 집필한 이 책은 엄청난 두께로 인해 도저히 대중 교통을 이용하며 읽기가 곤란했기에 집에서 조금씩 틈나는 대로 맛을 보다가, 지난 연말에 시간을 집중 투자해 결국 이 책을 선물 받은지(늘 챙겨주시는 K 부사장님께 다시 한번 감사드려요. :)) 1년이 넘어 완독에 성공(!)했다. 인터넷에 관련 내용이 엄청나게 올라와 있으므로, 굳이 여기서는 독후감이라는 형태로 재탕은 하지 않으려한다. 대신 읽고 나서 떠오른 몇 가지 생각을 두서없이 정리해보겠다.

  • 스티브 잡스의 악명을 매킨토시 역사 초기부터 접했기에, 비교적 중립적으로 기술한 이 책이 스티브 잡스를 칭송(단점도 모두 장점으로 보인다. T_T)하는 듯이 느껴졌다. 국내 언론들이 한국에서도 제 2의 스티브 잡스를 양성해야 한다는 말을 할 때마다, 사람들이 스티브 잡스가 진짜 어떤 인물인지 모른다는 생각을 하곤 했는데, 이 책 번역서가 출간되고 나서도 변치 않는 모습을 보니, 아이작슨이 좀더 세게 나갔어야 했을지도...
  • 개인적으로는 스티브잡스가 그 콧대높은 음악과 영화 업계 사람들을 구워삶은 부분이 가장 흥미로웠다. 픽사 CEO로 재직하며 대중매체를 다루는 회사들의 특성과 문화에 대해 충분히 이해했기에 가능하지 않았을까 생각한다.
  • 요즘 아이폰 5가 망했다는 둥 애플이 몰락했다는 둥 스티브 잡스 사후 애플을 진심으로(응?) 걱정해주시는 분이 늘고 있는데... 이 책을 읽어보면 애플의 성공이 스티브 잡스라는 개인의 영웅적인 산물이 아님을 알 수 있다. 실제로 잡스는 남(당연히 애플 내부 개발 인력도 포함!)의 아이디어를 훔치는 능력은 전 세계에서 최상급에 속했으니... 물론 그렇게 훔친 아이디어를 실행하는 능력도 최상급이었으니 용서가 가능했을 듯. 결론적으로 애플의 성공은 스티브 잡스의 후광을 계속해서 울궈먹는 구태의연한 행태가 아니라 완벽을 추구하기 위한 지속적인 실행 능력에 달려있다는 생각이다.
  • 애플 스토어의 가장 큰 위력은 아마존의 원 클릭에 버금가는 결재와 구매 이력 시스템이 아닐까 싶다(물론 아마존이나 애플은 지금도 그렇지만 앞으로도 절대 외부에 이런 구매 이력 정보를 외부에 공개하지 않을 듯이 보인다). 음반사, 출판사, 앱 제작사는 자신들이 모든 정보를 통재하는 갑에서 애플에 의존하는 을로 바뀌는 상황인지라 스토어를 이용하기 위해 애플로 가도 머리 아프고 아마존으로 가도 머리 아프니 그야말로 한숨만 나올 듯.
  • 스티브 잡스만큼이나 워즈니악의 기행(응?)도 애플 덕후 사이에서는 유명한데 비록 스티브 잡스의 전기긴 하지만 재미를 위해 조금 다뤘으면 좋았을뻔했다. 젊었을 때의 해커로서 워즈니악 이야기는 이 책 전반부에 애플 ][를 만드는 과정에서 자세히 나오기는 한다. 하지만 대중스타(으악!)로서 워즈니악의 화려한 이력이 빠진 점은 아쉽기만 하다. 한편으로는 미디어 업계를 위에서 흔들고(스티브 잡스), 다른 한 편으로는 미디어에서 대중들의 사랑(응?)을 받고(스티브 워즈니악) 이거 참 사람 운명은 알다가도 모를 일이다.

결론: 스티브 잡스와 애플 그리고 해커 문화를 이해하고 싶은 분들에게 이 책을 강력하게 추천한다.