컴퓨터 과학은 컴퓨터 자체를 연구하는 학문일까, 아니면 알고리즘과 계산의 더 깊은 원리를 탐구하는 학문일까? 이 분야의 역사와 이론을 통해 그 질문을 살펴본다.

1972년 A.M. Turing Award (opens a new tab) 수상자이자 컴퓨팅 역사상 가장 상징적인 알고리즘 가운데 하나의 발명자인 선구적 컴퓨터 과학자 Edsger Dijkstra는 단언컨대 자기주장이 강한 사람이었다. 예를 들어 특정 프로그래밍 언어들은 그의 분노를 샀다. 그는 한때 Fortran을 “유아적 장애”라고 불렀고, “COBOL의 사용은 정신을 마비시킨다. 따라서 이를 가르치는 일은 범죄 행위로 여겨져야 한다”라고 말했다. 자신의 연구에 컴퓨터를 사용하는 것을 꺼린 이유를 설명하며 그는 이렇게 썼다. “의학 연구자들이 연구하는 질병을 앓아야 하는 것은 아니다.”
컴퓨터 과학을 담당하는 기자로 _Quanta_에 합류하고 얼마 지나지 않은 거의 4년 전, 나는 처음으로 Dijkstra의 거침없는 견해를 접했다. 이 주제는 내게 낯설었다. 나는 물리학 기자였고, 그전에는 물리학자였다. 그리고 나는 곧 대부분의 사람이 “컴퓨터 과학 기자”를 어떻게 이해해야 하는지 모른다는 사실을 알게 되었다. 더 넓은 대중 담론에서 컴퓨터 과학은 사실상 프로그래밍이나 코딩과 동의어지만, _Quanta_에서는 덜 알려진 이론적 측면을 다룬다. 그러다 나는 Dijkstra의 것으로 알려진 수많은 기억할 만한 선언 중에서 가장 마음에 드는 것을 발견했다. 컴퓨터 과학은 천문학이 망원경에 관한 학문인 것보다 더 컴퓨터에 관한 학문은 아니다.
알고 보니 이 비유는 Dijkstra가 처음 한 말은 아닐지도 모르지만, 그는 아마 그 정서에 동의했을 것이다. 내게 이 인용문은 내 보도를 기술 저널리즘과 구분하는 간결하고 도발적인 방식이었다. 그리고 그것이 아첨처럼 느껴졌다는 점도 부인할 수 없다. 이 말은 내가 다루는 분야가 단순한 기술 혁신을 넘어선, 깊고 시대를 초월하는 무언가에 관한 학문이라고 시사했다.
나는 The Quanta Podcast의 한 에피소드를 비롯해 이 비유를 자주 꺼내는 습관이 들었다. 하지만 명확히 말로 표현할 수는 없었던 이유로, 이에 대해 다시 생각하기 시작했다. 망원경을 만드는 옛 동료들을 은연중에 깎아내리는 데 죄책감을 느낀 것뿐이었을까? 아니면 이 비유가 중요한 무언가를 놓치고 있었을까?
나는 이 문제의 진상을 파헤쳐 보기로 했다. 컴퓨터 과학은 컴퓨터에 관한 학문인가? 그렇지 않다면, 정확히 무엇에 관한 학문인가?

