最近 AI 的进展,让很多人一下子变得非常乐观,认为将来可以使用 AI 代替程序员进行软件设计。软件的生产率将会大大提高。但在几十年前已经有《人月神话》以及《没有银弹》说明了软件工程内部的本质复杂性。AI 看起来只是稍微解决了软件工程的附属工作复杂性,并没有解决软件工程的本质复杂性,凭什么能够代替程序员呢?
我们公司已经买了多份 copilot,目前看起来只是能够稍微提升生产率,离真正带来生产率的巨大飞跃还远着,因为它有个逻辑悖论:
如果一段代码是可以 copilot 生成的,那么它有比较大的可能性是通用性代码。那么,如果是通用性代码,难道不是应该尽量找个第三方库把事情做得更好吗?
: 《没有银弹:软体工程的本质性与附属性工作》(英语:No Silver Bullet—Essence and Accidents of Software Engineering)是IBM大型电脑之父佛瑞德·布鲁克斯所发表一篇关于软体工程的论文,原先是在1986年都柏林IFIP研讨会的一篇受邀论文[1][2],隔年电机电子工程师学会《Computer》也转载了这篇文章,他们用了几张《伦敦狼人》之类的电影剧照来当作说明[3],还加上了一段〈终结狼人〉的附注,用来引出非银弹则不能成功的(现代)传说。该论述中强调由于软体的复杂性本质,而使真正的银弹[注 1]并不存在;所谓的没有银弹是指没有任何一项技术或方法可使软体工程的生产力在十年内提高十倍。
--
FROM 110.81.0.*