news 2026/6/15 22:55:27

Martin Fowler:AI带来非确定性计算时代的挑战与机遇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Martin Fowler:AI带来非确定性计算时代的挑战与机遇

Thoughtworks首席科学家、面向对象编程长期专家Martin Fowler认为,AI是他整个职业生涯中见过的最大编程转变。

在由Gergely Orosz主持的Pragmatic Engineer播客采访中,Fowler坦言关于AI,"我们仍在学习如何做到这一点。"

对于行业来说,最接近的类比是从汇编语言的转变。

汇编语言编写起来很繁琐,因为大部分工作涉及在寄存器之间移动内存值。这就是为什么转向更高级编程语言(如COBOL和Fortran)对程序员来说是如此大的福音。

"至少在像Fortran这样相对简陋的高级语言中,我可以编写条件语句和循环之类的东西,"Fowler说。

这些新语言比硬件本身提供了更高层次的抽象。

对于大语言模型,这是"类似程度的思维转变,"他说。

但大语言模型并不是另一种抽象,而是一种完全不同的计算类型。

也就是说,大语言模型是非确定性计算的一种形式,它具有与我们今天认为的"计算"(确定性计算)不同的特征。

确定性计算是严格二进制的。计算要么正确,要么错误。如果不正确,我们可以调试代码看看哪里出了问题。

非确定性计算更加模糊。大语言模型可能在某个时候产生一个答案,而在另一个时候产生完全不同的答案。它构建的答案依赖于统计推理,这是建立在二进制数学之上的一组概率,但并不是万无一失的。

这完全改变了你必须考虑计算的方式,他说。

Thoughtworks是一家技术驱动的咨询公司,因此一直在关注AI是如何成功应用的。

据Fowler说,一个用例是快速构建原型,部分归功于氛围编码的出现。在这里你可以比以前"更快速地"探索想法。

但真正的杀手级应用是使用AI来帮助理解遗留系统。在该公司最新的年度Radar报告(第33期)新兴技术中,使用生成式AI来现代化遗留系统是获得公司最高"采用"评级的唯一AI技术。

对于试图现代化旧系统的客户,Thoughtworks创建了一个例程,基本上对代码库进行语义分析,将结果放入图数据库中,然后可以通过检索增强生成过程来询问,以了解应用程序如何运行。

"如果你在做任何遗留系统的工作,你应该以某种方式使用大语言模型来帮助你,"Fowler说。

但是,虽然大语言模型可以帮助我们理解遗留代码,但它们是否能以安全的方式修改该代码是另一个问题。

然而,更高级的编程在大语言模型方面仍然很困难。在这里你必须将AI工作分解成非常薄的"切片",并非常仔细地审查所有内容,他说。

"你必须把每个切片都当作来自一个相当靠不住的合作者的拉取请求,这个合作者在代码行数意义上的生产力很高,但你知道你不能相信他们正在做的任何事情,"Fowler说。

尽管如此,以这种方式使用AI可以为开发人员节省时间,尽管可能不如倡导者一直声称的那么多时间。

特别是,他建议我们"想出一种更严格的方式"与大语言模型对话,以获得更好的结果。领域驱动设计和领域特定语言可能提供前进的道路。

结构工程的实践也可以帮助更好地衡量在哪里使用AI,Fowler指出。

"我妻子是结构工程师。她总是从容差的角度思考:'除了数学告诉我的之外,我还需要做多少额外的工作,因为我需要它的容差?'"Fowler说。

就像我们知道混凝土桥梁能承受多少重量一样,大语言模型也应该配备描述它们能支持的精度水平的指标。

"我们必须处理的非确定性容差是什么?"他问道。了解这一点,软件开发人员就会知道在哪里"不要滑得太接近边缘"。

Fowler向软件开发人员推荐了一本帮助思考非确定性的书,那就是Daniel Kahneman的《思考,快与慢》。