나는 아주 오래된 논쟁 속으로 들어가고 있었다. 연구자들은 1930년대에 계산의 수학적 이론을 발전시키기 시작했다. 공학자들은 1940년대에 최초의 범용 전자 컴퓨터를 만들었다. 이후 수십 년 동안 수학과 공학의 연구 전통이 결합하면서 컴퓨터 과학은 독립된 학문 분야로 떠올랐고, 새로운 분야의 성격을 둘러싼 논쟁도 곧 이어졌다. 1967년 저명한 컴퓨터 과학자 Allen Newell, Alan Perlis, Herbert Simon은 학술지 _Science_에 보낸 열띤 독자 투고문 (opens a new tab)에서 자신들의 입장을 밝혔다. 그들은 어쩌면 약간의 짜증을 담아 이렇게 썼다. “현상이 있는 곳에는 그 현상을 기술하고 설명하는 과학이 있을 수 있다. 컴퓨터가 있다. 고로 컴퓨터 과학은 컴퓨터를 연구하는 학문이다.”
Newell, Perlis, Simon은 이름에 걸맞은 과학이라면 자연 현상을 연구해야 한다고 주장한 비판자들을 겨냥해 일부 이 편지를 썼다. 그들은 화학처럼 이미 확립된 과학에서 연구할 가치가 있다고 여겨지는 인공 현상의 사례를 들어 반박했다. Simon은 1969년 저서 _The Sciences of the Artificial_에서 더 나아가 그 구분을 받아들였다. 의도적으로 설계된 인공 시스템에 초점을 맞추는 것이야말로 컴퓨터 과학을 특별하게 만드는 요소라고 그는 주장했다.
1974년 컴퓨터 과학자 Donald Knuth는 컴퓨터 자체보다는 계산의 _과정_을 강조하는 독자적인 관점을 제시했다. 그는 컴퓨터 과학을 컴퓨터가 과업을 수행하는 데 사용하는 정확한 단계별 절차, 즉 알고리즘의 연구 (opens a new tab)로 정의했다. 아이디어를 영어, 중국어 또는 아랍어로 표현할 수 있는 것과 마찬가지로, 알고리즘은 서로 다른 프로그래밍 언어로 구현할 수 있다. 인간도 수학 문제를 풀 때뿐 아니라 물건을 분류하는 일 같은 과업에서도 알고리즘을 사용한다. 이 관점에서 계산의 토대가 되는 수학은 핵심이며, 컴퓨터 자체는 인간에게 시간도 인내심도 없어 해결할 수 없는 문제를 열어 준다는 이유에서만 중요하다.
Knuth의 정의는 내게 매력적이지만, Simon과 동료들이 제시한 정의의 단순함도 부정하기 어렵다. 하지만 이 정의들이나 다른 어떤 정의도 연구자들 사이에서 보편적인 인정을 얻은 듯하지는 않다. 왜 그럴까? 나는 컴퓨터 과학에 관해 제안된 수많은 정의를 광범위하게 기록해 온 (opens a new tab) University at Buffalo의 컴퓨터 과학 및 철학 명예교수 William Rapaport (opens a new tab)에게 물었다. 그는 이견이 궁극적으로 이 분야의 유난히 학제적인 기원에서 비롯된다고 말했다.
“컴퓨터 과학에는 두 부모가 있습니다.” 그가 내게 말했다. “수학적 부모가 있고 공학적 부모가 있으며, 이 둘의 교차점이죠.”
Rapaport은 여전히 이 분야에 일종의 지적 통일성이 있다고 본다. 단지 외투를 걸친 수학과 공학 이상이라는 것이다. 그의 관점에서 컴퓨터 과학은 각 하위 분야가 저마다의 방식으로 다루는 두 가지 중심 질문을 연구한다. “무엇을 계산할 수 있는가, 그리고 어떻게 계산하는가?”
나는 이 틀이 도움이 된다고 느꼈다. 운영 체제 설계나 메모리 관리 연구처럼 컴퓨터 하드웨어와 소프트웨어가 필수적인 컴퓨터 과학 분야가 분명히 있다. 하지만 나는 궁극적으로 연구자들이 실제 물리적 컴퓨터를 한 번도 만질 필요가 없는 이론적 측면에 가장 관심이 있다. 이 이론적 연구에서 컴퓨터는 본질적인 개념적 역할을 할까? Dijkstra의 인용문에 대해 내가 품은 복잡한 감정을 정리하려면 바로 이 점을 조사해야 했다.

