제1장에서 저자는 ‘프로그래머에게 CPU란 무엇인가’라는 질문으로 시작한다.
CPU는 ‘컴퓨터의 두뇌’라는 역활을 하는 중요한 장치라고 알고 있고, 뭔가 복잡하고 중요한 역활을 할 것이라고 생각했는데, 데이터 전송을 명령하고 연산이나 점프 명령을 내리고 호출하거나 리턴하는 명령하는 내리는, 생각보다 단순한 역활을 수행하고 있더군요. 그리고 이를 이해하는데 큰 어려움도 없었습니다. 저자가 복잡한 기술 용어들도 조금씩 풀어쓰고 관련 용어에 대한 주석과 동작 과정을 그림과 도표로 자세히 알려주고 있어 좀 더 쉽게 이해를 하게 된 것 같습니다
이어지는 2장은 ‘데이터를 2진수로 상상해 보자’라는 주제다.
2진수에 대한 부분은 학창시절에도 배워서 쉽게 이해할 수 있을거라 여겼는데, 후반부의 논리 연산 부분에서는 생각보다 어렵게 느껴졌지만, 일단 기본 의미만 알고가자는 정도로 넘어가 본다. 그런데 이어지는 3장의 제목을 보고 복병을 만난것 같은 느낌이 든다. 3장에서는 컴퓨터가 소수점 계산을 왜 틀리는지를 다룬다. 놀라웠다. 완벽하게 정확할 거라 믿었던 컴퓨터가 실제로는 근사치 계산을 한다는 사실을 처음 알았던 것이다. 그 이유는 10진수를 2진수로 변환할 때 소수점 이하의 값을 제대로 변환하지 못한다는 것이다. 그래서 근사치로만 계산이 된다는 것이라 한다. 어려워!!!
4~6장은 메모리와 저장장치 그리고 데이터 압축의 원리를 다루고 있는데, 먼저 4장은 ‘네모난 모양의 메모리를 둥글게 사용하기’라는 재미있는 제목으로 시작하는데, 네모난 모양의 물리적인 메모리를 프로그램에서 링 버퍼라 불리는 둥글게 생긴 논리구조로 처리하게 되는 과정을 재미있게 표현한 것 같습니다.
5장은 ‘메모리와 디스크의 친밀한 관계’를 담고 있는데, 프로그램이 실행될 때 데이터가 어떻게 메모리에 올라가고, 저장장치와 어떤 관계를 갖고 있는지 알려주면서 메모리를 효율적으로 사용하기 위한 프로그래밍 기법들에 대한 소개도 다루고 있다.
6장은 데이터 압축 원리를 설명하는데 5장까지 설명하고 있는 프로그램의 동작 원리와는 조금 주제가 다른 부분인데, 저자도 조금 쉬어가자는 의미로 구성을 하였다고 하며 파일압축과 관련된 몇 가지의 기법들을 소개한다.
7장은 ‘프로그램은 어떤 환경에서 작동하는가’인데, 여기서 말하는 ‘환경’은 단순한 컴퓨터의 하드웨어만을 뜻하지 않고, 소프트웨어와 어떤 관계를 맺으며 돌아가는지를 설명하는 장으로 Windows로 대표되는 OS에 대한 소개와 이를 이용하는 애플리케이션 그리고 BIOS와 부트스트랩에 대한 기본적인 개념을 다루고 있다.
8장 ‘소스 파일로 실행 파일을 만들기까지’는 코딩 초보자라면 반드시 읽어야 할 부분이라고 생각된다.
보통 “코드를 작성하면 프로그램이 된다”고 단순히 생각하지만 실제로는 컴파일러가 소스 파일을 기계어로 번역하고 링커가 필요한 파일을 묶어 실행가능한 파일을 만드는데, 이 과정을 단계별로 설명을 하는 장이기에 필히 읽어봐야 할 부분이다.
9장은 OS와 애플리케이션의 관계를 다루는데, 하드웨어를 제어하는 OS와 이를 제대로 활용하는 애플리케이션과의 관계를 설명하고 있는데 OS의 기능에 대한 좀 더 심층적인 이해를 바탕으로 몇 개의 기본 애플리케이션의 진행 과정을 설명하고 있다.
10장은 어셈블리어를 통해 프로그램의 진짜 모습을 보여주는데 다른 장에 비해서 설명하는 부분도 많아 초보자인 나에게는 가장 어렵게 느껴지는 부분이다. ADD나 MOV 같은 다양한 연산코드를 소개하고 있는데다 함수와 변수에 대한 구조 등 프로그램이 작동하는 구조를 보여주고 있어 어렵게 느껴진 것 같다. 어째든 이 과정 또한 프로그램을 이해하는 과정이라고 생각된다.
11장은 하드웨어를 제어하는 방법을 소개하는데 이전에 다룬 CPU나 메모리 장치가 아닌 모니터나 키보드 그리고 프린트 등의 입출력 장치를 제어하는 과정을 소개하고 있다.
마지막으로 12장은 컴퓨터를 학습’시키는 방법 이라는 주제로 파이션이라는 프로그래밍 언어를 통해 컴퓨터를 학습시키는 방법을 소개하는데 죄근에 보편화된 인공지능 즉 AI의 초기 학습과정을 소개하는 것으로 본문의 내용을 마무리하고 있으며, 이 책에 담긴 프로그램 대부분이 C언어를 담고 있어 이에 대한 기본 구문을 소개하고 있고 마지막 12장에 소개된 파이션이라는 프로그램을 부록으로 소개하는 것으로 마무리하고 있다.
프로그램은 어떻게 작동하는가
책 표지에 '문과생도 쉽게 배우는 컴퓨터 프로그램 작동 메커니즘'이라는 표지글처럼 이 책은 프로그램의 어떻게 작동되는지에 대해 하드웨어의 기본 작동원리부터 시작해서, 소프트웨어 설치후에 사용은 하고 있지만 어떤 용도의 파일인지 알 수 없었던 파일들의 작동원리에 대한 기본적인 개념을 알게되는 시간이었다.