<밑바닥부터 만드는 컴퓨팅 시스템> 후기

이 책은 컴퓨터의 모든 것이 어떻게 동작하는지에 대한 완전한 이해를 시키려는 야심찬 책입니다. 각각의 챕터는 HDL의 기본 로직 게이트를 쓰는것부터 CPU와 어셈블러를 거쳐, 테트리스 게임 정도의 어플리케이션까지 전체시스템의 작은 부분을 빌딩하는것을 포함하고 있습니다. - TeachYourselfCS 中


chapter


밑바닥부터 만드는 컴퓨팅 시스템은 컴퓨터 구조 최고의 입문 책입니다.

이 책은 각 챕터에서 독자를 위한 개념 설명과 간단하고 명확한 명세, 그리고 직접 만들어 볼 수 있는 환경을 제공합니다.

각 챕터를 따라가다보면 어느순간 밑바닥(NAND gate)부터 끝(OS)까지 완성되어 있는것을 볼 수 있습니다.

  • 사실 마지막에 만드는 OS는 라이브러리에 가깝습니다.

읽는다면

읽는것을(따라해보는것을) 강추합니다. 1~5장은 더더욱 강추합니다.


특히, 아래와 같은 의문이 드는 (저와 같은) 분들에게 추천드립니다.

  • ‘왜 컴공 시간에 AND, OR, NOT 게이트를 배울까?’
  • ‘컴퓨터가 이러한 논리회로로 돌아간다는데 잘 모르겠는데?’
  • 한번 밑바닥부터 다 만들어보고 싶다.

만약 바로 시작하는게 어렵다고 느껴진다면, CODE를 먼저 읽는것을 추천드립니다.

  • CODE가 개념 책이라면 <밑바닥부터 만드는 컴퓨팅 시스템>은 실습책입니다.
  • CODE는 같은 내용을 글로 풀어서 설명해놓았습니다.

좋았던 부분

gate

XOR 게이트(좌측)로 시작해서 16-bit 6-opcode CPU(우측)을 완성한 모습 - 회로도 中


1~2장에서 여러 게이트(NAND, XOR, MUX)와 가산기, 레지스터를 명세에 따라 만듭니다.

3장에서 앞 내용을 바탕으로 ALU와 PC를 만듭니다.

이때 4장에서 갑자기 (간단한)어셈블리 언어를 배우고 몇가지 프로그램을 만든 후

5장에서는 (앞에서 배운) 어셈블리를 실행 가능한 CPU를 만들게 됩니다.

이때, (1~4장 동안 명세에 따라 구현만 신경쓰다) 배웠던 내용이 합쳐지며 추상화된 각 계층을 종합적으로 이해해보는 재밌는 경험을 했습니다.

기계어는 하드웨어와 소프트웨어가 만나는 심오한 인터페이스다. 프로그래머의 ‘추상적 생각’이 기호로 표현되어 하드웨어에서 실행되는 지점이기 때문이다 - ccss17 中

아쉬웠던 부분

7~8장 가상머신은 제공된 가상머신 시뮬레이터로 이해가 가능했지만…

10~11장 컴파일러는 지금까지 모든 챕터와 다르게 명세가 명확하지도 않았고, 바로 설계하거나, 만들 수가 없었습니다.

  • 컴파일러를 한번도 만들어본 적이 없기 때문에 어떻게 접근해야하는지 몰랐고, 다른 사람의 코드를 보면서 따라 만들었습니다.
  • 따라서 후반부에서 직접 고민하면서 만들고 배우는 과정이 없어졌습니다.

마지막으로

옮긴이와 글쓴이의 소개글을 첨부하고 마치겠습니다.


컴퓨터의 작동원리를 종합적으로 이해하지 못하는 상황에서… 혼자 하드웨어부터 소프트웨어까지 만들던 시절로 돌아간다.

따로따로 내용을 배우기보단, 처음부터 끝까지 만들어보는 경험이 훨씬 직관적으로 이해가 된다.

여행 중 점점 모양을 갖추는 컴퓨터를 감상하는 일은 정말 신나는 일


관련 글


Written by@Juna
I love Node.js