Media Log

Code Complete - 10점
스티브 맥코넬 지음, 서우석 옮김/정보문화사

이 책은 말이 필요 없는 프로그래머들의 필독서이다. 좋은 코드를 작성하기 위해서 필요한 정보들을 내용으로 담고 있다.책의 난이도는 초급이면서 동시에 초고급이다.
초급자에게는 그 나름대로 좋은 지침을 주고, 고급 개발자에게는 고급 개발자들만이 보이는
문장이 있다.

신입사원 때 이 책을 조금 읽다가 딱딱하고 지루해서 그만두었었는데, 회사에서 개발을 꾸준히 하다가 1년 쯤 지나서 다시 이 책을 뒤적거렸을 때에는 예전에는 보이지 않던 아름다운 지침들이 조금씩 눈에 들어오는 것을 느꼈다.

아직도 많은 부분을 이해하지 못하고 넘어가지만, 어쩌면 이 책에 있는 모든 문장  하나하나가 그런 좋은 지침일지도 모른다.
단지, 아직 경험이 미숙해 의미가 와닿지 않고 스쳐지나가게 될 뿐. 조금 더 경험을 쌓고 다시 읽을 때 마다 새로운 느낌을 갖게 될 것 이다.

1년에 한 번 정도는 새로 읽어보는 것도 좋지 않을까?

실제로 Jeffrey Richter도 이 책을 가장 먼저 추천하는데, 그 역시 10년동안이나 이 책을 읽고 있지만 아직도 이 책에서 많은 것을 배운다고 말한다.

번역은 내가 너무 좋아하는 서우석씨가 했으며, 역시 훌륭하다.

목차는 다음과 같다.

Part 1 기초 수립
Chapter 1 소프트웨어 구현으로의 초대
Chapter 2 소프트웨어 개발의 이해를 돕기 위한 비유
Chapter 3 준비는 철저하게 : 선행 조건
Chapter 4 구현 시 결정해야 할 핵심적인 사항들

Part 2 고급 코드 생성하기
Chapter 5 구현 설계
Chapter 6 클래스 다루기
Chapter 7 고급 루틴
Chapter 8 방어적인 프로그래밍
Chapter 9 의사코드 프로그래밍 프로세스

Part 3 변수
Chapter 10 변수 사용 시 일반적인 문제
Chapter 11 변수 이름의 효과
Chapter 12 기본 데이터 형
Chapter 13 특이한 데이터 형

Part 4 명령문
Chapter 14 직선형 코드 구성하기
Chapter 15 조건문 사용
Chapter 16 루프 제어
Chapter 17 특이한 제어 구조들
Chapter 18 테이블을 활용하는 방법
Chapter 19 제어와 관련된 일반적인 문제

Part 5 코드 향상
Chapter 20 소프트웨어의 품질에 대한 조망
Chapter 21 협력적인 구현
Chapter 22 개발자 테스트
Chapter 23 디버깅
Chapter 24 리팩토링
Chapter 25 코드 최적화 전략
Chapter 26 코드 최적화 기법

Part 6 시스템 고려사항
Chapter 27 프로그램의 크기가 구현에 미치는 영향
Chapter 28 구현 관리
Chapter 29 통합
Chapter 30 프로그래밍 도구들

Part 7 소프트웨어 장인정신
Chapter 31 배치와 방식
Chapter 32 스스로를 설명하는 코드
Chapter 33 개인 성격
Chapter 34 소프트웨어 장인(匠人)에 대한 주제
Chapter 35 더 많은 정보를 얻으려면


신고
  1. Favicon of http://nyolong.egloos.com/ BlogIcon 뇨릉 at 2010.08.11 20:14 신고 [edit/del]

    저도 이 책을 여러번 보고 있는데.. 읽을때마다 새로운 느낌입니다.
    저는 1판번역서를 힘들게 보고 2판을 보았는데 변역이 너무 좋았습니다.
    그리고 영어공부할겸 원서까지 사서 보고 있는 중입니다.

    Reply

submit
Debugging Applications for Microsoft .NET and Microsoft Windows - 10점
John Robbins 지음, 서우석 옮김/정보문화사


이 책은 John Robbins의 하나뿐인 명작 시리즈이다.

이 디버깅 시리즈는 총 3판 까지 발행 되었는데, 1판은 Debugging Applications란 이름의 오직 native code만을 다룬 서적이고, 지금 옆에 있는 이 책이 native와 managed 코드를 같이 다루는 2판, 그리고 2006년 말 즈음에 나왔던 것 같은 3판은 오직 관리코드에 대해서만을 다룬다.(그래서 2판이 가장 두껍다.)

