所想即所得!AI会如何改变程序开发?

作者 | 卞安       责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
AI 作画,作为一个局部领域的产品方向,在基于机器学习算法基础上,为世界打开了一扇大门,随着 AI 作画类软件的大放异彩,基于 AI 进行内容生产话题也越来越受到关注 。
作为一名程序员,我们又应该怎么来看待 AI 的这些成果对于开发方式的影响,在此,笔者有幸受邀为各位小伙伴分享一下个人的看法 。

所想即所得!AI会如何改变程序开发?

文章插图
在美国科罗拉多州艺术博览会上基于 Midjourney 获奖的 AI 画作《太空歌剧院》
AI 将改写程序员的开发方式
AI 的底层算法一般是基于神经网络进行建模,通过在神经元上的数学算法不断的训练数据调整建模,使误差向最小靠近的过程 。这是一种非常酷的思维方式,它使得计算机可以通过算法寻找到数据变化的趋势 。在此基础上发展起来的生成对抗网络,使得计算机学习和模仿数字化内容变的更加可信,这些数字化内容不但包括文本(新闻和小说生成)、图像(AI绘图与视频),3D 模型(AI 生成游戏场景),也包括编程代码和文档 。
虽然我们目前还没有能够走到直接通过 AI 来生成完整的项目的地步,但在 AI 大发展的背景下,如何高效、快速、更好的达到编程目标,正在成为解决问题中一个重要的考虑因素 。
我们可以对比 AI 的工作原理,反思编程工作中的痛点,预测一些潜在的可能性,也许未来这些可能性会极大的推动我们的编程和工作方式 。
从工作形态的进化趋势上来看,预期会分为三个阶段:
所想即所得!AI会如何改变程序开发?

文章插图
第一阶段:编码工作的辅助智能化
这一阶段的主要体现是:通过搜集、归类、梳理编程开发项目中大量的可复用部分(如算法、功能函数或模块)形成数据集,通过对输入意向和数据集进行训练和学习的方式,形成优良的辅助功能,提升程序员的开发效率 。
在具体实践上,一些企业已经推出了相关工具类产品:
GitHub Copilot :  通过语音输入指令让 IDE 自动提示并生成代码 。
Copilot 是 GitHub 今年早些时候推出的人工智能编程辅助工具,2022 年 6  月 22 日已正式上线(https://github.com/features/copilot),定价每月 10 美元(约 66.9 元人民币)或每年 100 美元(约 669 元人民币),对学生用户和流行开源项目的维护者免费提供 。
经过数十亿行代码的训练,它可以将自然语言提示转化为数十种语言的编码建议,支持 Python/ target=_blank class=infotextkey>Python、JAVAScript、TypeScript、Java、Ruby 和 Go 等编程语言 。根据今年 GitHub Universe 开发者大会报告给出的数据,Copilot 已经通过基于 AI 的编码建议,帮助全球开发者的工作效率提高了 55% 。
所想即所得!AI会如何改变程序开发?

文章插图
2. GodeGeeX:通过输入文字描述让 IDE 自动提示并生成代码 。
【所想即所得!AI会如何改变程序开发?】与此相近的一款国产工具叫做 GodeGeeX(https://models.aminer.cn/codegeex/),来自清华大学知识工程实验证(KEG),CodeGeeX 是一款具有 130 亿参数的多语言代码生成模型,采用华为 MindSpore 框架实现,在鹏城实验室“鹏城云脑II”中的 192 个节点(共 1536 个国产昇腾 910 AI 处理器)上训练而成 。
截至 2022 年 6 月 22 日,CodeGeeX 历时两个月在 20 多种编程语言的代码语料库(>8500 亿 Token)上预训练得到 。它可以跟据你的描述,或者上下文自动生成一段代码,和以往的代码补全功能是完成不同的 。目前支持 Python、C++、Java、JavaScript、Go 五种主流编程语言,而且在准确度上表现较好 。
所想即所得!AI会如何改变程序开发?

文章插图
除此之外,还有 Kite、Codota、DeepCode 等一些基于机器学习的 AI 代码生成工具,本质上都是通过大量的代码训练,来智能预测出需要生成的代码,加快编程的效率 。
总体来说,这一阶段的产品推动者不需要面向业务,只需要考虑面向程序员,可以达到辅助程序员提升业务开发速度的目标,也可以较好的通过工具化产品形成规范,解决企业的代码风格化统一问题 。未来可能会广泛的成为程序员工作中的标配,程序员将不会再花大量的精力在高复用度的具体代码函数设计,而更多的把精力放在业务模块的设计实现 。
第二阶段:业务模块的智能生成
这一阶段的主要体现是:通过搜集、归类、梳理相关领域业务开发项目中大量的通用业务(如游戏研发中的登录模块、热更新模块、聊天模块、战斗模块等业务逻辑)形成数据集,通过对业务设计意向和数据集进行训练和学习的方式,自动的进行业务模块前后端框架生成,优化工作流程,提升业务模块的产品设计迭代和研发速度 。


推荐阅读