Edsger Dijkstra 扛起了计算机科学(2020)

Edsger Dijkstra 在计算机科学中的巨大影响引发了人们对他如何塑造现代编程与教学的反思。评论者强调他在推广结构化编程以及程序正确性推理方面的作用,同时也结合当今语言与实践,重新审视他对 GOTO、COBOL 和面向对象编程的著名批评。除了技术争论之外,许多人还回忆起他严苛的标准、独特的工作习惯和尖锐的格言,并权衡他的严谨与刻薄最终是帮助还是伤害了这个领域。

Dijkstra 影响力的范围

  • 许多评论者表示,他们一看到标题就立刻联想到他,并把他视为计算机科学中的核心人物,类似于数学史上的伟大巨匠。
  • 突出贡献包括:最短路径算法、信号量、结构化编程,以及对教学/程序推理的影响。
  • 也有人对标题的宏大措辞提出异议,认为他只是几位关键人物之一,而不是“扛起”计算机科学的那个人。

结构化编程、GOTO 与正确性

  • 讨论集中在他对结构化控制流以及“单入口、单出口”代码块的倡导。
  • 批评者指出,单出口会迫使代码变得迂回,并与常见的“守卫子句”风格和提前返回相冲突。
  • 也有人强调,其目标是让人类更容易理解并更容易推理,而不是提供形式化正确性保证。
  • GOTO 仍有争议:无限制版本被认为会损害推理;受限形式(break/continue/goto/longjmp)被视为可控,但仍然有风险。

编程范式:FP vs OOP 及其他

  • 有人把他对 GOTO 的反对与现代函数式风格联系起来(没有提前退出、递归、TCO)。
  • 讨论还涉及函数式语言为何仍属小众:一位评论者把原因归咎于其“迂回”的风格,其他人则提出质疑,并强调它们强大的类型系统和性能。
  • 关于 OOP 的长帖:
    • 批评:数据与行为耦合过紧;类层次脆弱;系统难以演进;“设计模式地狱”。
    • 辩护:OOP 只是众多有用工具之一,强类型和封装是其优势;“组合优于继承”也是常见实践。
    • 多人指出,许多“OOP”的优点(组合、接口)并非 OOP 独有。

名言、哲学与文化

  • 许多人分享了最喜欢的名言,既有钦佩也有批评:关于 COBOL、OOP、代码行数、会思考的机器、抽象,以及“计算机科学 vs 计算机”。
  • 关于潜艇/“机器能思考吗”的那句名言引发争论,涉及拟人化、语言精确性,以及此类问题的现实意义。
  • 有些人认为他尖锐的风格令人耳目一新、富有激励作用;也有人认为这正是傲慢、排他文化的体现,而这种文化伤害了这个领域。

个性、工作方式与轶事

  • 他被描述为极其谨慎且写作很慢的人(只写单一、接近定稿的草稿;每分钟约 3 个词),非常强调思考胜于打字。
  • 他不使用电视、个人电脑和手机;喜欢钢笔,以及一辆昵称为“Touring Machine”的房车。
  • 多个轶事描述他对语言和记号的精确性要求极高,这给一些同事留下了深刻的“内在批评者”印象,而这种标准塑造了他们。