> 自媒体 > AI人工智能 > 当 ChatGPT 比你更会写代码,程序员还能干什么?
当 ChatGPT 比你更会写代码,程序员还能干什么?
来源:CSDN
2023-04-06
154
管理

作者 | 何苗

出品 | CSDN(ID:CSDNnews)

大模型的火热引爆了 AI 编程领域的全面革新,人们开始思考如何借助 AI 提高编程效率的同时,也在思考未来需要怎样的“新程序员”。

3 月 25 日下午,CSDN 与《新程序员》合作举办“新程序员大会(NPCon)的“AIGC 与大模型技术应用峰会”——AI 编程技术论坛在北京环球贸易中心成功举办。本论坛汇聚了来自中科院、微软亚洲研究院、清华大学实验室等学术机构,华为云、aiXcoder 等企业代表们,从ChatGPT、大模型、开源等多个角度,围绕智能代码生成展开激烈的观点碰撞,分享了 AI 编程最新鲜火热的观点。

当AI可以写代码,程序员还能干什么?AI 写的代码,谁或者如何来评定代码的质量?GPT-4 模型将为 AI 编程带来怎样的技术与思维革新?很多问题都在这场论坛中得到了解答,答案或许与你的认知相左,也欢迎留言来辩!

微软亚洲研究院高级研究工程师卢帅:未来的AI编程的发展趋势是一方面探讨如何利用大模型来完成任务,另一方面思考如何进化它,以覆盖更广泛的智能代码场景。

aiXcoder 联合创始人郝逸洋:如果 AI 作为操作系统可以直接控制硬件,程序员就能解放双手去编写驱动、操作系统和软件或是研发新的硬件,这就是软件 3.0 的图景。

华为云 PaaS 技术创新 LAB 技术专家申博:当模型越来越大,对硬件性能要求越来越高,有可能会遇到“数据荒”的问题,我们能否让 AI 自我演进,通过自我生成数据的方式学习,以达到与大数据同样的效果?未来自我创造智能是个有前途的方向。

清华大学知识工程实验室研究助理郑勤锴:在将来,程序员需要具备一些更高级的技能和思维,比如 Geek (极客)思维,开发者应该更加注重这方面的培养。

中国科学院软件研究所研究员、博士生导师王俊杰:现在的大模型可能有些时候对开发人员来说有点“不太专业”,但对测试人员来说“刚刚好”

一边用大模型来生成代码,一边想办法让它进化

在上午的主论坛,华为云智能化软件研发首席专家王千祥表示 AI 编程肯定会超越 Coding 编程,因为现有的 ChatGPT、GPT-4 大模型工具的能力覆盖到了代码补全、翻译代码、解释代码、DeBug 等多维度。

在AI 编程分论坛会议开场,为了对程序员最关心的编程技术问题做更深入的交流与探讨,他作为论坛出品人,协助 CSDN 精心邀请了几位亲自动手做AI 编程的青年才俊来分享其实践经验与真知灼见,机会难得。

aiXcoder 联合创始人 郝逸洋

近一年,大型语言模型(LLM)对序列信息建模的能力有目共睹,创建了像 ChatGPT、GPT-4 这样惊人的产品。本次演讲 aiXcoder 联合创始人郝逸洋围绕如何利用 LLM 技术辅助代码开发为我们带来精彩分享,并对交互式多模态LLM(如 ChatGPT、GPT-4 )如何应用于智能化软件开发展开畅想。

首先,郝逸洋分享了自己对于 GPT-4 的认识。“当 ChatGPT 升级至 GPT-4 时,它可支持更长的序列,并在更多领域上进行了微调。相比于 GPT-3,GPT-4 的求解能力有了巨大提升。此外,GPT-4 还有一个未开放使用的能力,即理解图片,但目前还未对外开放使用。”

为了进一步对 GPT-4 的能力边界展开探索,他对代码进行了错误检测和修复,这个功能非常强大,也是编程神器 Copilot 还不具备的功能——它只是一个代码补全模型。

