Short Coding - 알고리즘 트레이닝으로 배우는 코드 단축기법

Short Coding - 알고리즘 트레이닝으로 배우는 코드 단축기법
Ozy 지음, 서수환 옮김/한빛미디어

전혀 관심 밖에 있었던 책인데, 무심코 감수자로서 고명하신 변태 프로그래머 '야/네/우/라/오' 선생님의 이름이 박혀 있는 것에 급뿜고서 보자마자 집어든 책. (야네우라오 선생님의 변태로서의 고명하심은 Windows プロフェッショナル ゲームプログラミング 책에 대해 이야기할 때 적었으니 패스)

아무튼! 변태 프로그래머 야네우라오 선생님이 감수한 책이라면, 감수했을 이유가 있다!
책의 내용이 분명 충분히 변태적일 것이다!!

그런 쪽의 변태적인 책은 아니었지만, 변태적이리라 기대한 책의 내용은 나름 기대에 부응했는데,
한빛미디어 측에서 설명하듯이, 이 책은 흡사 '코드 골프'로 대변되는, 어떻게 해서든 바이트수를 최대한 줄인 코드를 만드는 것이 목적이었기 때문이죠.

그렇기에 부제와 귀여운 표지에 낚여서, '이 책으로 알고리즘을 잘 익혀서 버벅대던 코드 좀 개선시키고 간결하고 깔끔한 코딩해야지~' 하는 마음으로 책을 산 사람은 좀 당혹해할런지도 모르겠습니다.

그런데 실제로도 책의 제목 때문에 그렇게 오해해서 읽는 사람들이 적지 않을 것 같다는게 좀 걱정인데,
이를테면 한빛미디어 쪽 책을 PR 하기 위한 연재물인 '전문가 Zoom In 2008년 7월자'로 적혀 있는 이 책에 대한 이야기를 봐도 그런 걱정이 기우는 아니...라는 느낌이 듭니다. 인용해볼게요.

커스터마이징을 제공하는 제품을 출시하는 경우 필요 이상의 기능도 고객의 요구에 따라서 추가되는 경우가 발생한다. 그에 따라 증가하는 코드의 양과 프로그램의 무게가 주는 해로움은 기능을 추가한 시점에서는 발견되지 않는 경우가 있다. 마치 몸안에서 자라나는 암세포 만큼 쌓이고쌓여서 결국엔 심각한 장애를 발생시키곤 했다. Short Coding은 건강한 코드를 생산하는 작업이다. 코드량을 줄여 건강하고 날씬한 코드를 만드는 일이다. 생성된 코드를 다듬고 다듬어 효율적이면서 직관적인 알고리즘을 만들어 내는 작업이니 어찌보면 리팩토링의 범주에도 들지 않겠는가? 저자는 실무와 동떨어져 있다고 얘기하지만 가독성을 심하게 해치지 않는 경우에 한해서는 제한적으로 적용함에 있어서 별 문제가 없을 듯 하다. 잊지 말아야 할 것은 코드의 가독성과 효율의 중심을 잘 잡는 것과 사용되는 언어의 특성을 이해해야 한다는 점이다. 세상에서 제일 짧고 멋진 프로그램을 만들어 보고 싶은가? 지금 도전하라. Short Coding과 함께!
하아아?

아니 책은 읽어 보셨는지요?

아저씨는 이 책에 박혀 있는 코드들을 보면서 건강하고 날씬한 코드라고 느끼셨나요?
저 딴 코드야 말로 구석에 박아놓으면 정말 해로움이 눈에 띄지 않는다구!
이게 뭔 코드야 라고 심각하게 고민하던 다른 사람이 코드 고치다가 결국엔 훨씬 더 심각한 장애를 발생시킨다구!

아니면 설마 처음엔 '아니 이런 괴이한 내용의 책을 한국에 수입해 출판하는 목적이 뭔가요 접접, 독도는 우리땅 대한민국만세 ...-_-;;', 하고 적으셨었는데 '그렇게 하면 책이 안팔리자나요 책 좀 팔리는 멘트를 적어주세요'하고 징징거리는 담당자의 성화에 못 이겨 나름 소설을 적으신... 것일지도 모르겠다(-_-);;; 농담입니다, 화내지 마세요. ^ㅅ^;;

