-
-
생각하는 프로그래밍 - 프로그래밍 본질에 관한 15가지 에세이 ㅣ 프로그램 프로그래밍 프로그래머 1
존 벤틀리 지음, 윤성준 외 옮김 / 인사이트 / 2012년 12월
평점 :
구판절판
존 벤틀리의 "생각하는 프로그래밍"을 읽었습니다.
직업이 프로그래머이다 보니 심심풀이 삼아 읽기 시작했습니다. 전공서적이란 생각보다 에세이라는 말에 별 준비 없이 읽기 시작했습니다. 그러나 한장 두장 읽어가면서 생각을 고쳐 먹어야 했습니다. 가볍게 읽을 수 있는 책이 아니었습니다.
솔직히 주위에 프로그래밍을 업으로 삼는 사람들을 보면 단순히 기능의 동작에 중점을 두는 경우가 많습니다. 성능을 예측해 보거나 메모리 사용량을 계산해 보는 경우는 드물다고 할 수 있습니다. 그만큼 자원이 많아서 그럴 수도 있구요.
프로그램의 성능은 이미 한물간 테마 일 수도 있습니다. 하지만,
시대가 변해도 변하지 않는 것이 있습니다. 아무리 cpu자원이 남아 돌고 메모리가 넘쳐나도 생각없이 만든 프로그램은 어설픕니다. 그 어설픔을 판단하는 잣대 중 하나는 프로그램의 성능이며, 효율성입니다. 그게 기본이기 때문입니다. 임베디드 분야에만 관련 있는 이슈라고 치부하기에는 그 사안이 무겁습니다.
일전에 이와 관련된 글을 쓴적이 있습니다.
2008/10/06 - [전산 입문/기타] - 프로그래머의 오늘과 내일
2008/09/30 - [전산 입문/기타] - 봉투 뒷면에 하는 간단한 계산 - 탐구정신
2008/09/23 - [전산 입문/기타] - 남자라면 C++?
서론은 이쯤에서 그만두고 이 책에 대해서 이야기 해보겠습니다. 이 책은 프로그래머의 자세에 대해서 다시한번 생각하게 만듭니다. 그간 적당한 선에서 자신과 타협하지 않았나 반성하게 만듭니다.
다소 싱거울지 모르겠지만, 결론부터 말하겠습니다.
이 책은 프로그래머라면 한번쯤은 읽어봐야 하며, 시간이 남는다면 재독해볼 가치가 충분합니다. 프로그래머가 가져야 할 자세부터, 비단 마음가짐뿐만 아닙니다, 그 실천 방법까지 차근차근 열거합니다. 스티브 멕코넬이 이야기 한 것처럼 마스터 프로그래머를 스승으로 삼아 함께 일하는 것과 같습니다.
전반적으로 실제 코드와 함께
알고리즘 개선,
코드 최적화,
메모리 관련 이슈 등을 다룹니다. 실제로 사용 할 수 있을정도로 깔끔한 소스들로 저자의 생각을 펼칩니다. 벤틀리의 사고 과정을 따라가다 보면 자연스럽게 최적화된 코드에 다다르게 됩니다.
이 책은 장점은 풍부한 연습문제라 할 수 있습니다. 시간이 없는 분들은 어쩔 수 없습니다만, 시간이 되는 분은 꼼꼼히 생각해보고 풀어보길 바랍니다. 본문에서 차마 다루지 못한 많은 부분을 연습문제와 그 답에서 설명합니다. 전 연습문제를 보며, 사고 과정에서 신선한 충격을 몇번 경험했습니다. 그만큼 제 생각의 골이 얕음을 방증하는 것이겠지요.
제목이
생각하는 프로그래밍입니다. 원제는 "
Programming Pearls 2/E"입니다. 뜬금없이 다 아는 제목을 다시한번 강조한 것은 "
생각하는" 에 초점을 맞추자는 겁니다. 다다르고자 하는 목표에 이르는 길은 한 두가지가 아닙니다. 빠르면서도 쉬운 길이 있는 반면 느리며 힘든 길 또한 존재합니다. 자신이 짠 코드와 한번 비교해 볼 만합니다. 몇 분 고민하고 하루종일 코딩하는지, 몇시간 고민하고 몇시간 코딩하는지 자신을 한번 돌아 볼 필요가 있습니다. 많은 고민이 녹아든 코드는 깔끔하며 빠릅니다. 다들 코드 튜닝을 하면 빠를 지언정 관리하기 힘든 복잡한 코드가 나올거라 생각합니다. 단언컨데 오판입니다.
빠르고 명쾌한 알고리즘은 그 코드 또한 깔끔합니다.
책을 읽는 내내
자료구조,
알고리즘에 대한 제 한계를 많이 느꼈습니다. 다시 학부때 전공 서적들을 펼치게 만들었습니다. 이 분야 공부는 솔직히 더딥니다. 그리고 그 효과가 바로 나타나는 것도 아닙니다. 하지만 무시할 수 없는 부분입니다. 스스로 이 부분이 약하다 생각하는 분들은 급하지 않게 조금씩 공부해나가야 할겁니다. 여튼 제대로 프로그래밍에 대해 다시한번 생각할 수 있는 기회를 준 저자에게 고마움을 전합니다.