[책] 프로그래밍 발달사, '우리, 프로그래머들'

로버트 C. 마틴

by 취한하늘

@ 본 서평은 출판사로부터 책을 제공받아 읽고 작성한 서평입니다. 책 외에는 제공받은 것이 없습니다.


불과 몇 년 전의 일이다. 프로그래머의 수요가 폭증한 적이 있다. 여러 회사들이 프로그래머를 대규모로 채용했고, 그래서 갑자기 프로그래머의 몸값이 크게 올랐다. 프로그래머가 아닌 사람들이 프로그래머가 되겠다고 학원을 다닐 정도로 프로그래머에 대한 전망이 좋았다. 그런데 몇 년이 지난 지금은 프로그래머의 위기가 거론되고 있다. 프로그래머라는 직업이 없어지지는 않더라도 프로그래머의 숫자는 크게 줄어들 수 있다는 것에 많은 사람들이 동의하고 있다. 세상에는 여러 직업이 있다. 그런데, 프로그래머만큼 극적인 변화를 겪는 직업은 흔치 않은 것 같다. 20세기 후반과 21세기 초반의 짧은 시기에 시대를 상징하는 직업이 되었다가, 이제는 사라질 걱정을 하는 직업이 되었다.


어쩌면 정말로 프로그래머가 더 이상 필요하지 않은 시대가 올 수도 있다. 하지만, 프로그래머들이 이룩해 놓은 것은 사라지지 않는다. 단순한 계산기부터 시작해서, 문서 작성기, 게임, 이미지와 영상들, 인터넷, 모바일 애플리케이션, 그리고 인공지능까지. 비록 프로그래머의 전성기는 지났다 하더라도, 프로그래머들이 만들어 놓은 ‘문명’은 찬란한 꽃을 피우고 있고, 앞으로 계속 발전해 나갈 것이다.


그런데, 프로그래머들의 찬란한 업적은 갑자기 발생한 것이 아니다. 폭발적인 성장에는 그 바탕을 이루는 것들이 있다. 생각하지 못했던 것을 생각해 내고, 안될 것이라고 생각한 것을 시도하여 이루어내고, 여기저기 흩어져 있는 것을 모아 표준을 만들어 내고, 그렇게 선지자들이 단단하게 쌓아 올린 바탕이 있었기 때문에 20세기 후반부터의 폭발적인 성장이 가능했던 것이다. 이 책 <우리, 프로그래머들>은 바로 그 과정을 다루고 있다.


도구를 이용해서 일을 더 쉽게 만들려는 것은 인류가 아주 오래전부터 해오던 일이다. 그런데, 증기기관이 발명된 이후, 사람들은 더 높은 수준의 ‘자동화’에 관심을 갖게 된 것 같다. 이것은 계산의 영역에서도 마찬가지여서, 19세기부터 자동화된 계산에 대한 관심과 연구가 많이 이루어진다. 그것이 성과를 만들어내고 가능성을 보여주었고, 그것을 20세기 초반의 천재들이 이어받아 컴퓨터와 소프트웨어의 가장 중요한 바탕을 만들어 낸다.


대학교에서 프로그래밍을 공부한 사람들은 이런 이야기를 어렴풋이 들어봤을 것이다. 최초의 컴퓨터와 소프트웨어에 대한 이야기를 잠깐 지나가듯이 배운다. 하지만, 자세한 이야기를 들어 볼 기회는 없었다. 프로그래머들에게는 마치 신화나 전설처럼 들리는 이야기들, 그런 이야기를 제대로 읽어볼 수 있는 책이 <우리, 프로그래머들>이었다.


이 책은 완벽하게 ‘프로그래머를 위한 책’이다. 소재가 프로그래밍이기도 하지만, 저자 자신이 프로그래머를 대상으로 책을 썼다. 책에서도 분명하게 밝히고 있는데, “이 이야기에 기술적인 내용을 함께 담은 이유는 여러분이 프로그래머이기 때문입니다. 이들이 마주했던 기술적 도전은 같은 프로그래머만 진정으로 이해할 수 있습니다. 저는 여러분이 이 위대한 인물들의 업적을 같은 길을 걷는 동료로서 깊이 공감하고 진심으로 전경하게 되기 바랍니다.”라고 말하고 있다.


‘꼭 프로그래머만 읽어야 하나’라고 반문할 수도 있다. 그런데, 이 책에는 프로그래머라서 이해할 수 있는 내용이 많이 있다. 그중에서 그래도 이해하기 쉬운 내용을 발췌하자면, “몬테카를로 컴파일러에 대한 니가드의 아이디어는 두 가지 유형의 데이터 구조에 기반을 두고 있습니다. 하나는 커스터머라 불리는 구조로 여러 속성 데이터를 수동적으로 담고 있는 저장소입니다. 다른 하나는 스테이션으로 내부에 큐를 가지고 있으며, 큐에 대기하고 있는 커스터머를 처리한 후 다른 스테이션의 큐로 넘겨주는 역할을 합니다. 그리고 커스터머가 스테이션의 큐에 삽입되는 모든 과정은 이벤트로 트리거되는 방식이 사용됩니다. 이처럼 이벤트를 기반으로 커스터머와 스테이션이 상호 작용하는 구조를 이산 이벤트 네트워크라고 불렀습니다” 정도다. 이 정도 내용이 어렵다면 이 책을 읽는 것은 쉽지 않을 것이다.


프로그래머를 위한 책이긴 한데, 특히 올드 프로그래머들에게 반가운 책이 아닐까 싶다. 1980년 이전의 이야기를 자세하게 다루고 있고, 올드 프로그래머들에게 익숙한 개념이 많이 등장하기 때문이다. 컴파일러, 포인터, 디자인 패턴 같은 개념들이 예전에는 필수 덕목이었지만 지금의 프로그래머들에게는 필수가 아닐 것 같다. 알고리즘의 속도와 메모리 사용량에 매우 민감했던 것도 올드 프로그래머들의 특징이다. 물론, 지금도 속도와 메모리 사용량이 중요하지만, 그 스케일이 많이 달라졌다. 이제는 0.1초와 1KB가 중요하지는 않으니까 말이다.


<우리, 프로그래머들>은 프로그래밍과 프로그래머의 역사를 즐겁게 돌아볼 수 있는 책이다. 프로그래머가 아닌 사람에게는 읽기 어렵겠지만, 반대로 프로그래머라면 흥미롭게 느껴지는 내용이 많이 있다. 우리가 이미 익숙하게 사용하고 있는 도구와 개념들이 어떻게 탄생하고 발달해 왔는지를 보는 것은 참 재미있는 경험이었다. 더불어 이 책의 번역도 무척 칭찬하고 싶다. 책을 읽는 내내, 마치 처음부터 한국 사람이 쓴 책인 것처럼 느껴졌을 정도로, 번역 품질이 매우 훌륭했다.


<스타워드 에피소드 7>은 올드 팬들을 위한 영화였다. <스파이더맨 홈 커밍>도 올드 팬들을 위한 배려가 돋보였던 것 같다. 개인적으로 <우리, 프로그래머들>에서도 그런 느낌이 들었다. 프로그래머로서 오랜 경력을 쌓아온 사람일수록, 어쩌면 이 책을 더 재미있게 읽을 수 있지 않을까 하는 생각이 들었다.


교보문고: https://product.kyobobook.co.kr/detail/S000218933697


image.png


keyword
매거진의 이전글[책] 배움에 관한 가르침, '무지의 즐거움'