图灵奖演讲催生新编程范式,APL 之后能否解决科学计算“双语言”问题?
图灵奖演讲编程领域的启示从类型上来说“获奖感言”不过是一种形式内容也往往千篇一律。但顶尖计算机科学家在获得图灵奖时发表的演讲却是个例外。有些演讲读起来就像宣言比如约翰·巴科斯John Backus1977 年发表的《编程能否摆脱冯·诺伊曼风格》它激发了一种新的编程范式催生了像 Haskell 这样的函数式编程语言。还有些演讲是警告肯·汤普森Ken Thompson在 1984 年的《对信任的反思》中揭示了带有后门的编译器的危险这可能避免了大量安全漏洞艾兹格·迪科斯彻Edsger Dijkstra在 1972 年的《谦逊的程序员》中敦促同行们警惕耍小聪明的做法要承认“人类思维的内在局限性”。艾弗森演讲数学符号的力量本文聚焦肯尼斯·艾弗森Kenneth Iverson1979 年那场令人印象深刻的演讲《符号思维的工具》。他在演讲中证明了数学符号不只是方便的简写形式比如用 CO₂ 表示二氧化碳用 3,888 代替 MMMDCCCLXXXVIII它们还能让人更容易有新的发现。正如数学家阿尔弗雷德·诺思·怀特海Alfred North Whitehead所说“好的符号能让大脑摆脱所有不必要的工作使其专注于更高级的问题。”APL 语言融合的尝试艾弗森因 APL 语言获得图灵奖。APL 是一种看起来有些神秘的编程语言最初它是作为一种连接不同语言的符号系统而诞生的。在科学计算的早期程序员不得不用一种语言数学符号思考然后用另一种语言如 Fortran编程。APL 的设计初衷是让复杂的操作能像方程式一样简洁地书写代码行可以浓缩成像 或 × 这样的几个符号。虽然 APL 的影响力大于其实际应用范围但它展示了两种语言可以融合为一种。科学计算的“双语言”问题到 2026 年APL 问世就满 60 年了而科学计算领域又面临着一种新的“双语言”问题。目前占主导地位的编程语言是 Python但它速度极慢这一缺陷就连其最狂热的支持者也无法否认。因此就出现了“双语言”问题研究人员用速度慢但友好的 Python 进行原型开发而对于性能要求高的部分则用速度快但不那么友好的语言如 C 或 Rust 重写。这个问题无法通过大量使用 AI 代码生成工具来解决因为无论对一种慢速语言进行多少优化更快的语言总会表现得更出色。“双语言”问题的类比与思考这种二元权衡在其他领域也存在。例如建筑领域存在“双材料”问题。木材是用于搭建建筑原型的灵活材料即使是外行也能用锯子和钉子搭建出一个能使用的建筑但它不适合建造摩天大楼。这就引出了一个问题有没有一种材料既像木材一样易于加工又像钢铁一样坚固有没有一种语言既像 Python 一样符合人体工程学又像 C 语言一样快速Julia 语言贪心的尝试2012 年四位有着深厚数学背景的计算机科学家聚在一起试图解决当今的“双语言”问题。在一篇题为《我们为何创造 Julia》的短文里他们表示开展这个项目是“因为我们贪心”。文章开篇就像是对编程语言的一封情书“我们是 Matlab 的重度用户。我们中有些人是 Lisp 黑客有些是 Python 爱好者还有些是 Ruby 或 Perl 黑客……我们绘制的 R 语言图表多得超乎常理。C 语言是我们在荒岛上也会选择的编程语言。”但他们写道这些语言“在某些方面很完美在其他方面却很糟糕”。出于贪心他们想要“一种开源的、许可宽松的语言……一种简单易学又能让资深黑客满意的语言”。Julia 就是他们希望能集所有优点于一身的语言。