Rapaport의 첫 번째 질문에서 시작해 보자. 무엇을 계산할 수 있는가? 이 질문에 이론적 관점에서 답하려면 먼저 계산을 수학적으로 형식화해야 한다. 연구자들이 계산 모형이라고 부르는 것이다. 1930년대에 연구자들은 여러 가지 서로 다른 계산 모형을 제안하고 그 함의를 연구하기 시작했다.
그러다 1937년의 유명한 논문에서 수학자 Alan Turing은 간단한 규칙 집합에 따라 무한한 테이프에 인쇄된 기호를 읽고 쓸 수 있는 가상의 기계에 기반한 모형을 고안했다. Turing과 다른 연구자들은 곧 이 매우 영향력 있는 “Turing 기계” 모형이 다른 연구자들이 제안한 모형들과 수학적으로 동등함을 증명했다. 갑자기 여러 개의 서로 다른 정의 대신, 연구자들은 하나의 보편적인 계산 이론을 갖게 되었다.
그러나 Turing의 계산 이론은 적어도 처음에는 वास्तव 컴퓨터에 관한 것이 아니었다. Turing이 이 획기적인 논문을 썼을 때 그는 범용 컴퓨터를 갖고 있지 않았을 뿐 아니라, 그런 미래의 기계가 어떻게 작동할지 이해하려는 욕구에서 동기를 얻지도 않았다. 오히려 그는 수학 기초론의 중심 문제를 해결하려 하고 있었다. 그는 자신의 기계를 계산을 수행하는 인간의 정신 활동을 모형화하는 방법으로 보았다.
더구나 계산 이론은 우리가 컴퓨터라고 알아보지 못할 것들에도 폭넓게 적용된다. 연구자들은 자연 과정을 계산으로 모형화하고 수학적으로 분석함으로써 자주 연구한다. 그들은 이 계산적 관점을 사용해 물리계의 예측 불가능한 행동을 밝혀냈고, 진화 역학을 분석했으며, 양자 중력의 난제에 도전했다. 그 밖에도 다양한 응용이 있다. 아이러니하게도 Simon이 1960년대에 “인공물의 과학”이라고 칭송한 분야는 이제 자연 세계를 이해하는 데 핵심이 되었다.
University of Cambridge의 이론 컴퓨터 과학자 Tom Gur (opens a new tab)는 “계산을 통해 다른 과학들을 볼 수 있습니다”라고 말했다. “거의 모든 곳에서 드러나는 근저의 논리적 패턴입니다.”
Rapaport의 첫 번째 질문에 대한 답은 Dijkstra의 인용문을 좋은 위치에 놓아 주는 듯하다. 그리고 Rapaport의 두 번째 질문이 있다. 무언가를 계산하기로 했다면, 정확히 어떻게 하는가? 이론 컴퓨터 과학자들에게 답은 알고리즘의 수학에 있다. 1960년대 후반과 1970년대 초반, 그들은 컴퓨터 하드웨어의 모든 세부 사항을 배제한 추상적인 수학적 수준에서 알고리즘이 서로 다른 문제를 푸는 데 필요한 시간을 정량화하는 틀을 구축하기 시작했다.
그들은 곧 네트워크를 통한 경로 계획이나 수의 인수분해처럼 실제 응용에서 생길 수 있는 문제들 사이에 중요한 질적 차이가 있음을 깨달았다. 원칙적으로 이 모든 문제는 알고리즘으로 풀 수 있었다. 하지만 영리한 알고리즘이 있어 빠르게 해답을 낼 수 있는 문제는 일부뿐이었다. 다른 문제들에서는 알려진 알고리즘이 몹시 느렸다. 이런 차이의 근원을 밝히려는 시도는 서로 다른 문제의 고유한 난이도를 연구하고 현대 암호화 체계의 기반을 제공하는 이론 컴퓨터 과학의 하위 분야, 계산 복잡도 이론의 시작을 알렸다.
Santa Fe Institute의 이론 컴퓨터 과학자 Cristopher Moore (opens a new tab)는 “수학 문제에는 그것을 푸는 일을 질적으로 더 쉽거나 어렵게 만드는 근본 구조가 있습니다”라고 말했다. “컴퓨터가 얼마나 빠른지의 문제가 아니며, 여러분이 얼마나 영리한지의 문제도 아닙니다.”
수학이 어떤 의미에서는 현실의 언어라면, 이 숨은 구조를 지도처럼 밝혀내는 일은 “우주의 법칙을 발견하는 것 같은” 느낌을 줄 수 있다고, 내가 몇 년 전 복잡도 이론에서 가장 유명한 미해결 문제를 다룬 머리가 어지러울 만큼 난해한 기사를 위해 이야기했을 때 Canada의 Simon Fraser University 소속 복잡도 이론가 Valentine Kabanets (opens a new tab)는 말했다.
복잡도 이론의 후속 발전은 계산과는 더 멀어 보이는 방향을 가리켰다. 한 사례로 Gur은 1980년대와 1990년대에 복잡도 이론에서 등장한 수학적 증명의 새로운 개념을 들었다. 증명을 상호작용적 과정으로 재구성함으로써, 이론 컴퓨터 과학자들은 어떤 명제가 참인 이유에 대해서는 아무것도 드러내지 않고도 그것이 참임을 증명할 수 있으며, 일부 증명이 올바른지는 극히 작은 조각 몇 개만 확인해서 검증할 수 있다는 사실을 발견했다.
Gur은 “우리는 갑자기 완전히 새로운 유형의 질문을 생각해 냅니다”라고 말했다. “계산을 훨씬 뛰어넘는 무언가를 말하는 것이죠.”
내게 이 모든 것은 컴퓨터 없는 컴퓨터 과학에 대한 설득력 있는 비전으로 합쳐진다. Quanta 자문위원회 위원이기도 한 University of Texas, Austin의 이론 컴퓨터 과학자 Scott Aaronson (opens a new tab)은 “여기에는 수백 년 전에도 물을 수 있었던 근본적인 질문들이 있었습니다”라고 말했다. “그저 아무도 그것들을 물어볼 생각을 하지 못했을 뿐입니다.”
물론 그것은 또 다른 질문을 낳는다. 왜 아무도 물어보지 않았을까?

