Does Computer Science Need Computers?
Kristina Armitage/ Quanta Magazine
克里斯蒂娜·阿米蒂奇/广达杂志
T he pioneering computer scientist Edsger Dijkstra, winner of the 1972 A.M.
计算机科学家先驱 Edsger Dijkstra,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.”
例如,某些编程语言引起了他的愤怒:他曾将 Fortran 称为“婴儿障碍”,并表示“COBOL 的使用会削弱思维;因此,其教学应被视为刑事犯罪。”为了证明自己对在自己的工作中使用计算机的蔑视是合理的,他写道:“医学研究人员不需要患有他们所研究的疾病。”
Is computer science about computers?
计算机科学是关于计算机的吗?
If not, then what is it about?
如果不是,那么它是关于什么的?
I first encountered Dijkstra’s hot takes nearly four years ago, not long after I joined Quanta as a staff writer covering computer science.
我第一次接触 Dijkstra 的热门观点是在大约四年前,当时我作为计算机科学领域的特约撰稿人加入广达不久。
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.
然后,我偶然发现了 Dijkstra 的许多令人难忘的宣言中我最喜欢的一句话:计算机科学不再是关于计算机,就像天文学不再是关于望远镜一样。
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.
研究人员在 20 世纪 30 年代开始开发数学计算理论。
Engineers built the first general-purpose electronic computers in the 1940s.
工程师在 20 世纪 40 年代建造了第一台通用电子计算机。
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 .
1967 年,著名计算机科学家艾伦·纽厄尔 (Allen Newell)、艾伦·佩里斯 (Alan Perlis) 和赫伯特·西蒙 (Herbert Simon) 在给《科学》杂志编辑的一封热情洋溢的信中表明了他们的立场。
“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.”
因此,计算机科学是对计算机的研究。”
I n philosophy, “qualia” refers to the subjective qualities of our experience: what it’s like for Alice to see blue or for Bob to feel delighted.
在哲学中,“感受性”指的是我们体验的主观品质:爱丽丝看到蓝色或鲍勃感到高兴是什么感觉。
Qualia are “the ways things seem to us,” as the late philosopher Daniel Dennett put it.
正如已故哲学家丹尼尔·丹尼特所说,感受性是“事物在我们看来的方式”。
In these essays, our columnists follow their curiosity, and explore important but not necessarily answerable scientific questions.
在这些文章中,我们的专栏作家追随他们的好奇心,探索重要但不一定可以回答的科学问题。
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.
西蒙在 1969 年出版的《人工科学》一书中更进一步并接受了这种区别:他认为,对有意设计的人工系统的关注正是计算机科学的特殊之处。
In 1974, the computer scientist Donald Knuth offered a distinct view of the field that emphasized the process of computing rather than computers themselves.
1974 年,计算机科学家 Donald Knuth 提出了该领域的独特观点,强调计算过程而不是计算机本身。
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.
我询问了布法罗大学计算机科学和哲学名誉教授威廉·拉帕波特 (William Rapaport),他广泛记录了计算机科学的许多拟议定义。
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?
让我们从 Rapaport 的第一个问题开始:什么可以计算?
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.
20 世纪 30 年代,研究人员提出了几种不同的计算模型,并开始研究它们的含义。
Computer science has two parents.
计算机科学有两个父母。
It’s got a mathematical parent, and it’s got an engineering parent, and it’s really a cross between those two.
它有一个数学的父母,它有一个工程的父母,它确实是这两者的交叉。
William Rapaport, University at Buffalo
威廉·拉帕波特,布法罗大学
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.
然后,在 1937 年的一篇著名论文中,数学家艾伦·图灵设计了一个基于假设机器的模型,该机器可以根据一组简单的规则读取和写入打印在无限磁带上的符号。
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.
讽刺的是,西蒙在 20 世纪 60 年代被誉为“人工科学”的领域如今却成为我们理解自然世界的核心。
“You can view the other sciences through computation,” said Tom Gur , a theoretical computer scientist at the University of Cambridge.
“你可以通过计算来看待其他科学,”剑桥大学理论计算机科学家汤姆·古尔(Tom Gur)说。
“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.
在 20 世纪 60 年代末和 70 年代初,他们开始构建一个框架,在抽象的数学层面上量化算法解决不同问题所需的时间,从而避免了计算机硬件的所有细节。
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.
圣达菲研究所的理论计算机科学家克里斯托弗·摩尔 (Cristopher Moore) 表示:“数学问题有一个基本结构,这使得它们在质量上更容易或更难解决。”
“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.
如果数学在某种意义上是现实的语言,那么绘制出这个隐藏的结构感觉“就像发现了宇宙的法则”,正如加拿大西蒙弗雷泽大学的复杂性理论家瓦伦丁·卡巴内茨(Valentine Kabanets)所说,几年前,当我与他交谈时,他讲述了一个关于复杂性理论中最著名的开放问题的令人费解的故事。
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.
作为一个例子,古尔指出了 20 世纪 80 年代和 90 年代复杂性理论中出现的数学证明的新概念。
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.
德克萨斯大学奥斯汀分校的理论计算机科学家、广达咨询委员会成员斯科特·阿伦森 (Scott Aaronson) 表示:“这里存在一些几百年前就可能被问到的基本问题。”
“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.
19 世纪的博学者查尔斯·巴贝奇 (Charles Babbage) 构想了一种通用计算机,并将其称为分析机,他在自传中推测,他的新机器将需要一种新的算法理论来配合。
“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.
只有当你开始探索它时,它的深度才会变得明显——直到 20 世纪 60 年代研究人员开始使用真实的计算机时,这个问题才似乎值得探索。
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.
马蒂·泰德雷 (Matti Tedre) 是东芬兰大学的计算机科学家,也是一本关于该领域学科特征的书的作者,他并不喜欢通常所理解的迪杰斯特拉名言。
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.
一种普遍观点认为,纯科学的突破刺激了技术的进步:想想量子物理学催生了晶体管,或者相对论催生了 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.”
或者,正如麻省理工学院的复杂性理论家瑞安·威廉姆斯所说,“实践中足够有趣的问题会产生伟大的理论问题。”
Get highlights of the most important news delivered to your email inbox
获取发送到您的电子邮件收件箱的最重要新闻的摘要
Quanta Magazine moderates comments to facilitate an informed, substantive, civil conversation.
《Quanta》杂志对评论进行审核,以促进知情、实质性、文明的对话。
Abusive, profane, self-promotional, misleading, incoherent or off-topic comments will be rejected.
辱骂、亵渎、自我推销、误导、语无伦次或偏离主题的评论将被拒绝。
Moderators are staffed during regular business hours (New York time) and can only accept comments written in English.
版主在正常工作时间(纽约时间)有工作人员,并且只能接受英文评论。