GREAT CODE: 하드웨어의 이해

조엘이 C를 배우라고 하는 이유에서 가장 많이 강조한 부분은
진짜로 직접 실행되는 코드가 어떤건지 구조를 알지 못하면,
하이레벨에서 사소한 잘못된 선택으로도 치명적인 속도 저하나
프로그램 문제를 일으킬 수 있다는 그런 이유였습니다. 물론
반론은 상당히 많은 주장이지만, 그 주장에 감명을 받아서
“나도 이제 저수준 세상을 알고 싶어!”라는 사람에게 시간은
되도록 적게 들고 손쉽게 익힐 수 있는 책으로
《Write Great Code》를 서점에서 처음 봤을 때, 아 딱 그책이군! 하는
느낌이 들었습니다.

이 책은 처음에는 1권만 쓰고 반응을 보려는 듯 부제를 무지
조그맣게 썼는데, 결국 이번 달 중으로 2권이 나온다고 합니다.
1권은 “Understanding the Machine”이고 2권은 “Thinking Low-Level, Writing High-Level”입니다.
1권이 7월에 에이콘 출판사에서 번역판이 나왔습니다.
서점에서만 원서를 약간 보다가 번역판을 사서 자세히 봤습니다.
원서는 너무 비싸서 T-T..

예를 들면 파이썬에서 “0.3 더하기 0.3을 했는데 왜 0.6이 아니라
0.59999998이 나오나요.” 하는 파이썬 프로그래머는 정밀도가
요구되는 계산에서도 float타입으로 0.3을 계속 더해서 결국
천 번만 더해도 눈에 띄게 오차가 나버리는 심각한 상황을 맞기
십상입니다. IEEE-754가 어떤 것인지 얼핏이라도 알고 있는
프로그래머라면 그렇게 계산하면 당연히 오차가 누적되는 것을
알고 적절한 조치를 취했겠지만요~ 이런 문제는 우연히 하나씩
숨어있는 것이 아니라 살다보면 수도 없이 만나기 마련인데,
바로 그런 문제를 이 책의 앞쪽에서 설명하고 있습니다.
수치 표현이나 스트링 표현, 인코딩, 캐릭터셋, 비트연산,
논리게이트 같은 컴퓨터과학 전공 1~2학년에서 대체로 배우지만
정작 시험치고 숙제할 때만 쓰고, 실전에 그게 연관이 있구나
하고 연관이 잘 안 되고 뇌 여기 저기에서 따로 따로 놀고 있는 것들~

그 뒷부분에서는 CPU, 인스트럭션, 스택, 힙, I/O를 다루고 있습니다.
물론 각각이 컴퓨터구조, 컴퓨터시스템, OS, 파일처리론 같은 과목들에서 다루는 것이기는 하지만, 학교에서 배우는 식으로 하는 게 아무래도 현업 프로그래머들에게는 너무 시간이 많이 든다는 것을 고려해 보면, 이렇게 책 하나로 다 묶어버려서 요점만 설명하는 것도 괜찮은 접근인 것 같습니다. 흐흐;;

그런데 하나 얘기를 안 할 수가 없는 것은.. 제책과 편집..
글씨는 지금까지 봤던 컴퓨터 책 중에서 가장 작고..
한 페이지에 거의 40줄씩 나오는데다가.. 편집도 상당히
90년대 초반 교학사에서 나온 컴퓨터책들처럼 되어있어서
책을 읽고 있으면 “아아 내가 공부하고 있구나” 생각이 강하게
들게 해 줍니다. 게다가 자간도 좁고 책 크기도 너무 커서
(B5 풀 사이즈) 들고다니면서 흔들리는 곳에서 보기에
아주 곤란합니다. 막 고3의 심정으로 옆에 지나가는 사람들
다 붙잡고 “나 공부하고 있어요 주르륵” 하소연이라도 해야할
것 같은..
책 값이 25000원이면서도 제책 품질이 이렇게 떨어지고
품위가 없게 나온 것은 아무래도 우리나라 출판 사정이 점점
어려워지고 있다는 뜻일까요.. -_.-;;
적어도 읽고 싶은 마음이라도 나게 만들어주면 좋겠군요..

그럼에도 불구하고 책의 내용은 다음의 사람들에게는 아주
유익할 듯 합니다.

  • 컴퓨터과학을 전공했지만 졸업하면서 책을 다 버리거나 후배들 줘버린 사람
  • 컴퓨터과학을 전공하지는 않았지만 모르는 말이 나와도 별로 두렵지 않은 사람
  • 책을 장 단위로 쪼개들고 다니면서 보기 때문에, 제책이 어떻든 신경 안 쓰는 사람
  • 회사에서 책 사라고 공지가 나왔는데 뭘 사야할 지 딱히 정해둔 것이 없는 사람

흐흐;

번역본 제책이 아쉬운 한편.. 2권 “저수준으로 생각하면서 고수준 코드를 짜기”가 기대가 됩니다. 1권을 보고 약간 아쉽다 생각이 드는 경우에는 Miguel도 추천한
Computer Architecture: A Quantitative Approach를 같이 보면 좋을 듯 합니다~

9 thoughts on “GREAT CODE: 하드웨어의 이해”

  1. 태생이 원래 수학은 뿌리부터 빈약하지만 … 어느순간부터 내가 만지고 있는 기계에 대한 ‘기본적인이해’가 부족함을 느껴 이책저책(심지어는 정석까지;; 쿨럭) 들추고 있었는데 지금 저에게 꼭 필요한 책이군요;; 꼭사서 한번 읽어보겠습니다 감사합니다(_ _)

  2. 전기과지만 C를 쓸때마다 왠지 벼랑끝을 걷고 있는 느낌인 저에게는 어떨까요????

    알고는 싶은데….
    컴과의 커리큘럼을 따라가기가 불가능한거 같아요…ㅡ.ㅜ;;

    그런데 저책 데이터 구조도 커버 되나요????

  3. 이 책은 어셈블리 수준을 어셈블리 없이 이해하는 걸 도와주는 책이라서 데이터구조 관련된 것이 아주 약간 나오기는 하지만 크게 도움은 안 될듯;; 데이터구조는 원래 한국에서 나온 다른 책도 좋은게 몇권 있잖아.. 🙂

  4. 위성역학 과목을 수강할 때 과제물을 아무생각없이 파이썬으로 작성했다가 낭패를 본 경험이 새록 떠오르네요..ㅡ.ㅜ
    오차가 엄청나서 로직이 맞았더라도 점수를 줄 수가 없다고 하시더라구요..흑…
    그 뒤론 파이썬 쓰려고 하질 않았었는데…^^;;
    지금은 대안언어(?) 한 두개쯤 가볍게 사용해보고프네요..

  5. 오.. 파이썬을 그런 곳에 응용을.. 파이썬도 Decimal이나 gsl 모듈 같은 것을 쓰면 과학 계산에 적합한 정도의 연산이 가능합니다. 흐흐 🙂

  6. 에이콘은 상당히 괜찮은 출판사인데 책의 품질이 나빴다니 안타깝네요.

    설마 진짜 에이콘이 사정이 안 좋아진 것은 아니겠죠? 웹표준 서적도 꽤나 잘 팔렸던 것 같은데 흠;;

Comments are closed.