当前位置: 首页 > news >正文

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


http://www.jsqmd.com/news/240395/

相关文章:

  • 计算机毕业设计springboot天天儿童福利院管理系统 基于 Spring Boot 的儿童福利院信息管理系统设计与实现 Spring Boot 框架下儿童福利院管理系统的开发与应用
  • 基于微信小程序的心理咨询预约系统-计算机毕业设计源码+LW文档免费
  • taobao商品详情API接口数据分析比价
  • 基于STM32与W5500的Modbus TCP协议实现指南
  • AI工作负载推动数据库重返Postgres
  • 【TSP问题】基于变邻域搜索算法求解旅行社问题附Matlab代码和论文
  • 从零开始刷算法——二叉树篇:层序遍历 + 有序数组转二叉搜索树
  • 为什么说RAG是AI 2.0时代的“杀手级”应用?
  • 通义深度搜索-生成对话
  • 零基础也能学懂提示词?OpenCSG公益课给出清晰学习路径:从“会问”到“会驱动”
  • 机器学习:基于python二手房数据分析系统 可视化 Scrapy 爬虫 链家二手房数据 Django框架 基于用户的协同过滤推荐 二手房推荐系统 (源码)
  • 机器学习:python招聘数据分析可视化系统 机器学习 招聘推荐 薪资预测 爬虫 决策树回归模型 XGBoost回归模型 Flask框架 前程无忧
  • 书籍-塔西佗《编年史》
  • 如何翻译图片?图片上的外语一键翻译成中文,教程来了~
  • 物联网毕设 基于单片机的红外热视仪(源码+硬件+论文)
  • 机器学习:python租房数据分析可视化系统 K-means聚类算法 线性回归预测算法 机器学习 链家租房网 Django框架 scrapy 爬虫(建议收藏)
  • OpenCSG课程精华:为什么结构化提示词更有效?Markdown / XML / JSON 的正确打开方式
  • jmeter基础知识-安装配置环境变量
  • RH134 第八章 管理存储堆栈
  • 什么是PKI
  • 在Spring Boot项目中,Shiro和Spring Security该如何选择?
  • 2026软件测试金3银4常见的软件测试面试题
  • 计算机毕业设计springboot二手房租售管理系统设计与实现 基于Spring Boot框架的二手房交易与租赁管理系统开发与应用 Spring Boot驱动的二手房买卖及租赁信息管理平台设计与实现
  • 从GPT到智能体:OpenCSG带你看清提示词工程的“执行力升级”——拆分步骤、工具调用与安全边界
  • 强烈安利9个AI论文网站,本科生毕业论文轻松搞定!
  • 学Java后端必须学spring,spring框架为什么这么多人用?
  • 计算机毕业设计springboot校园服务平台 基于SpringBoot的校园综合服务平台设计与实现 SpringBoot框架下的校园服务管理系统开发
  • 只需根据接口文档,就能轻松开发 get 和 post 请求的脚本
  • 腾讯校招 C++ 一面:30道题
  • 小程序搭建平台三大类型解析与选择建议