알고리즘 트레이닝으로 배우는 코드 단축기법
ACM/ICPC류의 문제 풀기에 관심 있는 분들이라면 "알고리즘 트레이닝" 이라는 제목이 붙어 있는 책을 알고 있을거다. 이 책과 같은 출판사에서 번역본을 낸 Programming-Challenges가 그것일텐데, Short Coding은 Programmig Challenges와는 조금 다른 성격을 가지고 있는 책이다.
처음엔 ACM/ICPC대회를 준비하는데 도움이 되지 않을까 하는 생각에서 이 책을 읽기 시작했다. 대회에서 가장 중요한것은 코드를 남들보다 빠른 시간내에 정확히 작성하는 것 이며 Short Conding이라 하면 그만큼 코드의 길이가 적으니 타이핑 수가 적어지고 코드 작성이 빨라서 유리한 위치에 있을 수 있다는 말이기 때문인데, 책을 받아 보고 첫장을 읽는 순간 피싯 웃음이 나올 수 밖에 없었다. 이 책에 담겨져 있는 내용은 코딩을 빨리 하기 위한 짧은 코드 작성방법이 아니기 때문이라는걸 알았기 때문.
처음에 책에 실린 소스코드를 보고 "뭐 이런 변태적인 소스가 다 있어" 라는 생각을 했다. 가장 처음 나온 코드인 34bytes짜리 소스코드를 보고 말이다. 그리고 메신져에 접속해 있는 프로그래머 지인들에게 그 코드를 보여주며 내가 느낌 감정을 공유해 보았다. 그 코드는 내가 알고 있는 C언어 지식으로는 컴파일조차 되지 않았다!
이렇게 처음엔 두뇌 컴파일러 에서 에러를 토해내던 소스코드를 책을 읽으면서 점점 컴파일이 가능해 지기 시작했으며 점점 이 책에 빠져들게 되었다.
책에는 PKU에 있는 문제와 그에 대한 간단한 풀이, 그리고 저자가 Short Code를 위해 생각한 사고를 그대로 적어 두었으며 마침내 가장 짧은 코드에 도달할 수 있도록 독자들을 잘 인도해 준다. 극한의 Short Code까지 도달하는 동안의 저자의 생각을 기술한 책이기 때문에 책의 두께는 두꺼운 편이지만 44문제 밖에 다루지 못했다는것은 아쉬움이 남을 수 밖에 없는데, 일본어를 잘 할 줄 안다면 저자의 홈페이지( http://www.4dm.org )에서 더 많은 내용을 볼 수 있다.
책을 읽던 최초의 목적인 '빠른 코딩으로 ACM/ICPC에서 유리한 위치에 가 있기' 에서는 멀어지긴 했지만 이책, 생각하는 즐거움을 알려줬다. Short Coding은 한번에 되는게 아니다. 문제를 읽고 분석을 하며 그 안에서 규칙성을 찾고 언어의 특성을 이용하며 필요 없는 개행까지 줄여가며 코드를 극한으로 압축시키는 기술이다. 책을 읽으면 C언어의 유연성과 저자의 생각에 감탄을 하게 될 수 밖에 없다. 어느정도 책을 읽은 후 부터는 내가 생각할 수 있는 최대한의 방법으로 Short Code를 작성해 보았지만 저자는 어김없이 더 작은 코드를 마지막에 내 놓는다.
비록 여기에서 알려준 Short Coding기술은 현업에서 사용할수는 없다. 다른 사람과 협업을 하기 때문에 타 프로그래머가 읽기 힘든 프로그램을 작성하는 프로그래머는 환영받기 힘들다. 그렇다고 해서 이 책에 있는 변태적인 코드 압축 기법을 쓸모 없는 짓 이라고 폄하 하는건 옳지 못한 생각이다. 깊은 사고력과 문제를 해결하는 끈기를 알려줄 수 있는 책이기 때문인데, 특히 학생이라면 이 책의 452페이지에 나와 있는 글귀를 소개해 주고 싶다.
『"장래 도움이 되니까, 안되니까."라는 합리성을 추구하는 공부는 실제로 그렇게 중요하지 않습니다. 일생에서 아이 시절, 학생시절만큼 멋지도록 쓸모없는 일을 할 수 있는 시간은 없습니다. 도움이 되는 일밖에 시키지 않는 사회인의 슬픔을 알게 될 때는 이미 늦었습니다.』
Yes24 컴퓨터와 인터넷 리뷰 도서
http://club.yes24.com/computerevent
'공부 > 읽은책' 카테고리의 다른 글
| 프로그래밍 심리학 (0) | 2008/10/15 |
|---|---|
| 알고리즘 트레이닝으로 배우는 코드 단축기법 Short Coding (6) | 2008/07/15 |
| 임베디드 프로그래밍 C 코드 최적화 (4) | 2008/06/03 |
| 프로그래머 두뇌단련 퍼즐 44제 (4) | 2008/04/06 |
| 실용주의 프로그래머 (2) | 2007/12/06 |