GPT-4 反映出的第一个问题就是它速度较慢,因此无法响应很多实时场景;第二,上下文序列有限(最长 32,768 ),尽管GPT-4 的序列长度已经非常厉害,但是想要将整个项目的信息全部放入其中仍然非常困难;第三,代码项目的上下文和网页爬取的文本差距巨大。

同时,程序生成模型与 GPT-4 此类语言模型的模式仍有区别。

让语言模型学会自己使用工具

“众所周知,GPT-4 可以让编写简单代码的过程更加轻松,但它在处理复杂的代码时仍然很困难。这意味着它不能降低编程的难度,但可以降低入门门槛,这也是生成式 AI 固有的局限。”

华为云 PaaS 技术创新 LAB 技术专家 申博

华为云 PaaS 技术创新 LAB 技术专家申博为我们带来了他《在 GPT-4 时代,重新思考 AI 编程》的精彩分享。

他认为工具的存在旨在提高程序员的开发效率,然而其质量也同样重要。首先,生成的代码中可能存在未知的错误和漏洞。随着生成的内容越多,其质量就越成为一个重要话题。其次,实际项目中往往涉及很多设计模式和框架,需要综合多个文件和不同层次的代码,同时掌握较强的专业和领域知识,才能了解程序的具体含义和功能。再者,自监督的预训练方式是基于自然语言序列的顺序性,但写代码时并非如此,程序员往往会在多份代码中不断跳转和编辑,甚至进行全局的重构。如此一来,仅靠大规模语言模型很难覆盖以上所有情况,即使强大如 GPT-4。

申博认为,交互与协同才是核心。交互与协同不仅指人与AI或工具之间的交互,也包括模型与现有工具之间的交互,以及现有工具之间可能存在的交互。

程序员需要大模型来运用这些工具,就涉及到类似于“ Toolformer ”(Tool Transformer)的组合,即语言模型可以教自己使用工具。该思想的核心是让模型具备人类的能力,让它自主地学会决定应该使用哪些工具以及如何调用这些工具。在经过多轮的训练后,模型可以具备此类能力,并在它生成的文本中插入 API 调用,将 API 返回的结果融合到预测中。

除了让模型调用工具,将模型视为主流工具中的一个环节也是一种可行的思路。与 Toolformer 中让模型调用工具不同,基于语言模型即服务(Language Model as a Service)的方式,使现有工具能够调用模型,这是未来非常有发展潜力的方向。

来自北京大学的研究者们认为,软件代码是程序员对这个世界的理解与表达,在这个过程中,一些个性化东西也被加入到代码中,国外许多开源项目的所有者把代码写成了艺术。随着AI编程的发展,现代化编程中机械化的东西越来越少,所以新程序员们需要更多地关注编程的艺术层面,例如设计架构以及优化算法的优美性。华为云推出了CodeArts 服务来帮助开发者们面向未来转型,CodeArts 提供了一整套软件开发流程,其中包括 CodeArts Snap 智能编程助手,Snap 基于代码生成不局限于代码生成,其最终目的是同时提高开发的效率和质量。

演讲的尾声,他总结道:从前我一直在思考 ChatGPT 这种交互方式什么时候会被应用于 IDE,随着 GitHub Copilot X 的发布,现在 GPT-4 已经来到 IDE 中。因此我们需要重新思考 AI 编程,未来它一定会成为像IDE一样的必备工具。像使用 IDE 一样适应 AI 吧,AI 不会取代人类,但掌握 AI 技术的人将取代另一些人。

为了产业生态发展,开源代码生成模型

“近两年有两个重要的行业动态,一个是 AlphaCode 登上《Science》杂志封面,证实了预训练的代码生成模型可以达到参加编程竞赛的程序员平均水准。另一个是 Copilot 问世,首次证实了在大量源代码语料上进行训练,能取得远超传统方法的代码生成效果。但很遗憾,以上提到的技术全部来自国外,全部都是闭源的,只能被用于产品使用或调用 API 。

中国科学院软件研究所研究员、博士生导师 王俊杰

前面谈到了许多如何利用大模型实现代码生成的问题,在自动化测试领域,大模型是否同样有所助益?中国科学院软件研究所研究员、博士生导师王俊杰为我们带来了《基于LLM的自动化测试》的思考。