적어도 한 사람은 그 근본적인 질문들을 물어볼 생각을 했다. Analytical Engine이라 부른 범용 계산 기계를 구상한 19세기 박식가 Charles Babbage는 자서전에서 자신의 새 기계에는 그에 걸맞은 새로운 알고리즘 이론이 필요하리라고 추측했다. 그는 이렇게 썼다. “그 도움으로 어떤 결과를 구하려 할 때마다 이런 질문이 생길 것이다. 어떤 계산 과정을 거쳐 기계가 이 결과에 가장 짧은 시간 안에 도달할 수 있는가?”
Babbage는 끝내 Analytical Engine을 완성하지 못했고, 그 중요한 질문을 정확히 어떻게 다룰 계획이었는지도 분명하지 않다. 아마 그는 기계 설계의 기술적 세부 사항이 어떤 방법을 다른 방법보다 빠르게 만들 수 있다고 생각했을 것이다. 그가 복잡도 이론가들이 이후 발견한 풍부한 수학적 구조와 비슷한 무언가를 예상했다는 증거는 없다.
하지만 내게는 바로 그것이 핵심인 듯하다. 왜 어떤 문제에는 빠른 알고리즘이 없는 것처럼 보이는가를 묻는 복잡도 이론의 중심 질문은 처음에는 그다지 심오해 보이지 않을 수 있다. 그 깊이는 탐구하기 시작할 때에만 드러난다. 그리고 1960년대에 연구자들이 실제 컴퓨터를 가지고 실험하기 시작하고서야 이 질문은 탐구할 가치가 있어 보였다.
나는 이것이 결국 컴퓨터의 역할을 축소하는 컴퓨터 과학의 그림에서 빠져 있는 요소라고 생각한다. 역사적 기록에서 깊은 이론적 질문들은 더 나은 기계를 만드는 실용적 질문들과 흔히 얽혀 있다.
이 분야의 학문적 정체성 (opens a new tab)에 관한 책의 저자이자 University of Eastern Finland의 컴퓨터 과학자인 Matti Tedre (opens a new tab)는 통상적으로 이해되는 Dijkstra의 인용문을 좋아하지 않는다. 그럼에도 천문학과의 비교는 다른 면에서는 적절할 수 있다.
Tedre는 “Dijkstra는 전적으로 옳습니다. 다만 그는 천문학에서 망원경이 지니는 중요성에 관해서는 틀렸습니다”라고 말했다. “망원경이 없었다면 우리는 우주에 대해 아무것도 알지 못했을 겁니다.”
컴퓨터 과학의 범위를 넘어, 여기에는 과학적 진보 전반을 생각하는 방식에 관한 교훈이 있다. 한 가지 통상적인 견해에 따르면 순수과학의 돌파구는 기술 발전을 촉발한다. 양자물리학이 트랜지스터로 이어진 일, 또는 상대성이론이 GPS를 가능하게 한 일을 생각해 보라. 컴퓨터 과학의 역사는 심오한 것과 실용적인 것 사이에 더 미묘한 상호작용이 있음을 시사하며, 이는 다른 학문 분야에서도 유사한 사례를 찾을 수 있다. Aaronson은 무질서의 척도인 엔트로피가 시간이 지나며 증가하는 경향이 있다고 말하는 열역학 제2법칙을 예로 들었다.
그는 “이는 아마도 우주 전체의 진화에 대해 말할 수 있는 가장 근본적인 사실일 것입니다”라고 말했다. “그런데도 사람들이 증기기관을 만들기 전까지는 아무도 생각해 내지 못한 것이죠.”
또는 Massachusetts Institute of Technology의 복잡도 이론가 Ryan Williams (opens a new tab)의 말처럼, “실무에서 충분히 흥미로운 문제는 위대한 이론적 질문을 낳는다.”
