您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

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

时间:2022-12-01 10:54:53  来源:CSDN  作者:

作者 | 卞安       责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

AI 作画,作为一个局部领域的产品方向,在基于机器学习算法基础上,为世界打开了一扇大门,随着 AI 作画类软件的大放异彩,基于 AI 进行内容生产话题也越来越受到关注。

作为一名程序员,我们又应该怎么来看待 AI 的这些成果对于开发方式的影响,在此,笔者有幸受邀为各位小伙伴分享一下个人的看法。

在美国科罗拉多州艺术博览会上基于 Midjourney 获奖的 AI 画作《太空歌剧院》

AI 将改写程序员的开发方式

AI 的底层算法一般是基于神经网络进行建模,通过在神经元上的数学算法不断的训练数据调整建模,使误差向最小靠近的过程。这是一种非常酷的思维方式,它使得计算机可以通过算法寻找到数据变化的趋势。在此基础上发展起来的生成对抗网络,使得计算机学习和模仿数字化内容变的更加可信,这些数字化内容不但包括文本(新闻和小说生成)、图像(AI绘图与视频),3D 模型(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%。

2. GodeGeeX:通过输入文字描述让 IDE 自动提示并生成代码。

与此相近的一款国产工具叫做 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 五种主流编程语言,而且在准确度上表现较好。

除此之外,还有 Kite、Codota、DeepCode 等一些基于机器学习的 AI 代码生成工具,本质上都是通过大量的代码训练,来智能预测出需要生成的代码,加快编程的效率。

总体来说,这一阶段的产品推动者不需要面向业务,只需要考虑面向程序员,可以达到辅助程序员提升业务开发速度的目标,也可以较好的通过工具化产品形成规范,解决企业的代码风格化统一问题。未来可能会广泛的成为程序员工作中的标配,程序员将不会再花大量的精力在高复用度的具体代码函数设计,而更多的把精力放在业务模块的设计实现。

第二阶段:业务模块的智能生成

这一阶段的主要体现是:通过搜集、归类、梳理相关领域业务开发项目中大量的通用业务(如游戏研发中的登录模块、热更新模块、聊天模块、战斗模块等业务逻辑)形成数据集,通过对业务设计意向和数据集进行训练和学习的方式,自动的进行业务模块前后端框架生成,优化工作流程,提升业务模块的产品设计迭代和研发速度。

我们可以通过一个实例工具软件来理解这个过程,Adobe 推出过的网页三剑客之一的 Dreamweave,其中提供了大量的模块生成功能,比如通过设定数据集和表单的控件对应关系,就可以生成前后端的代码,实际提供一个可以运行的业务模块。

当然,这是由没有结合人工智能辅助的情况,如果基于新的智能化生成,那我们在开发时,智能化生成模块会自动跟据上下文来提示是否需要生成相应的业务前后端模块,我们只需要再跟据生成的模块进行微调或扩展即可达到我们的要求。

下图是笔者使用 DreamWeaver 来生成一个简单的登录模块,只需要设定一下数据表字段,即可生成表单,完成登录判断和跳转功能。

又或者在游戏开发领域。作者曾在企业负责技术中台设计时,推动过面向各游戏项目组通用业务模块的抽象与开发,比如热更新、原生接口调用,甚至包括游戏战斗机制等大量的通用业务,对于每一个项目几乎都是需要的,只是因为技术栈或者界面的不同而需要重复的开发,这些工作往往耗时耗力。

站在一个更高的维度,这些业务完全可以基于机器学习训练结合需求变化被快速地进行调整而满足各个项目的使用。所以,基于企业的技术中台,把这些通用业务的统一框架和智能化定制与人工智能结合,基于主流开发软件、引擎工具或平台工具推出可实际操作的软件或插件。从而形成更好的开发工作流是非常有意义的。

这个阶段目前是各领域企业争相降本增效的方向之一,程序员的工作正在进一步从通用业务开发中解放,而把更多的把精力放在具体产品的需求上。

第三阶段:产品原型的智能生成

这一阶段主要体现是:通过对产品研发工作流中可智能化生成的部分进行整合和优化,达到能够根据用户需求自动的生成具备完整功能逻辑和效果表现的产品项目原型的目标,帮助产品经理快速看到期望的结果。

这里以几个案例加以说明:

一、市场上大量自助建网站电商小程序类的平台。

这些平台直接面向用户方,提供给用户可以自助订制化的业务模块并生成最终产品的服务。如腾讯云的自助式建站:

这些平台虽然具备直接生成最终产品的能力,但其底层逻辑主要是基于一定数量的前后端模板和风格模板进行组合,通过固化的需求条目选项得到产品各模板模块的组合结果,产品的领域有限、形态有限、规模有限,目前大部分不具备通过对用户需求分析和产品形态数据集进行机器学习来生成目标产品的能力。

在数字人研发企业里,目前已经在通过对人脸照片,动作视频采用人物脸部识别,动作识别技术来建立模型数据集,通过机器学习对三维模型重建和自动动作绑定,快速化生产高精度数字人,这种方式与以往通过美术建模,手动绑定骨骼及人物动作的工作流有较大差别,它可以大大的加快数字人的生成效率、规模和精度。

在 GTC 大会上,黄仁勋宣布推出一个全方位的虚拟化身平台 —— Omniverse Avatar(来源:https://developer.nvidia.com/nvidia-omniverse-platform/ace)

二、在一些游戏方向,如剧情文字类游戏(AVG)领域,开发者也在通过剧本生成,二次元立绘生成类软件,通过脚本进行完整的游戏产品生产尝试,可以将原本需要几个月才能完成的剧情文字游戏,在短短几个小时内生成出来。

当然,这些方面的业务相对简单,但随着人工智能的发展,相信不久的未来,一个软件产品设计师可以通过提供一些简单的需求描述得到一个完整可运行的产品DEMO。它所要做的,是通过不断的修改需求描述来不断提交,得到期望的产品原型。

总结

最后,我想说的是,内容生成的算法目前在一些方面有了较大突破,但在软件开发领域,特别是开发者工具领域,我们也需要相关企业和创业者不断的结合这些突破,落地到具体的工具软件产品中来提升开发者的工作流程和体验,推出更好的产品形态,谁能够在未来提供更好的智能化内容生成体验,也就会在未来更受欢迎。

作者介绍:卞安,游戏引擎技术专家,CSDN 博客专家,独立软件创业者。从事游戏研发行业近二十年,孜孜不倦地学习和思考引擎研发技术和工具链设计,曾任端游企业引擎技术总监,Cocos 游戏引擎产品总监。目前在学习游戏引擎与 AI 的结合,致力于开发基于 Python 语言的全栈式开发工具软件产品《PyMe》。



Tags:程序开发   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
我们一起解锁小程序开发新姿势
如今,鸿蒙开发日益受到广大开发者的关注,而小程序开发也早已成为互联网领域的热门话题。那么,我们不禁要问:是否有可能将这两者融为一体,将小程序开发的便捷与高效带入鸿蒙生态中...【详细内容】
2024-03-20  Search: 程序开发  点击:(16)  评论:(0)  加入收藏
网站程序开发中的前后端分离技术
随着互联网的快速发展和技术的不断创新,传统的网站开发模式已经难以满足日益增长的业务需求。为了提高开发效率、增强系统的可维护性和可扩展性,前后端分离技术逐渐成为了网站...【详细内容】
2024-01-31  Search: 程序开发  点击:(23)  评论:(0)  加入收藏
程序开发中常用的十种算法,你用过几种?
当编写程序时,了解和使用不同的算法对解决问题至关重要。以下是C#中常用的10种算法,每个算法都伴随着示例代码和详细说明。1. 冒泡排序 (Bubble Sort):冒泡排序是一种简单的比...【详细内容】
2024-01-17  Search: 程序开发  点击:(45)  评论:(0)  加入收藏
SQL应用于LLM的程序开发利器——开源LMQL
译者 | 朱先忠审校 | 重楼我相信你听说过SQL,甚至已经掌握了它。SQL(结构化查询语言)是一种广泛用于处理数据库数据的声明性语言。根据StackOverflow的年度调查,SQL仍然是世界上...【详细内容】
2023-12-27  Search: 程序开发  点击:(78)  评论:(0)  加入收藏
小程序开发需要多少钱?小程序开发的真实成本:报价案例、费用价格表与开发周期解析
分享一个上海客户的微信小程序定制开发的需求,销售课程与相关商品。项目分为后台管理系统和小程序前端,功能不是太复杂,周期大概1个月,费用3万。大家可能比较关心几个地方,比如一...【详细内容】
2023-12-11  Search: 程序开发  点击:(115)  评论:(0)  加入收藏
重塑 GitHub、颠覆程序开发:GitHub Universe 2023 发布重大更新
编译 | 核子可乐、TinaGitHub 的东家微软看到了生成式 AI 业务的大幅增长,其首席执行官萨蒂亚·纳德拉 (Satya Nadella) 告诉华尔街,GitHub Copilot 软件的付费客户在第...【详细内容】
2023-11-10  Search: 程序开发  点击:(221)  评论:(0)  加入收藏
在程序开发中如何避免OutOfMemory?
避免 OutOfMemory 错误是在程序开发中非常重要的任务,特别是在处理大规模数据或执行长时间运行的任务时。下面是一些方法,以及相关的源代码示例,来帮助你有效地避免 OutOfMemor...【详细内容】
2023-11-08  Search: 程序开发  点击:(24)  评论:(0)  加入收藏
程序开发中是使用XML还是使用JSON作为数据传输格式好?
在程序开发中,使用XML还是JSON作为传输对象是一个常见的问题。两者都是常用的数据交换格式,但在不同的情况下,使用XML或JSON可能会有不同的优势和适用性。XML(可扩展标记语言)是...【详细内容】
2023-10-24  Search: 程序开发  点击:(25)  评论:(0)  加入收藏
程序开发中使用XML还是JSON作为数据传输格式好?
在程序开发中,使用XML还是JSON作为传输对象是一个常见的问题。两者都是常用的数据交换格式,但在不同的情况下,使用XML或JSON可能会有不同的优势和适用性。XML(可扩展标记语言)是...【详细内容】
2023-10-24  Search: 程序开发  点击:(187)  评论:(0)  加入收藏
商家小程序开发:目标制定与运营策略全面解析
随着移动互联网的普及,越来越多的商家开始关注小程序开发,希望通过这一新兴平台吸引更多的消费者。本文将详细阐述商家小程序开发的项目目标、市场分析、产品定位、功能需求、...【详细内容】
2023-09-28  Search: 程序开发  点击:(315)  评论:(0)  加入收藏
▌简易百科推荐
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(2)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(7)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
站内最新
站内热门
站内头条