对开发人员而言,尽管大模型已非常强大,但其生成的代码仍然不能完全信任。虽然开发人员希望代码生成百分之百正确的,然而对于测试而言,这些问题对结果影响不大。测试本就是为了找出 Bug,即使无法找到,也能节省大量的人工工作量。

王俊杰及其团队的工作是基于大型模型进行自动化测试。

近年来自动化图形用户界面(GUI)测试被广泛用于帮助开发团队确保移动应用程序的质量。然而许多 GUI 需要适当的文本输入才能进入下一页,文本输入的质量成为影响测试覆盖率的主要障碍。由于有效文本输入(例如航班的出发地、电影名称、用户血压信息等)具有多样性和语义要求的特点,实现文本输入生成的自动化是一项具有挑战性的任务,其难度主要体现在两个方面,一是输入时需要生成不同类型的特定值,例如地图应用程序的街道地址;二是在同一 GUI 页面内需要体现文本之间的关联性,例如航班搜索中出发和到达地需要是不同位置。如果文本输入不恰当,自动化测试工具将无法进入下一个 UI 页面,从而导致测试的充分性低下。

针对以上的挑战,团队提出了一种上下文感知的自动文本输入生成方法 QTypist,即使用预先训练的大型语言模型(LLM)来智能地生成语义输入文本,以增强移动 GUI 测试。其设计逻辑是,先给定一个带有文本输入的 GUI 页面及其相应的视图层次结构文件,通过提取文本输入的上下文信息,来设计语言模式以生成提示作为 LLM 的输入。同时,为了提高 LLM 在移动 GUI 中文本输入的性能,团队还开发了一种基于提示的数据构建和调优方法,以自动提取用于模型调优的提示和答案。

圆桌部分:成就大模型时代的应用开发者

在 AI 编程分论坛最后一个环节,由论坛出品人、华为云智能化软件研发首席专家王千祥主持,微软亚洲研究院高级研究工程师卢帅,aiXcoder联合创始人郝逸洋,华为云 PaaS 技术创新 LAB 技术专家申博,清华大学知识工程实验室研究助理郑勤锴,中国科学院软件研究所研究员、博士生导师王俊杰围绕“AI编程现状与未来,成就大模型时代的应用开发者”,共论新时代开发者的新机遇与成长。

从左至右:王千祥 卢帅 郝逸洋 申博 郑勤锴 王俊杰

大型模型出现后,许多新的开发项目将随之诞生,这对开发者而言是好是坏?需要在哪方面提升?华为云 PaaS 技术创新 LAB 技术专家申博认为,此事对程序员的好处大于坏处。他们需要把自己的思维放在一个老板的位置上,编程神器Copilot 会向你推荐出多种实践方案,让你去选择与思考其中最佳。这不仅让程序员享受到了使用者的便捷,同时也在倒逼他们提高编程能力。在这个过程中,程序员需要将其作为一个伙伴、一个老师,而不只是一个下属,在于它平等对话的过程中,也能实现自身能力的提升。当你从“ Copilot ”变成“ Captain ”,你将成为自己的船长。

这是否意味着软件开发人员将会迎来一次巨大的飞跃?微软亚洲研究院高级研究工程师卢帅认为,飞跃进展应该会很大。但在这个领域还有一个待解决的问题,那就是测试。对于人类来说,短时间内可能很难完全相信人工智能生成的东西,因此提高测试的效率对于人工智能来说是有研究价值的。人工智能会对整个软件开发,特别是编写代码这个环节的效率有非常大的提升。

但 aiXcoder 联合创始人郝逸洋有不同观点:根据他的落地实践经验,在短期内实现显著的生产力提升是相当困难的。程序员并非将大部分时间都花在写代码和开发新功能上,而是在调试 Bug,可能 90 %的时间都是如此。但如今却没有讨论这个问题,原因在于目前的AI技术还没有达到相应水平,无法协助程序员完成 deBug。如果它可以助你实现这一目标,才是真正的震撼,意味着突破来了。

