AI 编程狂飙,但关键还得看这四点
AI 时代,许多开发者都已经上手了各式 AI 编程工具,至于评价则千差万别。但整体而言,AI 编程的代码正越来越多出现在当下的各种技术栈中,其口碑也在逐渐攀升。随着 GPT4 的出现,AI 编程正在迈入新的台阶,而软件工程 3.0 时代也正在进行中。
为了更好地了解当下 AI 编程能力的发展,我们邀请到同济大学特聘教授,“软件工程 3.0” 定义者朱少民,请谈谈他 AI 编程的过去与未来。
朱少民
同济大学特聘教授,“软件工程 3.0” 定义者
CCF 软件质量工程 SIG 主席,拥有个人公众号《软件质量报道》。近三十年来一直从事软件测试、质量管理等工作,先后获得多项省、部级科技进步奖,已出版了二十多部著作和 4 本译作,并经常在国内外学术会议或技术大会上发表演讲,曾任思科(中国)软件有限公司 QA 高级总监、IEEE ICST 2019 工业论坛主席、多个IEEE学术会议的程序委员、《软件学报》审稿人等。
5 月 28 日,朱少民将担任 GOTC 2023 “AI 编程”分论坛讲师,并发表《软件工程3.0之下 软件开发新范式》主题演讲,敬请期待!
参会报名,请访问: https://www.bagevent.com/event/8387611
OSCHINA:AI 编程这个概念是什么时候开始兴起的?现在处于什么样的发展阶段?
上世纪 70 年代左右就有了计算机辅助编程,但和今天的 AI 编程还是有区别的。辅助编程是想通过一些规则或者是专家系统来完成编程,基于规则引擎来做推理,相当于模拟人的思维,知名工具软件 MATLAB 可以看做是辅助编程的成果。但是效果不够好,所以后面也就停了一段时间。
这波人工智能的热潮可以看作是 AI 第三次浪潮的延续,而第一次和第二次的浪潮,实际上没有达到我们预期的效果。
今天我们讲 AI 编程,更多的是最近几年,基于深度学习、机器学习,基于深度神经网络和强化学习这些新技术来完成代码的编写。
那么现在所处的阶段,不能说是成熟阶段,但可以认为是接近成熟的阶段。比如 Copilot X,华为的盘古模型也能生成函数级的代码了。这些技术已经可以在工程实践中应用了。
OSCHINA:现在市面上有很多宣称能写代码的 AI 工具,开发者要怎么区分与选择?
一方面要看你使用的编程语言。目前如果用的是 C 语言,AI 方面的能力就弱一些。如果是 Java 或者 Paython、Go 语言,那开源的代码数据比较多,效果就会比较好。如果用到特殊的语言,也许会更困难。
另一方面就是要看功能,比如可不可以做代码补全、代码评审。还有代码生成的可靠性和准确性,决策是否可靠等等。比如生成代码的问题比较多,重构的工作量非常大,那么就没有意义。开发者常说的一句话:代码写得烂,要我改还不如我自己重写。最后,还要看工具好不好用,例如是否通过插件实现的(可以保留过去编程的习惯)等等。
OSCHINA:AI 编程如果要进一步发展,需要在哪些方面有所突破?
一个是规模挑战,即生成代码的量。
比如华为的盘古模型生产代码是函数级的,已经算是比较厉害的了。以前我们讲代码补全,相当于写一行代码给你补两行,或者写两行补一行,那么这在一个函数里可能只是完成了二分之一或者三分之一,你可以理解为代码块或者说代码行补全。从这种到函数级生成代码已经算是一大进步了,函数级至少完成了一个类的方法。
那么在此之上,再提升量级,比如完成一个完整类或模块、Package 等。
二是准确性、可靠性。早期代码生成的准确率大概是 40%、50%,根本不能用。工业界一般在达到 80%、90% 之后才会用。如果达到 95%,甚至是 98%,那就更好了。
三是代码理解能力是不是更强,像逻辑关系、上下文联系等等,相当于 AI 还可以联想到过去的代码。这方面,在今天也是对 AI 编程的一个主要限制。比如上下文理解,因为我们写代码或者整个代码的演化时间还是很长的,我经常和学生讲,你开发产品的第一个版本也许一两个月就结束了,但如果你的产品开发得比较好、有生命力,整个演化过程也许是几年甚至十几年。
那么我们今天的机器学习或者说大模型还没有这方面的能力,无法记住几天前的上下文,无法回忆几年前自己生成的代码,并依此不断生成新的代码、或做代码的重构与优化。
这相当于讲,目前的AI是通用的大数据学习,它不能学习产品线代码,然后来生成符合这个产品线业务逻辑的代码。GPT-4 能不能做这样事情,至少是要打一个问号的。
四是人机交互智能。这也要提到软件工程 3.0,GPT-4 发布标志着软件工程 3.0 时代的到来,其中人机交互智能将是软件工程 3.0 的一个常态。我们把需求文档塞进去,所有代码就都出来了,或者说是完全自动化生成代码,这样理想的情况,至少最近几年应该都不会发生。这还需要人和大模型、机器之间不断交互。
我们也希望有一个更好的交互机制,或者我们会提醒大模型,一个月之前的需求是不是可以重新思考,重新生成,或者把一个月之前的答案再做修改与调整。
同时这点放到今天的语境里来看相对更复杂的一点是,有时开发者不止一个人。以前简单的模式是每个开发人员会有一个助手,但现在可能是一个开发者拥有好几个机器人,甚至是机器人与机器人之间的协调。最近也有论文提到,去做一个类似管理人机交互过程,或者说是任务调度的平台。
GOTC 2023 将于 5 月 27 日至 28 日在上海张江科学会堂召开。大会将以行业展览、主题发言、特别论坛、分论坛的形式展现,与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及开源社区、AIGC、汽车软件、AI 编程、开源教育培训、云原生等热门话题,探讨开源未来,助力开源发展。
进入官网了解更多信息,请访问:https://gotc.oschina.net

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
性能测试监控指标及分析调优 | 京东云技术团队
一、哪些因素会成为系统的瓶颈? 1、CPU,如果存在大量的计算,他们会长时间不间断的占用CPU资源,导致其他资源无法争夺到CPU而响应缓慢,从而带来系统性能问题,例如频繁的FullGC,以及多线程造成的上下文频繁的切换,都会导致CPU繁忙,一般情况下CPU使用率<75%比较合适。 2、内存,Java内存一般是通过jvm内存进行分配的,主要是用jvm中堆内存来存储Java创建的对象。内存的读写速度非常快,但是内存空间又是有限的,当内存空间被占满,对象无法回收时,就会导致内存溢出或内存泄漏。 3、磁盘I/O,磁盘的存储空间要比内存存储空间大很多,但是磁盘的读写速度比内存慢,虽然现在引入SSD固态硬盘,但是还是无法跟内存速度相比。 4、网络,带宽的大小,会对传输数据有很大影响,当并发量增加时,网络很容易就会成为瓶颈。 5、异常,Java程序,抛出异常,要对异常进行捕获,这个过程要消耗性能,如果在高并发的情况下,持续进行异常处理,系统的性能会受影响。 6、数据库,数据库的操作一般涉及磁盘I/O的读写,大量的数据库读写操作,会导致磁盘I/O性能瓶颈,进而导致数据库操作延迟。 7、当在并发编...
- 下一篇
设计师解放双手之作!3秒生成风景园林效果图,AIGC赋能景观设计
项目简介 在过去几十年,风景园林经历了从“刀耕火种”的完全手绘设计时代到当下比较流行的参数化设计时代,过去的每一轮技术革新都让风景园林作品的表现形式产生了巨大的改变。随着计算机图像技术的发展,我们有更多的建模和渲染软件辅助提升图纸表现效果,但表现效果提升的背后伴随的是越来越巨大的人力资源投入,一张美观的效果图需要经过建模、渲染、图像编辑等多个软件繁杂反复操作才能生产出来,加班熬夜重复性地绘图已成为行业常态。简而言之,过去计算机图像技术的发展并没有让设计师的工作更加轻松,反而成为了一把沉重的“枷锁”。 在人工智能生成内容技术(Artificial Intelligence Generated Content,AIGC)井喷式发展的背景下,风景园林行业正经历着智能化变革。如何借助人工智能技术进一步提高设计效率、实现快速多样化设计,对满足用户多样和变化的需求、改变行业投入高和人效低现状有重要意义。在飞桨 AI Studio 和 PPDiffusers 的支持下,华南农业大学 SCUrban Lab 团队尝试在风景园林的场景下对 Stable Diffusion 模型进行调教优化。本文将分享当...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品