"他在试图给你关于数字的直觉,以及发现我们在概率和统计方面思考时犯的许多错误和谬误方面做得非常好,"Fowler说。

一如既往,Fowler是一个雄辩的演讲者,在这次采访中对各种主题都有一些见解,包括重构、敏捷过程、企业中的大语言模型、企业应用模式,当然还有每个面向对象程序员最喜欢的语言Smalltalk。

Q&A

Q1:什么是非确定性计算?它与传统计算有什么不同?

A:非确定性计算是大语言模型采用的计算形式,与传统的确定性计算不同。确定性计算是严格二进制的,计算要么正确要么错误,可以通过调试找到问题。而非确定性计算更加模糊,大语言模型可能在不同时候产生不同答案,依赖统计推理和概率,不是万无一失的。

Q2:大语言模型在遗留系统现代化中如何发挥作用?

A:Thoughtworks将使用生成式AI现代化遗留系统列为最高"采用"评级技术。他们创建了一个例程,对代码库进行语义分析,将结果放入图数据库,然后通过检索增强生成过程来查询,帮助理解应用程序如何运行。Fowler建议任何做遗留系统工作的人都应该使用大语言模型。

Q3:如何安全地使用大语言模型进行编程开发?

A:Fowler建议将AI工作分解成很薄的"切片",并仔细审查所有内容。要把每个切片当作来自不可靠合作者的拉取请求,虽然代码产出高但不能完全信任。需要建立更严格的方式与大语言模型对话,领域驱动设计和领域特定语言可能是解决方案。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:42:18

C++ 静态初始化顺序问题(SIOF)和SLAM / ROS 工程实战问题

静态初始化顺序问题 一、什么是静态初始化顺序问题 静态对象指: 全局对象命名空间作用域对象static 成员变量函数内 static 对象 问题本质:不同编译单元(.cpp 文件)中的静态对象,其初始化顺序是未定义的如果一个静态对…

作者头像 李华
网站建设 2026/6/15 11:41:42

能源预测AI模型的模型版本控制:架构师的技巧

能源预测AI模型的模型版本控制:架构师的技巧 一、引入:为什么能源预测模型需要“版本管理”? 1.1 一个真实的“崩溃”案例 某省级电网公司的风电预测系统曾发生过一起严重事故: 周一早上,调度中心依赖AI模型预测的“今…

作者头像 李华
网站建设 2026/6/15 11:42:30

场景化落地指南——金仓时序数据库在关键行业的应用实践

时序数据怎么“落到系统里”,往往比“概念讲清楚”更难。本文就以金仓时序数据库的工程落地为主线,把采集、存储、分析、看板到运维闭环串起来:能力怎么拆、模型怎么建、SQL怎么写、行业怎么用,尽量讲得清楚、也讲得能直接照着做。…

作者头像 李华
网站建设 2026/6/15 13:56:57

计算机毕业设计springboot“木成林”学生互助平台的设计与实现 基于Spring Boot的“学林互助”学生服务平台设计与实现 Spring Boot框架下“林聚学”学生互助系统的设计与开发

计算机毕业设计springboot“木成林”学生互助平台的设计与实现15u46(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网技术的飞速发展,学生群体对于信息共享和…

作者头像 李华
网站建设 2026/6/15 14:25:07

【AI应用开发工程师】-Gemini写前端的一个坑

Gemini写前端的一个坑:当AI设计师固执己见时… 你的AI助手是否也曾像个固执己见的设计师,坚持用“过气”的Tailwind V3,而你明明知道V4才是真香?别急,这篇文章就是为你准备的“设计师沟通指南”! &#x1f…

作者头像 李华
网站建设 2026/6/15 14:51:05

STL 核心概念与组成

STL(Standard Template Library)是 C 标准库的核心部分,本质是一套通用的、可复用的模板类和函数,目的是让开发者不用重复造轮子,直接使用成熟的数据结构和算法。STL 主要由以下六大组件构成,其中容器、算法…

作者头像 李华