彭鑫(复旦大学)访谈主题大模型对软件开发的影响
发表时间:2023-11-13 16:02:12
文章来源:炫佑科技
浏览次数:211
菏泽炫佑科技
彭鑫(复旦大学)访谈主题大模型对软件开发的影响
从GPT4到GPT4,*近大模型的迭代速度非常快,不断刷新着我们的知识。 从一些行业专家的初步尝试来看,大型模型在很多软件开发任务甚至从需求到代码的端到端自动生成小型程序方面已经具备了较强的能力。 看起来大型模型将颠覆软件开发。 事实真的如此吗? 软件开发真的不需要除了产品经理和代码审查员之外的其他人吗? 为了在迷雾中看清未来的道路,我临时在智能软件工程学术沙龙群发起了线上会议,听听工业界和学术界的专家怎么说。 此次会议吸引了80余人在线参与,听取了一些感悟,特此记录。
——彭欣(复旦大学)
采访话题
大型模型对软件开发的影响
采访演讲记录
彭鑫:
今天我们想讨论大型模型是否会颠覆软件开发。 想象一下软件开发,一个企业的软件开发项目通常需要花费大量的精力来明确需求。 为此,会写很多需求文档。 在此基础上,架构师将进行设计,并将任务划分为不同的组。 在此基础上,大量开发人员将基于Git等实现协同开发和持续测试集成。 大车型的到来会在多大程度上改变这种开发模式,让各种开发角色消失,是很多人关心的问题。 那么今天我请专家来聊聊大模型对软件开发的影响。 下面请老师们分享一下他们的想法和感受。 张刚博士这两天刚刚分享了他使用大模型开发完整俄罗斯方块游戏的经验。 请先谈谈他的感受。
张刚:
我正在尝试开发一款名为俄罗斯方块的游戏。 我发现为大型模型编写代码的结构非常好。 从外到内,先写整体框架,然后一点一点添加程序内容。 在交互过程中,基本上感觉不到你是在和机器交流。 大模型应该已经通过了图灵测试,是个好老师。
彭鑫:
您认为在这个过程中,大模型是否有设计思想,或者只是功能的实现?
张刚:
基本上就设计好了,大模型会从外到内搭建起来,顶层的东西先写好,然后逐步实现。
彭鑫:
你觉得在提问的过程中,有没有自己的想法或者设计,相当于给了大模型一些提示?
张刚:
这个是存在的,所以我发现只要有设计思路和编码,对于一个大的模型基本上是可以解决的。
彭鑫:
陈志*近也做出了一些尝试和探索。 请谈谈你的感受。
陈志:
我认同的一个观点是,要善于提出问题,拆解问题,一步步引导大模型解决问题。 人工智能具有非常好的执行非常具体步骤的能力。 我相对看好大模型,因为大模型所展现的基础能力对于企业生产力来说是有价值的。 一般来说,企业使用的API范围比较小。 将这种特定领域的知识喂给大模型后,模型可以快速适应并生成代码,从而提高企业的生产力,所以我认为大模型的性能非常好。 虽然大型模型的输出会存在一些错误,但这些错误很容易识别,人们只需要关注其正确的输出即可。
彭鑫:
大模型如何用少量样本快速学习特定领域的知识? 大型模型通常非常擅长回答常识性问题,就像在纸上一样。 但在实际开发实践中,设计需要基于实际问题和模式,而当项目规模增大时,模型是否真的具备把握长期上下文关系、进行高层抽象并应用的能力呢?
陈志:
在小样本能否提高模型能力的问题上,我们尝试使用基于GPT3的“达芬奇”模型,它可以让模型学习新的模式。 但如果是GPT4这样的大模型,参数太多,可能无法用小样本进行微调,所以我们还是需要学会与机器交互,更好地激发机器的能力大模型。
彭鑫:
大模型能力的边界和天花板在哪里? 请与邱锡鹏先生谈谈您的看法。
邱锡鹏:
大模型读了很多代码之后,其语言理解能力已经非常好了。 一般来说,我们人类的需求可能是现有的几种需求的组合,因此大型模型可以帮助完成许多编码任务。 大型模型的能力可能受到限制的是它们的长度,比如缺乏跨文档生成能力,如何设计几个文档之间的关系安排,比如模块的分解和模块之间的关系。 对于大型模型来说,一个非常强大的能力就是思维链,它可以将一个复杂的问题分解为多个简单的问题来解决。 不知道你能否在编码中展现出这样的能力呢?
彭鑫:
大模型的问题分解能力还是很好的。 我更关心的是,大车型真的有很多顶层设计吗? 请与楼建光先生谈谈您的看法。
楼建光:
我是一个极端的乐观主义者。 软件工程设计中其实有很多套路,可以通过某种方式教会模型学习这些套路。 大模型一旦掌握了这些套路,或许就能比很多普通工程师做得更好。 我觉得这些套路都可以总结固化成模型,比如通过方法或方法将知识注入到大模型中,从而提高自动化水平。
彭鑫:
请谢涛先生谈谈您的感受。
谢涛:
我还是比较中立的。 很多不参与设计的码农可能会被大模型取代。 然而,在很多知识不公开的场景下,有很多限制,有特定的上下文,因为这些私有知识,在这些场景下颠覆大型模型仍然很困难。 不在大型模型的知识库中。 因此,大模型只能颠覆一些常见的简单设计,比如前端、后端设计,但不一定能完全颠覆一些高层设计。
彭鑫:
李革老师怎么看?
李哥:
我也是一个乐观主义者。 未来很多场景,可能不再需要手动写程序,只要能把需求说清楚。 软件开发实际上实现了从自然界的解决方案到计算机程序的映射。 在现有的软件开发中,这种映射是依靠编程语言来实现的。 未来,开发者可以清楚地描述他们的解决方案。 ,确实计算机可以自己完成这个映射。 说到软件设计,我认为还涉及到一个数据问题:高层设计可学习的数据相对较少,因此大型模型无法学习。 如果有这样的设计方面的数据和知识,相信大模型凭借一些经验也能学会。 软件设计用于描述解决方案空间的结构。 软件开发人员需要在解决方案空间中进行交流和表达,因此需要使用各种图表。 如果人工智能可以直接从需求映射到代码彭鑫(复旦大学)访谈主题大模型对软件开发的影响,它对设计的依赖可能会更少。 ,需求变化的问题也得到了缓解,包括后续的维护问题。 当然,人工智能也有其自身的局限性。 在个性化场景下,再强的能力,如果没有个性化的环境和背景信息,也是不行的。 因此,未来软件公司的核心是领域知识和领域know-how。 已知但不为他人所知,这些信息可能不容易被大型模型学习到。
彭鑫:
请王吉老师分享一下他的看法。
王吉:
大模型作为一种基础设施,可以部分提高软件开发的生产力,为人们提供更多的创作空间,为软件工程带来更多的想象力和更多的创造性工作。 在大模型的基础上,如何利用即时工程对其进行激发,是大模型开辟的一个大的研究领域和研究空间。
彭鑫:
请张承志先生谈谈您的感受。
张承志:
我是中立的。 在实际开发中,需求可能无法一次性表达清楚,需要在开发过程中逐步将需求写下来。 对于一些不需要领域知识的一般问题,大型模型表现更好。 有些不是通用的,比如操作系统等,大型模型可能不太擅长。
免费讨论记录
张刚:
当资源足够多的时候,记住项目现有的内容应该不难,并且根据现有的上下文改变需求应该没有问题。
楼建光:
如果一个软件项目很容易外包,那么它很容易由机器完成。 如果只能自己做的话,在大模型上可能做不到。
彭鑫:
这个需求本身也可能是一种创新。 如果没有人做过需求,大模型可能没有太大帮助。 此外,许多与软件设计相关的知识缺失,并且往往没有得到充分描述,因此大型模型可能无处学习软件设计相关知识。 当谈到软件设计时,一种标准化的描述可能是使用各种UML图。 然而,即使UML图相对完整,对设计的描述也可能不完整。 有很多设计信息可能仍然需要面对面、口口相传,这是困难的。 直接体现在代码中。 软件设计,尤其是高层设计,可能很难从大型模型中学习,并且通常很难描述设计的所有细节。
沈嘉思:
如果人们不能准确地描述需求,使用大型模型可能会产生低质量的软件,并且生产速度会比以前更快。 未来是否会有更多的机会去探索如何改进这些低质量的软件?
朱少民:
十年前,IBM 借助 UML 生成的代码质量不够好且难以维护。 不过现在GPT-4生成的代码已经非常好了,张刚老师的实验也证实了这一点。 如果GPT-4被广泛使用并产生更多劣质代码或程序,那是人为的,不能归咎于大模型本身。 大型模型尚不完美,需要人机交互智能,取长补短。
楼建光:
你可以把它想象成一个人,人经常会犯错误。 在实践中,我们一般会通过流程控制来防止人们犯错误,例如通过做一些自动化测试来降低出错的概率。 同样,可以保留这些保护措施以改进大型模型的生成代码。 大型模型可以在软件开发过程中同时扮演不同的角色,这些不同的角色可以交互协作,形成虚拟团队。
彭鑫:
假设我们在使用大模型的同时还需要添加各种开发流程,那么这个流程一般应该遵循现有的开发流程,而大模型会在开发过程的各个方面提供部分帮助,同时需要人继续检查。 目前大模型可能还不具备提出问题和决策的能力,所以我怀疑大模型在开发过程中是否会自以为是地跳过一些问题(即在一些需要解决的地方形成自己的解决方案)经开发商确认)。
张莉:
在现实世界中,很多人无法清楚地谈论需求,但是具有领域知识的大型模型可以帮助分析和分解需求。
陈志:
要把大模型转化为生产力,目前需要赋予它更多的能力。 例如,大型模型目前无法同时修改多个文件。 我们可以把这种修改打破或者分解成多个问题让他们来处理,用常规和算法流程来做一些应用层功能,取长补短,让大模型和具体场景结合起来。
李哥:
在描述需求时,不排除可以使用其他形式,比如图片、语音等。到时候设计还会存在吗? 或者说如何定义设计? 毕竟,用图表来描述需求也可以是一种设计。
赵伟:
在软件开发的其他阶段,很多情况下可能不需要手动编程,但在需求和设计方面我更喜欢保守一点。 在企业中,需求的表达包括产品经理,他们有时候表达得不太好,尤其是对一些复杂的业务场景理解不够深入。 另外,还有一些讨论时经常用到的设计架构图。 它们是在白板上绘制的,但这些设计*终可能没有被数字化。 因此,在实际环境中,当高层需求和设计数据较少,或者缺乏高质量的需求和设计数据时,大型模型很难学习并达到理想的需求和设计能力。
郭建梅:
**个问题是,这是否代表着强人工智能时代的到来? 如果是这样,那么我想软件开发工作被人工智能取代只是时间问题。 我目前的知识还很有限,感觉还处于弱人工智能阶段,其学习能力主要是基于数据和模型。 对于软件开发来说,一方面,有些数据不公开,大型模型缺乏这些数据,无法自行学习,自然无法产生高质量的结果; 从这个角度来看,数据的价值和重要性再次凸显。 隐私保护将更加重要。 另一方面,如果软件开发过程本身可以用完整的模型来表达,我认为我们*终可以学习它。 但是,目前很多复杂的软件开发流程可能还没有这么完整的模型,就是我们还没有弄清楚,所以你无法自己去学习; 但是,会产生各种不完整的候选模型,帮助我们思考如何构建完整的模型,这可能会引发一种“建模”复杂软件开发的专业研究。 总之,我目前认为不可能完全取代人类软件开发工程师,但可能会引发一轮社会分工,让人类更倾向于专业化、创造性的工作。
采访结束
一个知识渊博的软件工程公众号
探索智能编程之道
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等