태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

생각하는 프로그래밍 - 프로그래밍 본질에 관한 에세이

존 벤틀리의 "생각하는 프로그래밍"을 읽었습니다.

직업이 프로그래머이다 보니 심심풀이 삼아 읽기 시작했습니다. 전공서적이란 생각보다 에세이라는 말에 별 준비 없이 읽기 시작했습니다. 그러나 한장 두장 읽어가면서 생각을 고쳐 먹어야 했습니다. 가볍게 읽을 수 있는 책이 아니었습니다.

솔직히 주위에 프로그래밍을 업으로 삼는 사람들을 보면 단순히 기능의 동작에 중점을 두는 경우가 많습니다. 성능을 예측해 보거나 메모리 사용량을 계산해 보는 경우는 드물다고 할 수 있습니다. 그만큼 자원이 많아서 그럴 수도 있구요.

프로그램의 성능은 이미 한물간 테마 일 수도 있습니다. 하지만, 시대가 변해도 변하지 않는 것이 있습니다. 아무리 cpu자원이 남아 돌고 메모리가 넘쳐나도 생각없이 만든 프로그램은 어설픕니다. 그 어설픔을 판단하는 잣대 중 하나는 프로그램의 성능이며, 효율성입니다. 그게 기본이기 때문입니다. 임베디드 분야에만 관련 있는 이슈라고 치부하기에는 그 사안이 무겁습니다.



일전에 이와 관련된 글을 쓴적이 있습니다.

2008/10/06 - [전산 입문/기타] - 프로그래머의 오늘과 내일
2008/09/30 - [전산 입문/기타] - 봉투 뒷면에 하는 간단한 계산 - 탐구정신
2008/09/23 - [전산 입문/기타] - 남자라면 C++?




서론은 이쯤에서 그만두고 이 책에 대해서 이야기 해보겠습니다. 이 책은 프로그래머의 자세에 대해서 다시한번 생각하게 만듭니다. 그간 적당한 선에서 자신과 타협하지 않았나 반성하게 만듭니다.

다소 싱거울지 모르겠지만, 결론부터 말하겠습니다. 이 책은 프로그래머라면 한번쯤은 읽어봐야 하며, 시간이 남는다면 재독해볼 가치가 충분합니다. 프로그래머가 가져야 할 자세부터, 비단 마음가짐뿐만 아닙니다, 그 실천 방법까지 차근차근 열거합니다. 스티브 멕코넬이 이야기 한 것처럼 마스터 프로그래머를 스승으로 삼아 함께 일하는 것과 같습니다.


전반적으로 실제 코드와 함께 알고리즘 개선, 코드 최적화, 메모리 관련 이슈 등을 다룹니다. 실제로 사용 할 수 있을정도로 깔끔한 소스들로 저자의 생각을 펼칩니다. 벤틀리의 사고 과정을 따라가다 보면 자연스럽게 최적화된 코드에 다다르게 됩니다.

이 책은 장점은 풍부한 연습문제라 할 수 있습니다. 시간이 없는 분들은 어쩔 수 없습니다만, 시간이 되는 분은 꼼꼼히 생각해보고 풀어보길 바랍니다. 본문에서 차마 다루지 못한 많은 부분을 연습문제와 그 답에서 설명합니다. 전 연습문제를 보며, 사고 과정에서 신선한 충격을 몇번 경험했습니다. 그만큼 제 생각의 골이 얕음을 방증하는 것이겠지요.

제목이 생각하는 프로그래밍입니다. 원제는 "Programming Pearls 2/E"입니다. 뜬금없이 다 아는 제목을 다시한번 강조한 것은 "생각하는"에 초점을 맞추자는 겁니다. 다다르고자 하는 목표에 이르는 길은 한 두가지가 아닙니다. 빠르면서도 쉬운 길이 있는 반면 느리며 힘든 길 또한 존재합니다. 자신이 짠 코드와 한번 비교해 볼 만합니다. 몇 분 고민하고 하루종일 코딩하는지, 몇시간 고민하고 몇시간 코딩하는지 자신을 한번 돌아 볼 필요가 있습니다. 많은 고민이 녹아든 코드는 깔끔하며 빠릅니다. 다들 코드 튜닝을 하면 빠를 지언정 관리하기 힘든 복잡한 코드가 나올거라 생각합니다. 단언컨데 오판입니다.

