关于AI与“No Silver Bullet”

人们常常会看到一些编程领域的YouTuber或讲师在表达完自己的观点后,使用“No Silver Bullet”这个惯用语。

他们在充分阐述了自己的观点之后,通过添加“No Silver Bullet”这句话,试图阻止任何后续的反驳或批评。

这种做法很快演变成一种态度,即“反正没有万能的解决方案,所以没有必要再争论,我也不需要为我的主张负责”。

这是一种责任规避策略。

那么,这个说法是从哪里来的呢?

这篇论文出自Frederick P. Brooks, Jr.,他因获得图灵奖而广为人知。

这篇论文的核心观点非常简单:

“在软件工程中,不存在万能药(Silver Bullet)。”

那么,为什么偏偏是银弹呢?

论文中提到,在民间传说(folklore)中,没有什么比狼人更可怕了。原因在于,狼人从熟悉的存在转变为陌生的恐怖,因此令人恐惧。

要消灭狼人,必须使用银弹(Silver Bullet)。

Brooks借此比喻指出,软件项目通常看似无害,但一旦进度拖延、预算超支,就可能变成一个可怕的“怪物”。

论文探讨了是否存在某种银弹,能够轻松解决软件开发的问题。

Brooks断言,在1986年之后的十年内,软件生产率不可能提高十倍以上。

他还指出,软件开发本质上无法实现如此快速的进步。

那么,我们在2025年应该如何看待这篇论文呢?

这篇论文指出了软件开发生产力难以提升十倍以上的两个主要原因:

本质性困难(Essence)偶然性困难(Accidents)

本质性困难 是由软件本身的特性引发的难题,属于根本无法消除的复杂性,具体包括以下四点:

  • 复杂性(Complexity) :系统本身具有极高的复杂性,由数十万行代码组成的系统超越了人类的理解能力,导致维护困难。再加上功能之间的交互、异常处理、状态组合等因素,复杂性呈指数级增长。

  • 适配性(Conformity) :软件需要满足现实世界的复杂需求和约束条件,并适应各种外部环境(如硬件、操作系统、网络等)。这些外部因素相互依赖且不断变化。

  • 可变性(Changeability) :与硬件或其他工程产品相比,软件更容易修改和变更。然而,这种可变性反而带来了挑战,因为用户需求不断变化,技术发展也要求软件持续更新。

  • 不可见性(Invisibility) :软件是一种抽象的存在,不像建筑或图纸那样可以通过物理模型直观理解,这导致了许多问题。

以下是论文中对本质性问题的最佳描述原文:

软件的复杂性并非次要属性,而是其本质属性。
因此,在描述软件实体时忽略复杂性,往往会导致忽略其本质。
在过去的三个世纪里,数学和物理科学通过构建复杂现象的简化模型,从中推导出属性并进行实验验证,取得了巨大的进步。
这种范式之所以成功,是因为模型中忽略的复杂性并非现象的本质属性。
然而,当复杂性本身就是本质时,这种方法就行不通了。

偶然性困难 是指由于工具、技术、方法论等不足而在软件开发过程中产生的困难。

在1986年,Brooks提出了几种可能的银弹候选方案,以减少这些偶然性困难:

  1. 高级语言(High-Level Language)
  2. 面向对象设计(OOP) ——将复杂问题分解为小的对象单元,并使对象独立运作。
  3. 迭代开发(Iterative Development)

他认为这些方法可以减少偶然性困难。

实际上,如今高级语言已成为主流,OOP也成为代码风格的主流,自动化工具减少了重复性工作。然而,创造性问题解决仍然需要人类完成。

迭代开发以敏捷开发(Agile)的形式回归,尽管技术有所进步,但我们依然面临复杂性问题,软件工程仍然困难重重。

偶然性复杂性可以通过技术进步解决,但本质性复杂性依然存在。

因此,软件开发的生产力无法大幅提升,这一观点在2025年的今天仍然有效。

然而,人们可能会问:

在AI时代,情况还会如此吗?

事实上,Brooks当时也将AI视为银弹的候选方案之一。

在这篇论文中,我们可以看到当时对AI的认知。Brooks对未来的银弹候选方案(AI)持批判态度。

论文引用了Parnas的定义,将AI分为两种视角:

  • AI-1(替代人类智能)
    “以前只能通过人类智能解决的问题,现在可以用计算机来解决。”
    这种定义侧重于通过计算机实现人类认知能力的尝试。
    例如,让计算机执行只有人类才能完成的问题解决、决策、学习等任务。

  • AI-2(启发式编程)
    “使用启发式或基于规则的编程技术集合。”
    这种方法通过编码专家的知识和经验来解决问题。
    典型例子是专家系统,目标是模仿特定领域专家的问题解决策略。

Brooks对这两种视角都持怀疑态度:

  • AI-1 :他认为AI-1的定义过于主观且模糊。
    实际上,到2025年,我们对AGI(通用人工智能)的定义仍然因学者而异,这也是一个例证。

  • AI-2 :即使这些系统能够模仿特定领域的专家,它们仍然无法完全解决本质性复杂性。

尽管2025年的AI模型已经涵盖了AI-1和AI-2,但Brooks的预测依然有效。

AI仍然无法完全构建软件,当文本量超过一定限度时,它会产生结构性问题。

正如大多数知名开发者所言:

目前的AI可以作为提高开发者生产力的工具,但仍然无法完全取代人类开发者。

软件项目的成功仍然依赖于明确的需求定义、架构设计等人类能力。

AI目前还无法完全理解人类的需求并输出理想的结果。

此外,AI编程本身具有黑箱特性,其输出并非基于对原理的全面理解,而是通过参数调整生成的。

这种黑箱特性反而增加了输出的复杂性。

2025年,AI技术虽然取得了惊人的进步,但“No Silver Bullet”论文仍然有效。

AI是提高软件开发生产力的强大工具,但它无法成为解决软件本质复杂性的“万能药”。

“No Silver Bullet”论文教导我们要摒弃幻想,直面现实,通过不懈的努力和渐进式的改进,坚定地走在软件工程的道路上。

2025年,“No Silver Bullet”的信息更加贴近现实。

2025年,

No Silver Bullet.

依然有效!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值