AI编程
AI编程
目前的现状
现在说到软件就是AI.
软件行业中一直存在一个无所不能的位置.曾几何时,这个位置上坐着的是SOA,后面又换成了微服务,中台.当然,也曾经坐过区块链,web3.0等等.
只不过现在这个位置上坐着的,是AI而已.
笔者正好最近稍微研究了一下,谈谈感受.
AI的问题
AI的性能
到目前为止,人类最牛逼的AI模型,和AI交互的,都是文字.和所谓的大模型,从算法和本质上看,也是一个猜字游戏.
那么好了,因为AI只能处理文字,所以AI的性能和传统应用的性能差距不是一般的大.如果把AI的输入和输出,看成是一个完整的交互的话,那么这个输入和输出的性能和传统的计算机软件相比,是要被喷死的.传统软件的输入输出性能都是按照毫秒为单位的,而AI的输入输出是按照秒为单位的.在不看数字,只看单位就相差1000倍.
到目前为止,所有的AI模型争夺的焦点,就是准确率和吞吐性能.有多少个token每秒,做试卷得分多少,等等.当然,这个也是衡量AI大模型的关键参数.我始终感觉这个方向有问题,可能在目前的科技条件下,我们也只能在这2个方面努力.
在这种效率下面,就注定了AI是无法按照当前的软件处理模式(我搭一个平台,搞一些服务器,高效专业的处理某一类的业务).这点就直接排除AI不能直接用于实时场景.要搞AI,只能是非实时场景.
那么AI能直接上阵介入一些非实时场景,直接处理业务么??除了各种客服系统,我就没有找到其他的场景了,当然客服本身,不对结果负责.
沟通障碍
这边的沟通障碍表现为2个层面,一个是跨维度的信息障碍.如果我希望通过文字来描述一个图片,中间不但会出现信息丢失的问题,更严重的是会出现无法描述的问题.
另外一个层面是沟通有效性的问题.简单的说,就是一个人说话,另外一个人听话,听到的内容是说出来的70%.这还是在双方语言相通,甚至可以加上表情,语调和肢体工作的前提下评估下的效率.
那么在站在目前的AI发展的角度看,目前的大模型也是类似的场景.上面的性能,智慧等问题还是次要的,最主要的问题是,我们在使用AI的时候,如何把我们在真实世界发生的需求,转换成为文字后AI能理解多少??而AI又如何把他处理的文字结果再映射到我们真实世界的需求上?
其他的比如精准性,输出限制等,问题比较小,这边就不说了.
AI编程
目前AI应用比较热门的场景有,图像生成,视频制作.在这些场景下,都诞生了独立的工具,将原有画图软件,视频编辑软件做了扩展和延伸.从领域上看,都是工具软件.在没有AI的情况下,实现画图,视频制作和编程,都需要消耗使用者大量的时间和精力,这些时间的单位一般都是按照人月,人年来算的,针对于AI的处理单位秒来说,快的不是一点半点.从实现层面上看,通过研发工具,接入大模型,生成视频和图像,再通过多轮对话,对图形进行修改,不但是效率提升,而且画质比人手动修改更好.
下面重点说说AI编程.很显然,编程这个领域也是能合理避免AI问题的一个重大的领域.之前都是用Cline之类的IDE插件,通过上传代码文件配合用户提示词,来实现AI输出到IDE,修改文件.
但我感觉还是没有深入到本质.
无论是function call还是MCP都让AI在思考过程中,访问外部数据的能力.但是对于编程来说,还远远不够.
- 需求怎么理解,在现实过程中,程序员和产品经理那些年打了那么多仗,应该有现实意义
- 系统运行在环境中,上游系统需要我提供哪些接口,我需要下游系统提供哪些服务?
- 系统内部怎么划分功能块??怎么定义对象,怎么定义服务,怎么定义服务的边界?
如果说,部分的设计文档的存在,是为了解决软件开发过程中的沟通问题,在AI编程的时代,将不再需要设计文档.
我并不清楚上述的问题是否能完美解决,但是有一点我确定,如果让AI处理一些逻辑复杂的问题,AI没有目前吹的那么牛逼.
下面是之前搞的一个简单示例,假设我提供所有数据,让AI来帮忙查询系统内的关联交易,关联交易的定义是,交易的对手公司的高管中,是否在本公司高管的亲属列表中
为了描述准确,我居然写了伪代码

当我拿问题去问大模型的时候,大模型出错了!

正确的结果应该是

信息分层
我这边尝试用物理学角度的维度把物理学里面的信息划分一下维度.
- 文字,虽然计算机底层处理是向量,这边就抛开计算机里面的概念,从人们感受的物理维度来看.
- 图片,很简单,图片里面可以包含文字,而文字却不能包含图片.
- 视频,视频可以包含图片,也能包含文字,而且附带了音频
- 假设是尚未实现的全息影像.
- 我们真实世界.
在物理的维度划分下,下一个维度会包含无数倍上一个维度.而目前和大模型的交互正在第一维度.
总结
在十几年前,遇见一位高人在面试我的时候,问了我一个问题,你觉得为什么java会那么流行??我的回答让他不是很满意,然后他说出了自己的看法,因为严谨的语法和结构!!在足够复杂的环境下,只有严谨的语法和结构才能让软件开发工程化.
当然,不可否认,当前的AI正在重构软件开发的模式,未来的软件开发甚至是大规模的人类协作,都将发生巨大的变化.
如果真的有一天,AI能全自动的编程,那软件开发团队的人员结构是什么样的?工具链是什么样的??还存在软件工程的概念么??
