컴퓨터 과학의 고전

ko생성일: 2025. 10. 29.갱신일: 2025. 10. 30.

‘고전’의 진짜 의미를 짚고, 컴퓨터 과학의 기원과 거장들을 배우는 것이 왜 오늘의 개발자를 더 나아지게 만드는지에 대한 시리즈 서문.

Image 5

요즘 우리는 ‘클래식’이라는 단어를 꽤 거리낌 없이 남용합니다. ‘클래식 록’과 ‘클래식 자동차’에 대해 말하고, 심지어 Active Server Pages의 원래 구현을 ‘클래식 ASP’라고 부를 엄두까지 냅니다.

그래서 무언가를 클래식이라고 부를 때, 우리는 대개 그것의 원형이거나 ‘좋았던 옛날’을 떠올리며 이야기합니다. 하지만 그것이 이 단어의 본래 의미는 아닙니다.

웹스터 사전에 따르면, 클래식이란 “오래도록 탁월함이 지속되는 작품”입니다. 시간이 흘러도 가치를 견디는 무언가죠. 그 정의에 따르면 ‘클래식 ASP’는 해당하지 않습니다.

제가 ‘컴퓨터 과학의 고전’이라고 말할 때도 이 의미를 염두에 두고 있습니다. 분야 자체는 비교적 젊지만, 컴퓨터 과학에는 고전이 부족하지 않습니다. 운영체제, 소프트웨어 개발, 네트워킹, 프로그래밍 언어의 많은 기초 개념과 원리가 1930년대부터 1970년대에 이르기까지 처음 정식으로 정식화되었습니다. 우리는 그것들을 너무 당연하게 여깁니다. 매일 무의식적으로 사용하죠. 그리고 그중 많은 것들의 기원이 어디인지 아마 잘 모를 것입니다.

정보 은닉이라는 개념을 처음으로 명확히 제시한 사람이 누군지 아시나요? 람다 계산을 만든 사람은요? 튜링 머신의 발명자는? (좋아요, 이건 아실 수도 있겠네요.) LISP의 창시자는? 구조적 프로그래밍 운동의 선두 주자들은 누구였을까요?

“그게 왜 중요하죠?”라고 물으실지도 모릅니다. 그럴 수 있습니다. 이런 것들을 하나도 몰라도 훌륭한 ‘록스타’ 프로그래머일 수 있죠. 굳이 필요성을 못 느낄 수도 있습니다. “그런 역사 타령 안 해도 나는 잘합니다, 정말로요!”

그럴지도요. 하지만 장인의 세계에는 재미있는 공통점이 있습니다. 그들은 자신들의 기술을 사랑하고, 그 기술의 역사도 사랑합니다. Niklaus Wirth가 Pascal을 만들었다는 사실을 아는 것이 곧바로 더 나은 프로그래머로 만들어 주지는 않습니다. 하지만 더 나은 프로그래머가 되고자 하는 그 열정은, 오늘의 우리를 있게 한 프로그래밍의 뿌리와 기념비적인 사상가들, 그리고 그들의 사유를 알고 이해하고자 하는 마음으로도 이어집니다.

새삼스러운 이야기도 아닙니다. 오늘날의 위대한 골퍼들은 과거의 위대한 골퍼들을 알 뿐 아니라, 역사에 남은 위대한 라운드와 수많은 환상적인 샷들까지 꿰고 있습니다. 타이거 우즈가 US 오픈에서 여유 있게 우승으로 향하던 길, 페블비치 17번 홀에서 Jack Niklaus가 날린 기적의 1아이언 샷을 모를까요? 당연히 압니다. 그는 ‘골든 베어’에게서 배우기 위해서만이 아니라, 그 샷 자체를 감탄하며 수없이 영상을 반복해 보았을 겁니다. (1아이언이라니! Lee Trevino는 이렇게 말한 것으로 유명하죠. “번개가 치는 날 코스에 있다면, 1아이언을 하늘로 들어 올려 보세요. 신조차 1아이언은 못 맞춥니다.”)

그리고 역사를 아는 것, 역사를 만든 사람들을 아는 것에서 그치지 않습니다. 우리는 그들에게 배웁니다. Donald Knuth, Edsgar Dijkstra, Dave Parnas, C.A.R. Hoare, Barbara Liskov, 그리고 숨이 멎을 만큼 빼어난 수많은 독창적 사상가와 실천가들의 발자취를 따르는 것이 우리에게 큰 도움이 됩니다. 그들은 우리에게 프로그래밍하는 법을 가르쳐 줄 수 있습니다. 사고하는 법을 가르쳐 줄 수 있습니다. 우리를 더 나은 사람으로 만듭니다.

이 글은 ‘컴퓨터 과학의 고전’ 시리즈의 첫 번째 글입니다. 이 시리즈에서 저는 우리 분야를 만든 사람들과 그들이 남긴 몇몇 논문을 여러분께 소개하고자 합니다. 물론 모든 이가 컴퓨터 과학과 프로그래밍 기술에 같은 수준의 공헌을 한 것은 아닙니다. 하지만 그들 모두에게는 우리를 더 나은 실천가로 성장하게 할 배움이 있습니다.

결국 우리의 목표도 그거 아닙니까? 의도적으로 더 나아지는 것.