프로그래밍 환경이 고도화 됨에 따라 프로그램을 만들기가 옛날에 비해 비교할 수 없을 정도로 쉬운 일이 되었다. 더욱이, 요즘은 따로 코딩을 하지 않고도 간단한 UI/UX를 갖춘 웹 서비스 정도는 간편하게 만들 수 있으니 말이다. 하지만, 단순히 프로그램을 만든다는 행위에 사람들이 집중을 하고 있을 뿐, 정작 중요한 프로그램이 어떻게 해석되어 어떻게 디바이스의 출력 장치를 통해 우리 눈에 비치는지는 간과하고 있는 것이 지금의 현실이다.
옛날 필자가 전산학을 공부할 시절에는 기본적인 컴퓨터의 구조와 이에 관련된 학문에 관한 학습이 굉장히 중요했던 시대였다. (학교를 떠난 지 이제는 10년이 훨씬 넘었기에 요즘은 어떤 것들을 가르치는지 잘 모르는 상태이긴 하다.) 하지만 요즘은 전산학 기초 지식보다는 당장의 프로그램을 만들고 웹 서버나 안드로이드 혹은 iPhone 등의 단말에서 동작하는 서비스를 개발하는 것에 학문이 집중되는 경향이 있어 보인다.
왜 전산학 기초 지식이 중요하고, 왜 컴퓨터가 프로그램을 어떤 식으로 해석해서 사용자에게 이를 노출시켜주는지 그 일련의 과정을 심도 있게 학습해야만 하는 이유는 위에서 요즘 집중하고 있는 프로그램을 좀 더 프로그램답게 만들기 위함이다.
프로그램만을 단순히 만드는 것은 빠른 시간 내에 터득이 가능하다. 왜냐하면 유튜브를 비롯한 수많은 채널에서 이와 관련된 강의나 캠프 등을 대중에게 전달하고 있기 때문이다.
그럼에도 많은 수의 IT 기업들이 개발자 구인난에 시달리고 있다. (물론 코로나 시국 이전에) 그 이유는 그들이 찾는 IT 인재들은 단순 프로그램을 만들 줄 아는 사람을 찾는 것이 아니기 때문이다. 그들이 원하는 인재는 프로그램 전반에 걸친 지식을 심도 있게 알고 이에 맞춰 프로그램을 만들 줄 아는 능력을 갖춘 개발자를 찾고 있기 때문이다.
이 책, '컴퓨터 시스템 딥 다이브'는 이러한 전산학 기초에 해당하는 컴퓨터와 그 컴퓨터의 근간을 이루는 시스템의 총총을 다룬 책이라 할 수 있다.
【책의 구성】 "컴퓨터 시스템 딥 다이브"의 구성은?
이 책은 상당히 두꺼운 책이다. 그렇기에 한 번에 학습하기엔 어려운 부분이 있다.
책이 두껍다는 것은 내용이 많다는 것을 의미한다. 그렇다. 이 책은 챕터가 무려 15개나 되는 바이블 책인 것이다.
각 챕터의 구성은 챕터에 해당하는 내용을 소개하고 이를 정리한 후, 자세한 예와 기술적 개괄을 소개한 후 이에 대한 심도 있는 설명으로 구성되어 있다.
그 후, 각 챕터 마지막에는 해당 챕터에서 다루었던 총총에 대해서 정리하고 있다.
챕터 5 : 컴퓨터 아키텍처
이 챕터를 통해 필자는 이 책이 정말 좋은 책임을 한 번에 직감할 수 있었다. 이제껏 수많은 그리고 다양한 컴퓨터 구조 관련 전공서를 리뷰 및 탐독하였던 필자였으나, 단 한 번도 여성 개발자, 여성 공학도에 대해 이 책만큼 자세히 술 한 책을 본 적은 없었기 때문이다. (어쩌면 필자가, 공부를 게을리했기에 이 부분을 간과했을 수도 있다.)
이 챕터에는 다양한 여성 공학도들이 등장한다. 코볼 언어와 컴파일러를 만들었던 공학자, 그리고 세계대전 당시 탄도의 궤도를 계산하기 위해 분투하였던 여성 공학자들.. 항상 남성 중심의 프로그래머, 전산학도, 전기-전자 학자의 이름을 외워왔던 필자에게 이만큼 새로운 지적 호기심을 자극하는 내용은 참으로 오랜만이었다.
그렇기에 이 책을 구매하신 모든 공학도, 혹은 전산학도 분들이라면 꼭 꼼꼼히 읽어보시길 권한다.
챕터 7 : 64비트 X86 어셈블리
이제는 대부분의 개발자들이 어셈블리 수준의 저수준 언어는 모른 체 개발에 임하고 있다. 어찌 보면 시대가 그만큼 많이 진보한 것이라 할 수 있고, 개발이라는 학문이 그만큼 진취한 것이라 할 수 있다.
다만, 그럼에도 어셈블리 언어를 알아야 하는 이유는 우리가 만든 고수준의 언어가 관련 CPU에서 제공하는 instruction 기반의 어셈블리어로 컴파일되어 바이너로 뽑히기 때문이다.
그렇기에 어셈블리 어를 잘 알고 그 원리와 흐름을 이해한 개발자라면 본인이 만든 프로그램의 최적화 포인트와 동작 방식에 대해서 추상적으로나마 유추하고 추후 최적화 진행시 그 지식을 활용할 수 있다.
하여 이제는 대부분의 학과 과정 혹은 개발자 양성과정에서 위의 학문이 빠져 있지만, 심도 있게 학습하길 권장한다.
이 챕터에서는 어셈블리어를 이용한 개발 방법과 명칭, 용어 등등 기본적인 내용과 그 심화 내용이 정리되어 있다.
【 컴퓨터 시스템 딥 다이브를 읽고 나서 】
옛날 필자의 꿈은 컴퓨터의 근본을 이해하는 것이었다. 내가 입력한 키워드가, 내가 만든 코드가 어떻게 컴퓨터에서 해석되어 화면으로 출력되는지 그 과정이 너무나 궁금했다.
하지만 30년 전에는 지금처럼 한국에 전산학이라는 분야가 많이 활성화되어있진 않았다. 하여 집에 막 들어온 Dos 기반의 컴퓨터에서 정말 많은 것들을 조작해 보고 이것저것 실험해 보고 그러다 컴퓨터가 먹통이 되는 난감한 상황을 많이 만들었던 기억이 새록새록 하다.
만약 그때 지금처럼 전산학에 대한 지식을 얻을 장소가 좀 더 용이했다면, 자료가 많았다면 좀 더 빨리 지금 수준의 지식을 획득할 수 있었을 텐데, 하며 간혹 아쉬워할 때가 있다.
지금은 당시에 비하면 비교도 할 수 없을 만큼 다양한 미디어 매체와 채널을 통해 관련 지식을 습득할 수 있는 시대가 되었다. 그렇기에 컴퓨터 학문에 막 입문하려는 초보 개발자들, 필자처럼 컴퓨터의 근본과 동작 원리를 이해하길 꿈꾸는 개발자들이 공부하기에 정말 최고의 시대라 할 수 있다.
하루에 너무 많은 것을 이루려다 보면 그르치기 쉽다. 이번에 리뷰한 책이 그렇다. 그렇기에 차근차근 곱씹으며 컴퓨터 시스템 학문이 주는 그 아름다움과 깊이를 음미하시길 권한다.
#본 도서는 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.