The Computer Myth - Intro (Part 00)
컴퓨터공학과에서 어셈블리, 운영체제 등을 공부하며 컴퓨터 내부에 대한 이해를 다진다(고 한다.. 내가 들어본적은 없어서..). 하지만 각각의 수업에서 배운 컴퓨터 구조의 부분들을 연결해서 큰 그림을 그려보는 시간은 없다(고 한다). 그래서 메모리, 어셈블리, 운영체제 등을 각자 공부하긴 했지만, 이들이 어떻게 연결되어 컴퓨터라는 복잡한 시스템을 만들어 내는지는 자신있게 안다고 하지 못한다.
하지만 뛰어난 개발자가 되고 싶다면 이는 필수 지식이라고 생각한다. 알면 좋은게 아니라, 필수라는 것이다. 개발자라고 평소에 항상 이 복잡한 개념을 사용하는건 아니지만, 난해한 문제에 부딪혔을 때 원리를 아는 개발자와 모르는 개발자의 차이는 확연히 드러난다. 나도 이 차이를 최근에 몸소 느꼈기 때문에, 개발자로 취직한지 어언 1년만에 진지하게 이 분야를 공부하기 시작했고 이 글을 쓰게 되었다.
복잡한 시스템을 이해하기 위해서는 각각의 부분을 자세히 아는 것 보다, 우선은 각각의 부분들이 언제 등장하고 어느 순서로 연결되는지를 이해하는 것이 중요하다. 즉, 나무보다 숲을 먼저 공부하는 접근법이 필요하다. 그러고나서 필요할 때 각 부분들을 자세히 봐야 왜 그렇게 만들어졌는지 이해가 간다.
The Elements of Computing Systems라는 책이 이 목적을 위해 쓰였다. 수업에서 배운 파편화된 지식들을 연결하여 컴퓨터의 작동 방식을 제대로 이해하기 위해 쓰여진 책이다. 이를 위해 아주 기초적인 게이트(gate)부터 시작해서 Java와 같은 high-level language로 실제 프로그램을 짤 수 있는 완전한 컴퓨터 시스템을 끝까지 함께 만들어본다. 컴퓨터를 직접 만들어보면서 컴퓨터의 작동 원리를 탄탄하게 이해한다.
The Computer Myth라는 이 블로그의 시리즈는 위 책을 토대로 컴퓨터의 전체적인 동작 원리를 한 페이지 안에 정리해가는 과정이다. 매 포스트마다 조금씩 그림을 채워나가면서 마지막에는 한 페이지에 볼 수 있는 컴퓨터 시스템의 지도를 완성하는 것을 목표로 한다. 컴퓨터가 어떻게 이루어진 것인지 가물가물할 때 마다 가볍게 펼쳐보고 이해할 수 있는 길잡이 역할을 할 수 있기를 기대한다.
우리가 살펴볼 주제들을 간단히 그려보면 위와 같다. 컴퓨터 시스템을 크게 Hardware Land와 Software Land로 나누고, 제일 복잡스러운 Hardware Land부터 탐험해나갈 것이다. Hardware Land의 최하단부터 시작해서 Software Land의 최상부까지 천천히 접근해나갈 것이다.
그럼, 게이트 중 최초의 게이트 NAND 게이트부터 시작해보자!
P.S. The Computer Myth라는 제목은 The Charisma Myth라는 책 제목에서 따왔다. 이 책은 카리스마가 뭔지, 카리스마를 만드는 것이 무엇인지를 역사적, 심리적 방면에서 분석한 매우 흥미로운 책이다. 상당히 추천하는 책 중 하나이다.
Leave a comment