彼得·瑙尔(Peter Naur):ALGOL 与巴科斯范式,以及「程序首先是写给人的」这个判断

1928 年生于 丹麦 的 Peter Naur,其研究路径与 程序设计语言设计与 ALGOL 的主流路径几乎不重合。他问了一个所有工程师都该问的问题:如果一个程序三年后还要读,它还能被理解吗?

1928 年生于 丹麦 的 Peter Naur,其研究路径与 程序设计语言设计与 ALGOL 的主流路径几乎不重合。他问了一个所有工程师都该问的问题:如果一个程序三年后还要读,它还能被理解吗?

一、程序怎么写才不会像一堆补丁——「妈咪语言」与一个来自体育记者的提问

Peter Naur 的起点要回到 丹麦哥本哈根。当时 在哥本哈根长大,童年喜欢天文学与射箭;后转向研究数学——这段经历日后被 Peter Naur 反复提起,成为其方法论的原点。

他后来的很多想法都能追溯到「如何让非专家也能读懂」这一出发点,包括著名的「妈咪语言」设想。

他在理论物理与天文学上的训练,使他习惯于把「一个记号代表什么」当成根本问题来追问。

他中学时对天文学的兴趣持续多年,做过大量天文观测记录,这让他习惯于把「观测」与「推算」严格分开。

射箭则训练了他对细微偏差的敏感——瞄准的精度问题后来被他类比为程序正确性问题。

他在大学期间先研究数学,1946 年前后开始接触计算,并在哥本哈根的 DASK 早期工作中使用机器。

他在 DASK 上的工作让他见识到机器与研究者协作的实际形态,这段经历贯穿他后来的整个生涯。

二、1928 年的哥本哈根,和一个在射箭与天文学之间长大的孩子

1950 年的 在天文学与计算之间切换,参与早期数值计算工作 是 Peter Naur 的分水岭。核心洞见是:人读程序的方式和机器读程序的方式完全不同,不能混为一谈,这一点后来被整个 程序设计语言设计与 ALGOL 领域反复引用,而 这一视角后来直接催生了 ALGOL 60 的记号设计。

他参与过用电子计算机处理观测星表的工作,这让他成为最早认真讨论「程序写给人看」的学者之一。

天文学观测数据量极大且需要反复拟合,DASK 这类早期机器正是在这类需求上第一次被认真使用的。

他在数值计算中意识到:写公式和写指令是两种完全不同的人类活动,不应该强迫程序员做后者。

ALGOL 60 的记号体系最终在《ALGOL 60 报告》中以 BNF 形式给出,这份报告也成了软件史上的标志性文献。

他把这次转变归因于一个具体观察:同一组计算,用公式写和用指令写,所需时间差了一个数量级。

三、1960 年代:ALGOL 60 与巴科斯范式

参与 ALGOL 60 的记号体系设计与报告撰写 落在 1960 年。核心机制是 核心机制是:用一套贴近数学记法的语法,让程序接近它所描述的公式,但真正的意义不在机制本身——在于 ALGOL 的 BNF 描述法成为此后所有语言规范的事实标准。

「巴科斯范式」这个说法来自 1966 年他自己的论文《无歧义语言说明》,是一篇定义领域的奠基文本。

ALGOL 的块结构、大括号与作用域规则,至今仍是主流语言的骨架。

BNF 的价值在于让「一门语言的定义」本身成为可以用机械方法处理的文本,这一点影响远超 ALGOL 本身。

ALGOL 的作用域规则与自由格式排版,是此后 Pascal、C、Java 等语言共同继承的骨架。

ALGOL 社区的做法是:任何人都可以参与定义,且每次修订都公开发表讨论过程。

四、编程到底是一门工程还是一门手艺——1965 年:PL/I 与一次夭折的会议

这里有一个不能略过的争议:当时 IBM 力推 PL/I,试图用一门语言覆盖科学计算与商业处理两大场景。Peter Naur 后来在多个场合解释过为什么 他主张语言应当小而专,与其做大而全不如让不同场景各自选择,并为 代价是他与 IBM 的合作关系由此破裂,也失去了直接参与主流工业语言标准化的机会 付出了具体代价。

这场争论后来在语言史上反复重演:每一次「大语言」试图覆盖一切,几乎都会遇到复杂度失控的问题。

他参与的那次会议因为各方无法就 PL/I 的方向达成一致而不了了之,会上争论的问题在此后五十年里并未真正消失。

PL/I 试图成为 IBM 对抗 COBOL 与 FORTRAN 的统一语言,这个目标本身就带着把不同语言合并的雄心。

争论的焦点是:一门大语言是否真的能同时服务科研与商业,还是只会把两边的复杂度都吸进来。

IBM 内部对 PL/I 的投入一度非常大,但最终的采用曲线并不理想,此后被逐步淡化。

他主张「语言应当小而专」,这个立场与后来语言社区主流的「小语言」潮流一致。

他在那场会议上的发言后来被反复引用,被视为程序设计方法论转向的开端之一。

PL/I 最终虽然存在了很长时间,但学界与用户社区对它的评价长期分裂,这成了他「大而全必失」判断的注脚。

五、1980 年代:Backus 的函数式语言与「十进制」的方向