그러나 닷넷프레임워크 환경 내에서 프로젝트를 한다고 해도 3판을 선택하기 보다는 2판을 고르는 것이 더 좋을 것이다. 왜냐하면 3판은 번역서가 없기 때문이다^^
이 책을 번역한 서우석씨는 debuglab.com 의 운영자인데, 튼튼한 내공이 있어서 그런지 프로그래밍 서적 번역을 정말 잘한다.( 하지만 이책의 3판은 번역하지 않을 것이라고 들었다. 그래서 재출간판이 나온 것이고 )
이 책의 번역이 엉망이다, 또 다른 책인 Code Complete2의 번역이 엉망이다 하는 사람들이 있는데 아마도 그 사람들의 기본기가 엉망일 것이다. 원서를 읽는 것보다는 100배 정도는 이득이니 영어실력이 부족하다면 꼭 번역서를 구해보라.

이 책 3판을 어쩌면 다른 사람이 번역할지도 모르니 기다려 보는 것도 좋겠지만, 2판에 있는 주옥같은 native 예제들과 설명들을 버리고 가긴 너무 아깝지 않은가. 아무리 닷넷 개발자라 할지라도^^

음, 어쨌뜬 아쉬운 소식 중 하나는 이 책을 읽고 반해 버렸던 존 로빈스가 더 이상 책을 쓰지 않기로 했다는 것이다.
책만 쓰면 인터넷에 여기저기 돌아다니고 하는 것에 어지간히 화가 났던 것 같다.
정말 아쉬운 부분이긴 하지만, 그래서 이 책이 더더욱 아름다운 명서로서 자리매김 하게 될 것 같다.

내가 이 책을 처음 알았던 것은 역시 신입사원 때였다.
(지금 생각해보니, 도대체 학교 다닐 때는 왜 이런 책들을 모르고 소설같은 C#, 자바 이런 책들만 봤는지 모르겠다. 물론 그 책들이 형편없다고 비하하려는 의도는 아니다. 그냥 이런 훌륭한 책으로 학생 때 여유를 가지고 공부하지 못했던게 아쉬울 뿐이다.)

음 어쨌든 신입사원 때, 회사 위키에 누군가가 올려놓은, 오류보고서 정보를 통해 위치를 역추적 하는 글을 읽었는데 도대체가 무슨 말인지 전혀 이해가 되지 않았다.
그 분에게 하나씩 다 물어볼 수도 없고 해서 무슨 책 읽으면 됩니까. 했더니 이 책을 보라고 권해주셨다.( 그분은 사실 카발온라인과 알집을 만든 개발실장님이었다. 신입사원이 가서, 아니 이게 도대체 무슨 외계어를 써논겁니까! 하나씩 차근 차근 설명해주십시오! 할수도 없는 노릇 아닌가. 하하하 )

음 어쨌든 이 책을 읽고 나서는 나도 map 파일과 pdb 파일이 뭔지 알게 되었고, 빌드 할 때마다 버전별로 저런 디버깅 정보들을 자동으로 모아둘 수 있도록 구성해 두었고, 또한 사람들이 비즈하드 전용탐색기를 사용하면서 프로그램이 비정상 종료되었을 때 오류보고서 정보를 보내주면 그 정보들을 보고 프로그램이 어디서 죽었는지 찾을 수 있게 되었다.

물론 이 커다란 책에 단지 충돌주소로 소스코드 위치를 찾는 방법만 나와 있는 것은 아니다.
이 책은 Windows 환경에서 디버깅하는데 필요한 거의 모든 지식을 다룬다.

내가 재미있게 읽고 프로젝트에 유용하게 적용 할 수 있었던 것들은 다음과 같다.

심볼서버 구성,
ASSERT와 TRACE,
경고 없는 코드를 작성하는 방법,
컴파일, 링커 옵션에서 각 스위치들의 의미,
DLL이 로드되다가 충돌 하였을 때 재배치되는 과정과 방지하는 방법,
멀티쓰레드 프로그래밍시에 주의사항,
기타 브레이크 포인트 고급 옵션들.

어떤 Windows 프로그래머들에게도 좋은 책이 될 것이라 확신한다.


신고
  1. 김재호 at 2008.04.30 18:35 신고 [edit/del]

    오 이런, 오늘 강컴에 3판 번역서가 올라왔군요. 5월 15일 출시에 역시 서우석씨 번역이네요^^

    Reply

submit