Press "Enter" to skip to content

“核心复杂性是开发者的独特卖点”

在我的上一篇文章中,我强调了效率和效果之间的区别,以及它们与人工智能和人类智能的关系。快速高效和最小浪费是确定性算法的领域。但我们知道如何构建正确的事物(效果)是我们的领域。这是一个棘手且主观的挑战,与软件帮助人类生活更加舒适的迷人现实紧密相连。

今天我想谈谈本质复杂性。一个完全自主的AI程序员需要被告知我们想要什么,以及为什么,或者它应该足够了解我们的价值观来填补这些空白。可惜的是,我们还不能完全信任AI在没有人类帮助和纠正的情况下可靠地连接这些点。这不像告诉自动驾驶车辆你想去哪里。那有一个非常简单的目标-我们离实现完全安全还有很长的路要走。

本质复杂性是关于“调试规范”,找出我们人类需要什么以及为什么需要它。偶然复杂性是我们选择实现这些想法的替代方案的结果。Frederick Brooks对本质复杂性和偶然复杂性的持久区分类似于前一篇文章中的人类与机器智能的领域区分。

由于完全自主的软件生产只有在商业人士明确清晰地陈述他们想要的内容时才能实现,开发人员自以为是地得出结论,他们的工作是安全的。我不确定这样完美的规格是否是必要条件。我的意思是,现在并不是这样的。谁会推迟编码,直到他们有完整的、明确的、最终的规格?编程意味着从一个足够清晰的路线图在IDE中填充规格的细节。这不仅仅是实现,而是在调整屋顶的图纸时为第一层铺设砖块。这似乎效率低下,但事实证明,除非我们建造的梦想之家已经完成一半,否则我们无法完美地想象它,至少在软件方面是这样。

人工智能已经非常适合处理我们在过程中遇到的大部分偶然复杂性。我们应该尽可能多地使用它。我知道我已经花了三篇文章来讨论Java OCP 17考试(第一部分,第二部分和第三部分),但我相信(并希望)对奇怪细节的机械知识将会消失。人工智能可以处理惯用用法,可以强制执行清晰的代码,良好的命名约定,甚至编写源代码文档。而且它会变得越来越好。它甚至可以将遗留代码完整迁移到新的语言和框架版本。我完全支持这一点。手动将Java 4 EJB2庞然大物迁移到Spring Boot 3微服务不是我想要的。

如果在五年内,代码辅助的最新技术仍然无法让您在编写代码时印象深刻,那可能不是因为机器无法处理某些偶然复杂性,而更可能是因为它无法处理本质复杂性。如果您的抵押计算器输出45.4%的抵押利率,而副驾驶员没有警告您可能搞错了小数点,那是因为它从未买过房子,不会注意到这个数字的幅度太大。

本质复杂性可以用任何VoAGI来表达,它不一定是计算机代码。一旦您确切知道某件事应该如何工作,大多数编码挑战都会变得容易,前提是您在所选择的编程语言上有能力。因此,我们将复杂的领域拆分为可管理的部分,并随着每一次迭代来完善和扩展产品。这并不总是有效。有时候本质复杂性无法减少,您需要一点天才的灵感来取得进展。

以非对称密钥交换为例,这是一个令人着迷的问题,困扰着最伟大的数学家们几十年,甚至几个世纪。Alice和Bob可以使用一个无法破解的加密密钥进行通信,但如果他们不知道Eve已经拦截了它,一切都会变得公开。如果我们能够有一对密钥,使您可以使用密钥A加密消息,但只能使用密钥B解密消息,并且没有实际的方法可以从一个密钥推断出另一个密钥。然后,您将密钥的一部分分发给每个人,并保护您生活的另一部分,您已经解决了密钥交换的问题。

简单地陈述您想要达到的目标是不够的,甚至不是开始编码的规范。它甚至不是一个编程任务。这是对发明一种甚至可能不存在的算法的追求。在Scrum Poker中,您会选择无限牌。Whitfield Diffie和Martin Hellman最终设计出来的算法可以在一张餐巾纸上写下。与之相比,将其转化为代码将是微不足道的。但他们永远无法在键盘后面逐步找到解决方案。或者阅读一下Bletchley Park团队破解Enigma密码的引人入胜的故事。这是一项更艰巨的任务,因为那是一场真正的战争。

你无法按照要求或者以科学的艺术制作出杰作。如果我们知道什么样的歌曲是好的,我们可以复制这个过程,即使不使用软件,也可以通过某种公式化的方法。但这并不能产生经典之作。创造力是一个碰运气的过程,很少有艺术家能持续创作出天才之作。我们没有理由期望在这方面取得巨大的人工智能进展。但我们可以期待更好的工具来激发创造力。词曲创作人使用押韵字典和词典寻求灵感,这并不是作弊。

幸运的是,除非你在大学或研究机构工作,企业软件开发和维护不涉及解决几个世纪前的数学难题。然而,你应该更深入地思考我们想要和需要什么,而不是学习一个很酷的新框架或者获得另一个AWS证书。揭示出本质上的复杂性不仅仅是组织中业务分析师的工作。我迫不及待地期待下一代工具来帮助我们应对这个复杂性,因为那将是一个真正的副驾驶,而不是一个自动驾驶系统。

Leave a Reply

Your email address will not be published. Required fields are marked *