1980 年,Peter Naur 加入 哥本哈根大学,把 此前在 ALGOL 与 PL/I 争论中坚持小而专的语言观 时期积累的 ALGOL 与 BNF 时期积累的符号设计经验 带进了 如何让学术界的语言研究影响实际工程 这条全新战线。这也是 Peter Naur 第一次需要在工程约束下做取舍。

他在这段时间推动了计算与天文学的交叉合作,把编程语言当作研究方法的一部分来讨论。

他在《计算机文化》上的专栏写作影响了一批北欧与英国的程序员,是早期「编程作为手艺」讨论的重要声音。

他推动计算与天文学的合作研究,把编程语言当作研究方法本身来讨论,这是很少见的做法。

他在《计算机文化》专栏上的写作影响了一批欧洲程序员,是早期「编程是一门手艺」讨论的主要声音。

他晚年与欧洲的计算机科学家合作,推动「计算作为科学」的表述进入公共讨论。

他在欧洲推动的「计算即科学」论述,与美国同时期的计算机制造浪潮形成了一种有趣的对照。

六、他提出的那个视角:把程序当成一种「写给未来的信」

从 ALGOL 60 的记号体系,以及那篇定义了巴科斯范式的《无歧义语言说明》 到 推动「计算作为科学」与计算思维教育,Peter Naur 用 ACM 软件系统奖(1992)给自己做了阶段性确认,而 把「程序首先是写给人的」确立为教学与评审的共识。

他后来的论述反复强调:程序的主要读者是三年后的自己,而不是编译器。

他主张「计算应当像数学与物理一样成为科学的第三支柱」,这与今天广泛使用的「计算思维」一脉相承。

他 1992 年获 ACM 软件系统奖,这是该奖早期的重要授予之一。

他关于「计算应当像数学与物理一样成为科学第三支柱」的论述,是今天「计算思维」一词的直接前身。

他把「计算思维」具体化为一种可教的思维习惯,而不是某种具体的编程语言或工具。

参考来源

  • 彼得·瑙尔 的公开传记、论文与技术档案(可按其所属机构与年代检索)
  • 相关领域的学术史与技术史综述文献
💬 评论
🔗 本文链接

以专业为基,引领科技向善向新

Rooted in professionalism, we lead technology toward social good and innovation.

数智化转型网 · 了解更多产业资讯与选型数据 →

📰 你可能也喜欢

赫尔曼·霍利思(Herman Hollerith):打孔卡与数据工业的起点 AI人物图谱

赫尔曼·霍利思(Herman Hollerith):打孔卡与数据工业的起点

1860 年生于 美国 的 Herman Hollerith,其研究路径与 数据处理与信息工业的起点 的主流路径几乎不重合。他把人口普查的难题变成了一张打孔卡与…
📅 10-29 · 👁 2026年10月29日
王安(An Wang):磁性存储核心与迷你计算机,以及那段被误判的岁月 AI人物图谱

王安(An Wang):磁性存储核心与迷你计算机,以及那段被误判的岁月

An Wang(王安,中国/美国,1920 年生)在 磁性记忆核心与计算机产业化 领域的位置,很少有人能给出准确坐标。他在麻省理工学院读研究生时把磁性记忆核心做…
📅 10-29 · 👁 2026年10月29日
杨强(Qiang Yang):让数据不动的迁移学习与联邦学习 AI人物图谱

杨强(Qiang Yang):让数据不动的迁移学习与联邦学习

1963 年生于 中国/加拿大 的 Qiang Yang,其研究路径与 迁移学习、联邦学习与 AI 制药 的主流路径几乎不重合。他是把「迁移学习」这个词带入主流…
📅 10-29 · 👁 2026年10月29日
约翰·巴科斯(John Backus):Fortran 的作者,以及「编译器可以比手写更快」这个结论 AI人物图谱

约翰·巴科斯(John Backus):Fortran 的作者,以及「编译器可以比手写更快」这个结论

John Backus(约翰·巴科斯,美国,1924 年生)在 程序设计语言设计与函数式语言 领域的位置,很少有人能给出准确坐标。他用一次实践证明了一件事:编译…
📅 10-29 · 👁 2026年10月29日
尼克劳斯·维尔特(Niklaus Wirth):Pascal 与 Modula 的作者,语言特性越少越好的信徒 AI人物图谱

尼克劳斯·维尔特(Niklaus Wirth):Pascal 与 Modula 的作者,语言特性越少越好的信徒

Niklaus Wirth(尼克劳斯·维尔特,瑞士,1934 年生)在 程序设计语言设计与结构化程序 领域的位置,很少有人能给出准确坐标。他设计了两门至今仍在用…
📅 10-29 · 👁 2026年10月29日
阿尔弗雷德·埃霍(Alfred Aho):《龙书》的作者,与阿霍-科拉里克算法 AI人物图谱

阿尔弗雷德·埃霍(Alfred Aho):《龙书》的作者,与阿霍-科拉里克算法

Alfred Aho(阿尔弗雷德·埃霍,加拿大/美国,1941 年生)在 编译技术与文本处理 领域的位置,很少有人能给出准确坐标。他写的那本《龙书》训练了几代编…
📅 10-29 · 👁 2026年10月29日