그나마 누군가의 표현처럼 파블로프의 개들처럼 프로그래머들은 심플하면서도 효율 좋은 것에 침을 흘리며 달려드는 경향이 있다...는 얘기대로, 가장 끝 문장의 세상에서 제일 짧고 멋진 프로그램을 만들어보고 싶은가?
라는 프로그래머들을 도발하는 끝맺음은 확실히 '어머 이건 꼭 사야 해'하는 느낌을 가져다 주긴 하지만, 이 책을 표현하는데에 있어서는 저런 서평은 맞지 않다고 봐요... ... 아, 아닌가, 하긴 어쩐지 읽기 힘들면서도 짧은 코드 보면 뭔가 괜히 멋져보이고 반할 것 같고... 나도 한번 쯤 저런 코드로 열심히 달려서 나 없으면 프로젝트 디버깅 못하게 만들고 싶기도 하고 할 때가 ...

잘못했습니다.


어쨌든 단도직입적으로 제가 이 책을 평해드리겠습니다.

이 책은

변태책입니다.

소스 코드양을 변태적으로 1바이트라도 더 압축하는데 목숨을 건

변태책입니다.

컴파일러들의 특성들을 교묘히 해킹하는

변태책입니다.

얼마나 변태적이냐면 감수자조차

변태입니다.

감수자랑 친한, 쓴 사람도

변태입니다.


혹시 주변에 이걸로 알고리즘 트레이닝을 해봐야지, 하는 사람이 있다면 뒷통수를 강하게 후려쳐주세요.
혹시 주변에 이걸로 알고리즘 트레이닝에 성공했어, 하는 사람이 있다면 주변에 이력서 돌리세요. 이 사람 뽑지 말라고... -_-;;
혹시 직장에서 이 책을 읽고서, '나 오늘부터 건강하고 날씬한 코드 짜기로 했어 데헷~ ^-^*' 이라고 말하는 직장 동료가 있다면 바로 키보드를 빼앗고 해운대 앞바다로 피서를 보내주세요. -_- (더 심한 표현을 쓰고 싶었지만 참는다)

이렇게나 적었음에도 불구하고 이 책으로 '알고리즘 트레이닝'을 하겠다고 하신다면 당신은 변태변태 변태, 라고 얘기할 수 밖에 없어요 ㅜㅜ

그렇다면! 이 책이 코드 짧게 쓰기 변태가 아니고서야 일독의 가치조차 없는 책이냐!
책을 본 순간 '어휴 변태 냄새 나요 저리 치우세요', 라고 단정적으로 이야기할 수 있는 책이냐!
하면 꼭 그런 것만은 아닙니다.

일단 컴파일러들이나 환경에 따른 편법들 같은 잡스러운 자료들로부터, 평소의 흔히 보던 프로그래밍 스타일과 전혀 다른 느낌의 코드(이것도 변태 코드)들을 책 전반에 걸쳐서 두루 볼 수 있다는 것, 그리고 평범한 코드가 어떻게 그런 변태 코드로 바뀌어나갈 수 있는지 함께 추리할 수 있다는 면이 참신합니다. 설명도 C 계열 언어를 어느 정도 알고 있다면 쉽게 이해할 수 있도록 쓰여져 있구요.
평소에 그렇게나 아름답던 나비가 어떻게 이렇게나 징그러운 애벌레로 변태하는지 궁금해하셨던 적 없으신지요? 이 책을 보세요!

초반에 너무 변태책이라는 것을 강조했지만, 한빛미디어 쪽의 책을 PR하는 수단이 너무 마음에 안들어서(...) 그냥 그랬던 것이고, (아니 코드 변태들을 위한 책이라고 하면 어디가 덧나나요... 덧나긴 하겠다-_-;;;) 그저 프로그래밍의 재미를 만끽하게 해줄 수 있다는 면에서, 프로그래밍에 어느정도 익숙한 사람이라면 지적 유희용, 발상을 전환시키는 비타민 같은 느낌으로 훑어볼 수 있는 책입니다.

