计算机科学需要计算机吗?

内容来源:https://www.quantamagazine.org/does-computer-science-need-computers-20260828/
内容总结:
计算机科学,真的离不开计算机吗?
在公众认知中,计算机科学几乎等同于编程或写代码。然而,在理论计算机科学家的眼中,这个领域拥有更深刻、更超越技术本身的内涵。著名计算机科学家、图灵奖得主艾兹格·迪杰斯特拉曾有一句名言:“计算机科学之于计算机,正如天文学之于望远镜。”——言下之意,这门学科的核心在于算法与计算的数学本质,而非机器本身。
然而,这一看似精辟的类比,在学术界引发了持续数十年的争论。追溯历史,计算理论诞生于20世纪30年代,而通用电子计算机则在40年代才问世。随着数学与工程两大传统在60年代交融,计算机科学作为独立学科应运而生,关于其“学科本质”的辩论也随之而来。1967年,艾伦·纽厄尔、艾伦·佩利斯和赫伯特·西蒙在《科学》杂志撰文,旗帜鲜明地主张:“哪里有现象,哪里就有科学。存在计算机,所以计算机科学就是研究计算机的。”而唐纳德·克努特则在1974年提出另一视角,认为计算机科学的核心是研究“算法”——即解决问题的精确步骤,这与具体的机器无关。
那么,理论计算机科学究竟研究什么?布法罗大学荣誉教授威廉·拉帕波特将其概括为两大核心问题:“什么可以被计算?”以及“如何计算?”这一定义为学科提供了统一框架。就第一个问题而言,理论研究的起点是“图灵机”等数学模型,这些抽象的机器从未被实体制造,却奠定了整个计算理论的基石。更为深远的是,计算理论如今被广泛用于模拟自然现象,从物理系统的不确定性到进化动力学,再到量子引力难题,计算已成为理解自然世界的通用透镜。
第二个问题——如何高效计算——则催生了计算复杂性理论。该领域致力于揭示不同问题在数学层面的内在难度差异。科学家发现,某些问题存在快速算法,而另一些则至今没有高效解法,这种差异并非取决于电脑硬件速度或程序员的技巧,而是问题本身固有的数学结构。来自圣菲研究所的理论计算机科学家克里斯托弗·摩尔指出:“数学问题具有根本性的结构,这使它们在本质上有难易之分。”
更令人惊叹的是,复杂性理论甚至重塑了“数学证明”的概念。通过将证明视为交互过程,研究人员在20世纪80年代发现,可以在不透露任何具体信息的情况下证明一个命题为真,或者仅检查极少量的代码片段即可验证长篇证明的正确性。正如剑桥大学的汤姆·古尔所言:“这些新问题已远超计算的范畴。”
然而,一个关键问题浮现:如此深刻的数学理论,其发展是否真的与计算机无关?历史表明,正是现实中计算机的兴起,才激发了这些理论的诞生。19世纪,查尔斯·巴比奇构思了分析引擎,并预见其会引出“如何以最短时间获得结果”的新问题,但这一洞见在其时代并未开花结果。直到20世纪60年代,研究人员真正开始使用实体计算机时,这类关于算法效率的问题才变得急迫且值得探讨。
东芬兰大学的马蒂·泰德雷指出,迪杰斯特拉的类比虽然正确,却低估了“工具”的重要性:“如果没有望远镜,我们对宇宙将一无所知。”计算机科学的历史揭示了纯科学与应用技术之间更为复杂的互动关系。理论发现推动技术进步的线性叙述过于简化,实际的进程往往是实践需求催生深刻理论。正如麻省理工学院的瑞安·威廉姆斯所言:“实践中足够有趣的问题,最终会催生出伟大的理论课题。”**
从这个角度看,计算机科学的确“不只是关于计算机”,但正是计算机——这台看似普通的机器——让人类得以窥见宇宙中最深奥的逻辑规律。
中文翻译:
计算机科学需要计算机吗?
引言
计算机科学先驱艾兹格·迪杰斯特拉,1972年图灵奖得主,也是计算领域最具标志性算法之一的发明者,向来以观点鲜明著称。某些编程语言曾招致他的不满,例如:他曾称Fortran为“幼儿期的失调症”,并宣称“使用COBOL会摧残心智;因此,教授这门语言应被视为刑事犯罪。”在为自己工作中不屑于使用计算机辩护时,他写道:“医学研究者并不被要求去亲身体验他们所研究的疾病。”
我大约四年前第一次接触到迪杰斯特拉的犀利言论,那时我刚加入《量子》杂志担任计算机科学记者不久。这个领域对我来说是全新的——我之前是物理记者,再之前是物理学家——我很快发现,大多数人不知道该如何理解“计算机科学记者”这个头衔。在更广泛的公众话语中,计算机科学几乎等同于编程或写代码,但在《量子》杂志,我们报道的是这个领域中被了解较少的理论层面。后来我偶然发现了迪杰斯特拉众多名言中我最喜欢的一句:计算机科学与计算机的关系,就像天文学与望远镜的关系一样。
事实证明,这个类比可能并非源自迪杰斯特拉,但他大概会赞同这种观点。对我来说,这句话提供了一种简洁而 provocative 的方式,来区分我的报道与技术新闻。我也无法否认这很令人受用:它暗示我所报道的领域,关乎某种深刻而永恒的东西,超越了单纯的技术创新。
我养成了经常引用这个类比的习惯——包括在《量子》播客的一期节目中——但我也开始对它产生了疑虑,原因我一时说不清楚。我是在为暗讽那些建造望远镜的前同事们感到内疚,还是这个类比确实遗漏了某些重要的东西?
我决定要把这件事弄个水落石出。计算机科学是关于计算机的吗?如果不是,那它究竟是关于什么的?
我踏入了一场由来已久的辩论。研究人员在20世纪30年代开始发展计算的理论数学。工程师在20世纪40年代建造了第一台通用电子计算机。计算机科学在随后的几十年里作为一门独立的学科出现,当时数学和工程的研究传统走到了一起,关于这个新领域本质的争论也随之而来。1967年,著名计算机科学家艾伦·纽维尔、艾伦·珀利斯和赫伯特·西蒙在《科学》杂志上给编辑写了一封言辞激烈的信,表明了自己的立场。“哪里有现象,哪里就可以有一门科学来描述和解释这些现象,”他们写道,语气中或许带着一丝不耐烦。“世上有计算机。因此,计算机科学就是研究计算机的。”
纽维尔、珀利斯和西蒙写信的部分对象,是那些认为任何配得上“科学”之名的学科都必须研究自然现象的批评者。他们用人工现象的例子来反驳,例如化学中那些被认为值得研究的对象。在1969年出版的《人工科学》一书中,西蒙更进一步,欣然接受了这种区分:他论证说,专注于被有意设计的人工系统,恰恰是计算机科学的独特之处。
1974年,计算机科学家高德纳提出了一个不同的观点,强调计算过程本身而非计算机本身。他将计算机科学定义为对算法的研究,即计算机用来完成任务的那种精确的逐步操作程序。算法可以用不同的编程语言实现,就像思想可以用中文、英文或阿拉伯语表达一样。人类也使用算法,不仅用于解决数学问题,也用于像分类物品这样的任务。从这个角度看,计算背后的数学是核心;计算机本身之所以相关,仅仅是因为它们开启了我们人类既没有时间也没有耐心去独自处理的问题。
高德纳的定义对我很有吸引力,但西蒙及其同事提出的那个定义的简洁性也难以否认。然而,无论是这些定义还是其他定义,似乎都没有在研究人员中取得普遍共识。这是为什么?我问了威廉·拉帕波特,他是布法罗大学计算机科学与哲学的荣休教授,曾广泛记录了计算机科学的诸多拟议定义。他提出,分歧最终源于该领域异常跨学科的起源。
“计算机科学有两位父母,”他告诉我。“一位是数学父母,一位是工程父母,它实际上就是这两者的杂交。”
拉帕波特仍然在该领域看到某种知识上的统一性——它不仅仅是披着外套的数学和工程学。在他看来,计算机科学研究两个核心问题,每个子领域都以自己的方式回应这两个问题:“什么可以被计算,以及你如何计算它?”
我觉得这个框架很有帮助。显然,计算机科学的某些分支中,计算机硬件和软件是必不可少的,比如操作系统设计或内存管理研究。但我最终最感兴趣的是该领域的理论层面,在那里研究人员甚至不必接触真实的、物理存在的计算机。在这些理论工作中,计算机是否扮演着不可或缺的概念角色?如果我要理清对迪杰斯特拉那句话的矛盾情绪,这正是我需要调查的。
让我们从拉帕波特的第一个问题开始:什么可以被计算?要从理论的角度开始回答这个问题,你需要从计算的数学形式化开始——也就是研究人员所说的计算模型。在20世纪30年代,研究人员提出了几种不同的计算模型,并开始研究它们的内涵。
随后,在1937年一篇著名的论文中,数学家艾伦·图灵设计了一种模型,其基础是假设的机器,这些机器可以根据一组简单的规则,在一条无限长的纸带上读写符号。图灵和其他人很快证明,这种极具影响力的“图灵机”模型在数学上等价于其他研究人员提出的模型。突然间,研究人员不再面对几个截然不同的定义,而是拥有了一套统一的、普适的计算理论。
然而,图灵的计算理论实际上并不是关于计算机的,至少在最初不是。当图灵撰写他那篇开创性论文时,他不仅没有通用计算机,甚至也不是出于理解这种未来机器可能如何运作的动机。相反,他是在试图解决数学基础中的一个核心问题。他将他的机器视为一种模拟人类进行计算时心智活动的方式。
更重要的是,计算理论广泛适用于那些我们不会认为是计算机的事物。研究人员经常通过将自然过程建模为计算并对其进行数学分析来研究它们。他们利用这种计算视角来揭示物理系统中的不可预测行为、分析进化动力学,并攻克量子引力中的难题,等等。讽刺的是,西蒙在20世纪60年代盛赞为“人工科学”的领域,如今已成为我们理解自然界的核心。
“你可以通过计算的视角来审视其他科学,”剑桥大学的理论计算机科学家汤姆·古尔说。“这是一种几乎无处不在地显现出来的底层逻辑模式。”
拉帕波特第一个问题的答案似乎让迪杰斯特拉的那句话站得住脚。然后是拉帕波特的第二个问题:一旦你决定要计算某样东西,你究竟要怎么做?对理论计算机科学家来说,答案在于算法的数学。在20世纪60年代末和70年代初,他们开始构建一个框架,在一个抽象数学层面上量化算法解决不同问题所需的时间,从而避开计算机硬件的所有细节。
他们很快意识到,在实际应用中可能出现的各种问题之间,存在着重要的定性差异,比如在网络中规划路径和分解因数。所有这些问题原则上都可以用算法解决。然而,只有一些问题拥有能够快速产生解决方案的巧妙算法。对于其他问题,已知的算法都慢得令人痛苦。试图探究这些差异根源的努力,标志着计算复杂性理论的开端——这是理论计算机科学的一个子领域,研究不同问题的内在难度,并为现代加密方案提供了基础。
“数学问题具有一种基本结构,使它们在性质上更容易或更难解决,”圣塔菲研究所的理论计算机科学家克里斯托弗·摩尔说。“这与你计算机的速度无关,也与你的聪明程度无关。”
如果数学在某种意义上是现实的语言,那么绘制出这种隐藏的结构,感觉就像“发现宇宙的法则”,正如加拿大西蒙弗雷泽大学的复杂性理论家瓦伦丁·卡巴内茨所说——几年前我曾就复杂性理论中最著名的开放问题采访过他,那篇报道令人脑洞大开。
复杂性理论后来的发展方向指向了那些看起来与计算更不相关的领域。例如,古尔指出了20世纪80年代和90年代从复杂性理论中涌现出的关于数学证明的新概念。通过将证明重新想象为一个交互过程,理论计算机科学家发现,有可能证明一个命题为真,却不透露任何关于它为何为真的信息;也有可能仅通过检查几个微小的片段来验证某些证明是正确的。
“我们突然提出了全新的问题类型,”古尔说。“我们所说的东西远远超出了计算的范畴。”
对我而言,这一切汇聚成了一个引人入胜的画面:没有计算机的计算机科学。“这里有一些基本问题,本可以在几百年前就被提出,”奥斯汀德克萨斯大学的理论计算机科学家斯科特·阿伦森说,他也是《量子》杂志顾问委员会成员。“只是当时没有人想到去问它们。”
当然,这又引出了另一个问题——为什么没有人想到?
至少有一个人的确想到了去问这些基本问题。19世纪的博学多才者查尔斯·巴贝奇,他构思了一种称为“分析引擎”的通用计算器,在他的自传中推测,他的新机器将需要一套与之配套的新算法理论。“每当通过它的帮助寻求任何结果时,”他写道,“就会产生这样的问题——通过怎样的计算路径,机器才能以最短的时间得到这些结果?”
巴贝奇从未完成他的分析引擎,也不清楚他究竟计划如何解决那个重要问题。也许他设想机器设计的某些技术细节会使某些方法比其他方法更快;没有证据表明他预见到了任何类似复杂性理论家此后发现的丰富数学结构。
但在我看来,这正是关键所在。复杂性理论中的核心问题——关于为什么有些问题似乎没有快速算法——乍一看可能并不那么深奥。它的深度只有在你开始探索时才会显现——而且直到20世纪60年代研究人员开始摆弄真正的计算机时,这个问题才显得值得探索。
我认为,这正是低估计算机作用的计算机科学图景中所缺失的:在历史记录中,深刻的理论问题往往与构建更好机器的实际问题交织在一起。
马蒂·泰德雷,东芬兰大学的计算机科学家,也是关于该领域学科身份的一本书的作者,并不喜欢通常被理解的那种迪杰斯特拉名言。即便如此,与天文学的对比可能在另一方面是恰当的。
“[迪杰斯特拉]完全正确;只是他关于望远镜对天文学重要性的看法是错的,”泰德雷说。“如果没有望远镜,我们对宇宙将一无所知。”
在计算机科学领域之外,这里有一些关于我们如何普遍思考科学进步的教训。一种常见的观点认为,纯科学的突破推动技术进步:想想量子物理学催生了晶体管,或者相对论成就了GPS。计算机科学的历史则表明,深刻与实用之间存在着更为微妙的相互作用,这种相互作用在其他学科中也有类似之处。阿伦森指出了热力学第二定律,该定律表明熵——一种无序度的度量——倾向于随时间增加。
“这也许是你能关于整个宇宙演化所能说的最基本的东西,”他说。“然而,在人们建造蒸汽机之前,没有人想到过这一点。”
或者,正如麻省理工学院的复杂性理论家瑞安·威廉姆斯所说:“实践中足够有趣的问题,会产生伟大的理论问题。”
英文来源:
Does Computer Science Need Computers?
Introduction
The pioneering computer scientist Edsger Dijkstra, winner of the 1972 A.M. Turing Award and inventor of one of the most iconic algorithms in all of computing, was nothing if not opinionated. Certain programming languages drew his ire, for example: He once dubbed Fortran “the infantile disorder” and stated that “the use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.” In justifying his disdain for using computers in his own work, he wrote, “Medical researchers are not required to suffer from the diseases they investigate.”
I first encountered Dijkstra’s hot takes nearly four years ago, not long after I joined Quanta as a staff writer covering computer science. The subject was new to me — I’d been a physics journalist, and before that a physicist — and I soon learned that most people don’t know how to interpret “computer science writer.” In the broader public discourse, computer science is practically synonymous with programming or coding, but at Quanta we cover the less understood theoretical side of the field. Then I stumbled on my favorite of the many memorable declarations attributed to Dijkstra: Computer science is no more about computers than astronomy is about telescopes.
This analogy, it turns out, may not have originated with Dijkstra, but he probably would have endorsed the sentiment. For me, the quote offered a pithy, provocative way to distinguish my reporting from tech journalism. And I can’t deny that it was flattering: The field I cover, it suggested, is about something deep and timeless and beyond mere technological innovation.
I got into the habit of invoking the analogy regularly — including in an episode of The Quanta Podcast — but I also began to have second thoughts about it, for reasons I couldn’t quite articulate. Was I just feeling guilty about an implicit dig at my former colleagues who build telescopes, or was the analogy missing something important?
I decided to try to get to the bottom of this. Is computer science about computers? And if not, what exactly is it about?
I was wading into a very old debate. Researchers began developing a mathematical theory of computation in the 1930s. Engineers built the first general-purpose electronic computers in the 1940s. Computer science emerged as a distinct academic discipline in the following decades, when the research traditions of math and engineering came together, and arguments about the nature of the new field soon followed. In 1967, the prominent computer scientists Allen Newell, Alan Perlis, and Herbert Simon staked out their position in a spirited letter to the editor in the journal Science. “Wherever there are phenomena, there can be a science to describe and explain those phenomena,” they wrote, with perhaps a hint of exasperation. “There are computers. Ergo, computer science is the study of computers.”
Newell, Perlis, and Simon addressed their letter in part to critics who argued that any science worth the name must study natural phenomena. They countered with examples of artificial phenomena considered worthy of study in well-established sciences, such as chemistry. In his 1969 book The Sciences of the Artificial, Simon went further and embraced the distinction: A focus on intentionally designed artificial systems, he argued, was precisely what made computer science special.
In 1974, the computer scientist Donald Knuth offered a distinct view of the field that emphasized the process of computing rather than computers themselves. He defined computer science as the study of algorithms, or precise step-by-step procedures, which computers use to accomplish tasks. Algorithms can be implemented in different programming languages, in much the same way that ideas can be expressed in English, Mandarin, or Arabic. Humans use algorithms too, not just to solve math problems, but also for tasks like sorting items. From this perspective, the math underlying computation is central; computers themselves are relevant only because they open up problems that we humans have neither the time nor the patience to tackle on our own.
Knuth’s definition is appealing to me, but it’s hard to deny the simplicity of the one offered by Simon and his colleagues. Yet neither these nor any other definitions seem to have achieved universal acceptance among researchers. Why is that? I asked William Rapaport, an emeritus professor of computer science and philosophy at the University at Buffalo, who has extensively chronicled the many proposed definitions of computer science. He suggested that the disagreement ultimately stems from the unusually interdisciplinary origins of the field.
“Computer science has two parents,” he told me. “It’s got a mathematical parent, and it’s got an engineering parent, and it’s really a cross between those two.”
Rapaport still sees a kind of intellectual unity in the field — it’s more than just math and engineering in a trench coat. Computer science, in his view, is the study of two central questions, which each subfield addresses in its own way: “What can be computed, and how do you compute it?”
I found this framing helpful. There are obviously branches of computer science in which computer hardware and software are essential, such as the design of operating systems or the study of memory management. But I’m ultimately most interested in the theoretical side of the field, where researchers need not ever touch a real, physical computer. Do computers play an essential conceptual role in this theoretical work? That’s what I’d need to investigate if I was going to sort out my mixed feelings about the Dijkstra quote.
Let’s start with Rapaport’s first question: What can be computed? To even begin to answer this question from a theoretical point of view, you need to start with a mathematical formalization of computing — what researchers call a model of computation. In the 1930s, researchers proposed several distinct models of computation and began to study their implications.
Then, in a famous 1937 paper, the mathematician Alan Turing devised a model based on hypothetical machines that could read and write symbols printed on an infinite tape according to a set of simple rules. Turing and others soon proved that this highly influential “Turing machine” model was mathematically equivalent to models proposed by other researchers. Suddenly, instead of several distinct definitions, researchers had a single, universal theory of computation.
Yet Turing’s theory of computation wasn’t really about computers, at least not at first. When Turing wrote his seminal paper, not only did he not have a general-purpose computer, he wasn’t even motivated by a desire to understand how such future machines might work. Rather, he was trying to solve a central problem in the foundations of mathematics. He viewed his machine as a way to model the mental activity of a human doing calculations.
What’s more, the theory of computation is broadly applicable to things we wouldn’t recognize as computers. Researchers often study natural processes by modeling them as computations and analyzing them mathematically. They’ve used this computational lens to expose unpredictable behavior in physical systems, analyze evolutionary dynamics, and attack puzzles in quantum gravity, among other applications. Ironically, the field that Simon hailed as a “science of the artificial” back in the 1960s is now central to our understanding of the natural world.
“You can view the other sciences through computation,” said Tom Gur, a theoretical computer scientist at the University of Cambridge. “It’s this underlying logical pattern that manifests itself pretty much everywhere.”
The answer to Rapaport’s first question seems to leave Dijkstra’s quote in a good place. And then there’s Rapaport’s second question: Once you’ve decided you want to compute something, how exactly do you do it? To theoretical computer scientists, the answer lies in the math of algorithms. In the late 1960s and early 1970s, they began to build a framework to quantify the time that algorithms require to solve different problems, at an abstract mathematical level that avoids all the details of computer hardware.
They soon came to appreciate that there are important qualitative differences among problems that might arise in practical applications, such as planning routes through networks and factoring numbers. All of these problems could, in principle, be solved by algorithms. Yet only some had clever algorithms that could produce a solution quickly. For others, the only known algorithms were painfully slow. Attempts to get to the root of these differences marked the beginning of computational complexity theory, the subfield of theoretical computer science that studies the inherent difficulty of different problems, and provides the basis for modern encryption schemes.
“Mathematical problems have a fundamental structure which makes them qualitatively easier or harder to solve,” said Cristopher Moore, a theoretical computer scientist at the Santa Fe Institute. “It’s not a matter of how fast your computer is, and it’s not a matter of how clever you are.”
If math is, in some sense, the language of reality, then mapping out this hidden structure can feel “like discovering the laws of the universe,” as the complexity theorist Valentine Kabanets of Simon Fraser University in Canada put it, when I spoke to him a few years ago for a brain-bending story about the most famous open problem in complexity theory.
Later developments in complexity theory pointed in directions that seem even less related to computing. As an example, Gur pointed to new notions of mathematical proof that emerged from complexity theory in the 1980s and 1990s. By reimagining proof as an interactive process, theoretical computer scientists discovered that it’s possible to prove that a statement is true without revealing anything about why it’s true, and that it’s possible to verify that certain proofs are correct by only checking a few tiny snippets.
“We suddenly come up with entirely new types of questions,” Gur said. “We say something which goes way beyond computation.”
To me, this all adds up to a compelling vision of computer science without computers. “There were fundamental questions here that could have been asked hundreds of years ago,” said Scott Aaronson, a theoretical computer scientist at the University of Texas, Austin, who’s also a member of Quanta’s advisory board. “It’s just that no one thought to ask them.”
Of course, that just raises another question — why not?
At least one person did think to ask those fundamental questions. The 19th-century polymath Charles Babbage, who conceived of a general-purpose calculating machine that he called the Analytical Engine, speculated in his autobiography that his new machine would call for a new theory of algorithms to go with it. “Whenever any result is sought by its aid,” he wrote, “the question will then arise — By what course of calculation can these results be arrived at by the machine in the shortest time?”
Babbage never completed his Analytical Engine, and it’s not clear exactly how he planned to address that important question. Perhaps he imagined that technical details of the machine’s design would make some methods faster than others; there’s no evidence that he anticipated anything like the rich mathematical structure that complexity theorists have since discovered.
But that, it seems to me, is precisely the point. The central question in complexity theory, about why some problems don’t seem to have fast algorithms, may not look very profound at first glance. Its depth only becomes apparent when you start to explore it — and it wasn’t until researchers started playing around with real computers in the 1960s that the question seemed worth exploring.
I think this is ultimately what’s missing from a picture of computer science that downplays the role of computers: In the historical record, deep theoretical questions are often intertwined with practical ones about building better machines.
Matti Tedre, a computer scientist at the University of Eastern Finland and the author of a book about the disciplinary identity of the field, isn’t a fan of the Dijkstra quote as it’s usually understood. Even so, the comparison to astronomy may be apt in another way.
“[Dijkstra is] absolutely right; it’s just that he’s wrong about the importance of telescopes to astronomy,” Tedre said. “We wouldn’t know a thing about the universe if we didn’t have telescopes.”
Beyond the field of computer science, there are lessons here for how we think about scientific progress in general. In one common view, breakthroughs in pure science spur advances in technology: Think quantum physics leading to the transistor, or relativity enabling GPS. The history of computer science suggests a more nuanced interplay between the profound and the practical, one that also has parallels in other disciplines. Aaronson pointed to the second law of thermodynamics, which states that entropy, a measure of disorder, tends to increase over time.
“It’s maybe the most fundamental thing that you can say about the evolution of the entire universe,” he said. “And yet it’s not something that anyone thought of until they were building steam engines.”
Or, as the complexity theorist Ryan Williams of the Massachusetts Institute of Technology put it, “Sufficiently interesting problems in practice generate great theoretical questions.”