빠르고 명쾌한 알고리즘은 그 코드 또한 깔끔합니다.

책을 읽는 내내 자료구조, 알고리즘에 대한 제 한계를 많이 느꼈습니다. 다시 학부때 전공 서적들을 펼치게 만들었습니다. 이 분야 공부는 솔직히 더딥니다. 그리고 그 효과가 바로 나타나는 것도 아닙니다. 하지만 무시할 수 없는 부분입니다. 스스로 이 부분이 약하다 생각하는 분들은 급하지 않게 조금씩 공부해나가야 할겁니다. 여튼 제대로 프로그래밍에 대해 다시한번 생각할 수 있는 기회를 준 저자에게 고마움을 전합니다.


Trackback Address >> http://rayny.net/trackback/215 관련글 쓰기

  1. Subject: 프로그래머에 대해 다시 생각해보다

    Tracked from 맑은독백 2008/10/09 22:24  delete

    존 벤틀리의 "생각하는 프로그래밍"을 읽었습니다. 직업이 프로그래머이다 보니 심심풀이 삼아 읽기 시작했습니다. 전공서적이란 생각보다 에세이라는 말에 별 준비 없이 읽기 시작했습니다. 그러나 한장 두장 읽어가면서 생각을 고쳐 먹어야 했습니다. 가볍게 읽을 수 있는 책이 아니었습니다. 솔직히 주위에 프로그래밍을 업으로 삼는 사람들을 보면 단순히 기능의 동작에 중점을 두는 경우가 많습니다. 성능을 예측해 보거나 메모리 사용량을 계산해 보는..

댓글을 달아 주세요

  1. esstory 2008/10/09 21:58  address  modify / delete  reply

    오늘도 성능 문제 때문에 하루 종일 시달렸습니다. cpu가 거의 100 으로 가게 만드는 프로그램 때문에 하루종일 알고리즘을 되짚어 보고 프로파일링을 돌리고, 프로파일링 결과로 나온 자료를 바탕으로 새로운 알고리즘을 적용해 보는 과정을 반복했었지요.
    프로그래머라는 직업에서 '생각' 을 빼버리면 정말 뭐가 남나 싶습니다. 기계보다 나을게 없으니까요 .^^;

    • 맑은독백 2008/10/09 22:32  address  modify / delete

      ㅋ 맞습니다. 저도 요즘 valgrind와 gprof로 코드들을 튜닝하고 있습니다.
      생각을 뺀 프로그래머는 여지없이 코더로 전락하고 말겠지요. 코더도 라이브러리 밖에 사용할 줄 모르는..말이죠..

      고단한 하루를 보내신거 같네요..
      그런 하루는 뿌듯하기도 하지만 집에 오면 어김없이 피로가 몰려오지요..
      따뜻한 목욕한번 하시고, 고생한 하루 잘 마무리 하세요..
      전 솔직히 그런 날이면 목욕보다 맥주 한캔이 더 땡기지만요 ㅎㅎ

  2. 이병준 2008/10/10 09:19  address  modify / delete  reply

    열심히 보고 계시는군요. 열공하세요~

  3. 필넷 2008/10/16 12:20  address  modify / delete  reply

    얼마전에 '코드 한 줄 없는 IT이야기'라는 책을 읽었는데, 에세이 같아서 출퇴근시간에 가벼운 마음으로 읽었는데... 이 책은 정말 생각하면서 읽어봐야 할 듯하네요. 연습문제까지 있다니.. ^^

    • 맑은독백 2008/10/16 15:15  address  modify / delete

      필넷님 반갑습니다. ^^
      네 이 책 굉장히 재미 있게 읽었습니다.
      강추하는 책이구요 ㅎ
      특히나 연습문제가 압권입니다 ;)

.