처음엔 이게 뭥미 하는 느낌으로 다가오는 코드들을 보고서 '어휴 변태 냄새 ㅉㅉㅉ'하다가도, 개중에 나오는 여러가지 기법들과 해설에 감탄하며 '이런 편법을 쓰다니 역시 변태'라고 하다가, 마침내 '우왕ㅋ 이거 쓴 사람 변태지만 진짜 천잰데?! 이딴 천재 변태를 봤나...!!'
라고 외치게 만드는 멋진 변태 책, Short Coding이었습니다.


어휴 쓰고보니 또 한빛미디어 책이야ㅜㅜ


PS: 내용은 적당히 가려 읽어주세요.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by nvu | 2008/08/05 13:40 | 트랙백 | 덧글(9)

트랙백 주소 : http://rin.nvyu.net/tb/1792673
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by Sikuru at 2008/08/05 13:59
...더 궁금해진 서평(?) 이었습니다. (...)
Commented by xacdo at 2008/08/05 15:19
코드가 짧아진다고 꼭 시간복잡도가 줄어들지는 않죠.
Commented by 익명의제보자 at 2008/08/05 16:09
time complexity랑 관련있는 줄 알고 집어들었다가
응? 생각보다 더 재밌네??

하고 재밌어했던 기억이 나네요 ㅎㅎ
각종 변태문제가 예제로 들어있던 것 같았는데... 아이고 다시 궁금해지네요. 책을 살까;
Commented by Sinano at 2008/08/05 23:05
재미삼아 읽어보기 좋을 것 같네요. :)

http://codegolf.com/
이 사이트가 생각났습니다.
주어진 문제의 솔루션을 가장 짧게 코딩하는 놀이터....

대체로 Perl이 강세더군요.. 그 다음이 Ruby
Commented by nvu at 2008/08/06 09:22
Sikuru 님 // 훗, 계획대로... (?!)

xacdo 님 // 그렇습니다. 그래서 알고리즘 트레이닝, 이라고 붙인 부제는 좀 에러였다고 생각해요. 원서 제목은 어땠었는지 한번 찾아봐야지...

익명의제보자 님 // 아니 신나게 책을 까놨는데 사신다고 하시면... ( -_-);;; 네! 코드들도 변태인데 문제들조차 변태...죠... 흑흑.

Sinano 님 // 맞아요. 저도 몇번 문제들 구경한 적은 있지만, 어휴 이 변태들 얼마나 한가하면 이런짓하고 노나(?), 하고 감탄했던 적이 있습니다. 말씀대로 책 사이즈도 들고 다니기 좋은 편이고 해서 나름 갖고다니며 재미삼아 읽기에 좋은 책입니다. 모르는 사람 앞에선 간지 프로그래머의 위용을 뽐낼 수 있을테구요.. 하지만 아는 사람들 앞에선 변태 프로그래머의 위용을...
Commented by leonid at 2008/08/09 15:22
제가 작년부터 거의 미치다시피 했던 코드골프.. ㅋㅋ

해보세요 재밌어요 ㅋㅋ
Commented by 키노모토 at 2008/08/11 00:42
님 변태자나
Commented by Chion at 2008/08/11 13:29
변태들을 저리 잘 알아보시다니 엔뷰님 혹시? *-_-*
Commented by nvu at 2008/08/11 14:53
leonid 님 // 레오니드님이야 가능한거죠, 그곳은 저에게는 너무나도 멀고먼 엘도라도 ... ㅜㅜ

키노모토 님 // 뭐가!

Chion 님 // 뭐 그건... 아리따운 아가씨 = 변태 라서 변태들과 자주 마주하게 되는건 아니죠 ... 라는 논리로... ' v ');;;

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