返回

文章详情

“自然语言编程”的愚蠢 (1978)

Hacker News2026年10月23日 00:52

关于“自然语言编程”的愚蠢。自从自动计算的早期阶段以来,就有人认为编程需要的细心和准确是使用任何形式的正式符号所特有的缺陷。他们责怪机械奴隶严格遵守执行其指示,尽管片刻的思考就会揭示这些指示中明确的错误。“但是片刻很长,思考是一个痛苦的过程。”(A.E.豪斯曼)。他们急切地希望和等待更明智的机械设备,拒绝进行当时小错误所引发的无意义活动。机器代码几乎没有任何形式的冗余,很快就被认定为人与机器之间不必要的冒险接口。部分响应这一认识,被称为“高级编程语言”的东西被开发出来,随着时间的推移,我们在一定程度上学会了如何增强对愚蠢错误的保护。显著的进步是现在许多愚蠢的错误导致错误信息,而不是错误答案。(即使这个改进也没有被普遍欣赏:一些人发现错误信息让人无法忽视比错误结果更恼人,在评判编程语言的相对优点时,有些人似乎仍将“编程的容易”与制作未被发现的错误的容易等同起来。)然而,与编程语言相对应的(抽象)机器仍然是一名忠实的奴隶,即完全能够执行无意义指令的无意义自动机。编程仍然是使用正式符号,因此继续需要之前所需的关心和准确性。为了让机器显著更易于使用,提出了(尝试)设计我们可以用母语指令的机器。这无疑会使机器复杂得多,但可以说,通过让机器承担更多的负担,生活会变得更轻松。前提是你将使用正式符号的责任归咎于你的困难。但是这个论点有效吗?我怀疑。我们在此期间知道,接口的选择不仅仅是(固定数量的)劳动的分工,因为在接口上合作和沟通所涉及的工作必须添加到其中。我们在此期间知道——我可能补充说,这是一种惊人的经历——接口的变化很容易在围栏的两侧增加工作量(甚至大幅增加)。因此,越来越倾向于现在所称的“狭窄接口”。因此,尽管即使沟通在机器和人之间用后者的母语进行会大大增加机器的负担,但我们必须挑战这种假设,即这将简化人类的生活。对数学历史的简短回顾显示了这种挑战是多么合理。希腊数学陷入困境,因为它仍然是一种口头和图画活动,穆斯林的“代数”在对符号的胆怯尝试之后,在回归修辞风格时消亡,而现代文明世界的出现——无论好坏——都是西欧能够从中世纪的经院哲学的枷锁中解放出来的结果——这是对口头精确度的徒劳尝试!——多亏了我们归功于维耶塔、笛卡尔、莱布尼茨和(后来)布尔等人,经过仔细或至少有意识设计的正式符号。正式文本的优点在于,其操作为了合法性,只需要满足少数简单规则;当你仔细思考时,它们是排除各种无意义的惊人有效工具,而在使用母语时几乎无法避免。我们不应该将使用正式符号的义务视为负担,而应将使用它们的便利视为一种特权:多亏了它们,学校的孩子们能够做到过去只有天才才能实现的事情。(显然,这一点未被1977年在技术报告前言中写道“出于清晰的考虑,甚至连逻辑连接词所使用的标准符号都被避免”的作者理解。那句话的出现表明,这位作者的误解并不仅限于他自己。)总而言之,我们使用母语的“自然性”归结于我们能够轻松地使用它们来做出那些无明确谬误的陈述的便利。如果试着想象如果从一开始我们的母语就成为输入和输出我们信息处理设备的唯一工具,会发生什么,可能会很有启发性。我的深思熟虑的猜测是,历史在某种意义上会重演,计算机科学主要会由确实的黑暗构成。

阅读全文 →

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