那么,对于未来的程序员而言,哪些技能的培养更为重要?清华大学知识工程实验室研究助理郑勤锴认为:在将来,程序员需要具备一些更高级的技能和思维,比如 Geek (极客)思维,你需要了解问题在哪里?哪些方面可能需要优化?如何提出这些问题?一个初级程序员很可能不知道问题在哪里以及何处可以优化,所以你需要理解整个编程系统或架构的设计,这将帮助你获得这种技能。目前 GPT 对代码的认识还不够全面,这就需要开发者从一个更全面的角度出发,具体描述每个模块,确定哪些环节较薄弱,哪些可以进行优化。这种能力非常重要,开发者应该更加注重学习它。

对于 GPT-4 模型将推动哪些领域与技术革新,大家展开了大胆预测。

aiXcoder 联合创始人郝逸洋表示:一般来说程序员写软件需要编写代码,并在编译后按照指令执行程序。现在我们已经可以让 AI 直接生成代码,那么为何不让它直接生成机器指令并且去执行呢?如果 AI 作为操作系统可以直接控制硬件,当程序员下达一个指令后,AI 便会立刻执行,并不需要程序员的参与。那么程序员是否可以将这些新技术和指令传授给 AI,让其掌握并独立操作?如此一来他们就可以解放双手去编写驱动、操作系统和软件或是研发新的硬件,这就是软件 3.0 的图景。

华为云 PaaS 技术创新 LAB 技术专家申博考虑到:数据是否会遇到“数据荒”的问题。当模型越来越大,对硬件性能要求越来越高,而人类社会的语言文字、以及多模态数据都是有限的资源。我们现在拥有如此庞大的数据量,是多年的积累的成果。不能期望这种缓慢自我发展来产生数据,我们能否让 AI 自我演进?这种自我演进的过程,正好符合人类自我创造和自我学习的机制。这个问题值很得研究。如果某些领域的数据相对较少,就可以考虑通过自我生成数据的方式学习,以达到与大数据同样的效果。“自我创造智能”是个有前途的方向。

中国科学院软件研究所研究员、博士生导师王俊杰则希望看到大型智能型应用能够帮助更多使用不便的人,如老年人。大多数人认为非常方便易用的手机,可能对于年长一些的人并不友好,他们不知道要如何预订机票或如何使用应用。有朝一日是否可以省略中间层,让应用变得更加智能、易用,让老年人或不便者可以通过输入指令轻松完成日常任务?此外,若干年后,当大型模型能够达到自我意识,也会带来一些令人担心的问题。

除了上述问题,现场观众也积极提问,绝不放过向专家们取经的机会:对新手来说,如何评价AI大模型推荐的代码的优劣?

对代码自动化测试颇有研究的王俊杰接过了话筒:在理想情况下,如果有测试用例就能够做到,但在现实情况下,很多时候并没有测试用例,也不太知道自己能得到什么样的结果,因此还得在软件完成之后的系统测试阶段对它进行比较完整的测试。

这个场景非常具体,对于新手要如何评测自己是否采纳AI推荐的代码,我们也没有太丰富的经验,在这里仅和大家分享一点新的想法。早前人们使用传统的机器学习算法时,在推荐给出一些结果的同时也会给出其概率,未来大模型是否能参考前者,为生成的结果附上概率,帮助人们确定AI推荐的代码是否为自己所需,如果能有这样的 Guideline,在选择的时候就更有针对性。对于大模型显示不太确定的内容,就增加人工审查力度,反之则减少人工审查工作量。

探索“新程序员”边界,拥抱AI新纪元

至此,AI 编程技术论坛完满落幕,但关于AI与编程的探讨与创新不会停下脚步。

未来,程序员在人工智能产品的协助下会明显提升单兵作战能力,技术团队会有更多时间用于创新,很多程序员也会承担起一部分产品经理甚至是老板的责任。CSDN 也将与你一起持续探索“新程序员”的边界。

不论你是否主动拥抱 AI,属于AI的时代已经来临,打不过那就加入吧!

0
点赞
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与华威派无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非华威派)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@goodmaoning.com
关于作者
素素鴉(普通会员)
点击领取今天的签到奖励!
签到排行
0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索