【随笔】AI大模型对软件开发的影响
随着 AI 技术的不断发展,AI大模型正在重塑软件开发流程,从代码自动生成到智能测试,未来,AI 大模型将会对软件开发者、企业,以及整个产业链都产生深远的影响。欢迎探讨 AI 是如何重塑软件开发的各个环节以及带来的新的流程和模式变化,并展望未来的发展趋势~
流程与模式
在AI产于的软件开发过程中,对软件开发流程、代码生成工具、软件调试和bug修复等都会带来新的影响。
软件开发流程
在传统的软件开发过程中,最典型的就是瀑布式开发与敏捷开发,这两者走到了标准与灵活的两个极端,在这两者之中还有迭代开发、增量开发、螺旋开发等。但在具体的软件项目开发过程中,很少完全按照其中的某一种去实施,一般都会动态结合各种模式的优点来优化项目开发过程。
而在AI参与的过程中,以当前的情况来看,软件的开发流程在具体的项目上可能会有新的适配,尤其是在可快速调整的UI、文档等内容上,这些内容甚至都可以基于提示词自动产出。
代码生成工具
在传统方式中,代码生成工具主要集中在一些复用度高的组件上,比如数据模型转代码的的ORM组件、前端的JS组件等。
但在AI助力之后,代码生成的范围更大,甚至能够深入到业务领域层面,提前构建好框架代码,乃至于更进一步,填充部分基础的业务逻辑。从这点上看,对于简单的工程项目来说,AI的代码生成会提速更大。
软件调试与bug修复
软件调试与bug修复是当前AI参与度最高的软件开发过程,AI工具帮助生成单元测试能够快速验证程序的基本功能正确性,AI工具可以帮助分析代码逻辑和潜在风险,以及在bug出现时,AI工具可以帮助定位bug、给出参考建议,这一步将极大的提升研发效率。
优势、挑战及应对策略
在软件研发中,AI能参与哪些,能参与多少,如何更好的使用AI呢?
优势
以当前的发展来看,AI编程带来的显著优势至少有以下几点:
1、让更多的人成为建设者,构建自己的软件。尤其是对于一些有想法的、没编程功底的人来说。
2、提升现有程序员群体的研发效率。俗话说,三分写七分调,智能补全、bug查找与改进建议等,都将加速提升现有程序员的生产力。
3、扩展现有程序员群体的能力幅度。在专业化分工的时代,前后端、不同语言之前都是有明显鸿沟的,但在AI助力之后,这些鸿沟慢慢的变浅了,可以尝试着跨越体验下了。
挑战
在极大的利好下,也存在着不少挑战:
1、程序语言也是一种思想的表达,同样的需求不同的人员实现的方式也不一样。那么AI如何将这种需求准确的编码出来,并基于一些特定的规范,对于AI训练的语料库、生产的代码质量等都是挑战。
2、如何能够真正的投入到生产中去,尤其是在一些核心的场景。当前看到的绝大多数都是使用AI的部分功能,如代码补全、bug诊断、测试用例生成等;比较完整的代码生产还是在于一些创新性的新应用上,并没有投入到核心生产系统的案例。
3、AI代码的可读性,以及与人的协作度。随着业务的越来越复杂,需要涉及的智力活动越来越多,AI如何增量的迭代,并提供良好的可读性,能够与人一起写作提升。
应对策略
1、根据场景选择,让AI发挥最大价值。比如在概念验证、新场景的生成等,可以大胆的尝试用AI,它可以更加快速的产出,可以尽早的审视产品。
2、不要强AI所难。认识到AI的当前局限性,给它合适的工作。
3、做好把控。人作为产品的最后一道防线,做好把控。
相关文章:
【随笔】AI大模型对软件开发的影响
随着 AI 技术的不断发展,AI大模型正在重塑软件开发流程,从代码自动生成到智能测试,未来,AI 大模型将会对软件开发者、企业,以及整个产业链都产生深远的影响。欢迎探讨 AI 是如何重塑软件开发的各个环节以及带来的新的流…...
JAVA中接口类和抽象类的区别
在Java中,接口(Interface)和抽象类(Abstract Class)都是实现抽象概念的方式,但它们之间存在一些关键的区别: 1. 定义和声明 抽象类: 使用abstract关键字声明。可以包含构造方法、成…...
【AI系统】昇腾 AI 架构介绍
昇腾 AI 架构介绍 昇腾计算的基础软硬件是产业的核⼼,也是 AI 计算能⼒的来源。华为,作为昇腾计算产业⽣态的⼀员,是基础软硬件系统的核⼼贡献者。昇腾计算软硬件包括硬件系统、基础软件和应⽤使能等。 而本书介绍的 AI 系统整体架构&#…...
uniapp input只输入一个字符就自动失去焦点
下面一段代码在每次输入后自动失去焦点,这是因为绑定的:key是动态的,输入改变后都需要重新刷新渲染,这是造成input只能输入一次就自动失去焦点的原因。 <view class"" v-for"(item, index) in phoneList" :key"…...
定时/延时任务-ScheduledThreadPoolExecutor的使用
文章目录 1. 概要2. 固定速率和固定延时2.1 固定速率2.2 固定延时 3. API 解释3.1 schedule3.2 固定延时 - scheduleWithFixedDelay3.2 固定速率 - scheduleWithFixedDelay 4. 小结 1. 概要 前三篇文章的地址: 定时/延时任务-自己实现一个简单的定时器定时/延时任…...
自编码器(一)
其实自编码器也可以算是自监督学习的一环,因 此我们可以再简单回顾一下自监督学习的框架。如图1.1所示,首先你有大量的没有标注的 数据,用这些没有标注的数据,你可以去训练一个模型,你必须设计一些不需要标注数据的 任…...
Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway)
Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway) 一、服务网关 1.1 什么是网关 在微服务架构中,服务网关是一个至关重要的组件。它作为系统的入口,负责接收客户端的请求,并将这些请求路由到相应的后端服务…...
40分钟学 Go 语言高并发:Go程序性能优化方法论
Go程序性能优化方法论 一、性能指标概述 指标类型关键指标重要程度优化目标CPU相关CPU使用率、线程数、上下文切换⭐⭐⭐⭐⭐降低CPU使用率,减少上下文切换内存相关内存使用量、GC频率、对象分配⭐⭐⭐⭐⭐减少内存分配,优化GC延迟指标响应时间、处理延…...
一文解析Kettle开源ETL工具!
ETL(Extract, Transform, Load)工具是用于数据抽取、转换和加载的软件工具,用于支持数据仓库和数据集成过程。Kettle作为传统的ETL工具备受用户推崇。本文就来详细说下Kettle。 一、Kettle是什么? Kettle 是一款开源的 ETL&#x…...
Tomcat新手成长之路:安装部署优化全解析(上)
文章目录 1.Tomcat简介2.Tomcat原理架构2.1.总体架构2.2.连接器2.2.1.具体功能2.2.2.IO模型2.2.3.逻辑处理流程2.2.4.内部处理流程 2.3.容器2.4.启动过程2.5.请求过程 3.Tomcat适用场景4.Tomcat与其他Web容器对比5.Tomcat安装和启动5.1.Java环境变量5.2.系统服务5.3.启动关闭 6…...
跟我学C++中级篇——通信的数据的传递形式
一、通信的数据传递 在开发程序中,无可避免的会进行数据的传递。这种传递方式有很多种,字节流、消息、Json、参数以及对象甚至可能的方法。那么在传递这些数据时,如何正确的采用更合适的方法,就成为了一个设计的首选的问题。 二…...
C语言 qsort及应用
qsort及应用 qsort:快速排序函数,需要引用stdlib.h文件. void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *, const void *) ); 参数: base:需要排序的数组 num:数据个数(数组长度) width:每个数据的字节数(sizeof(数据类型)) compa…...
【C语言】连接陷阱探秘(4):检查外部类型
目录 一、外部类型概述 1.1. 外部类型的重要性 1.2. 外部类型在C语言中的使用 1.3. 注意事项 二、常见的外部类型陷阱 2.1. 结构体和联合体的大小不匹配 2.1.1. 示例代码 2.1.2. 正确的做法 2.2. 枚举类型的值不匹配 2.3. 函数签名不一致 2.3.1. 函数签名不一致的问…...
打造双层环形图:基础与高级渐变效果的应用
在数据可视化领域,环形图因其独特的展示方式而广受欢迎。今天,我们将通过ECharts库来创建一个具有双层渐变效果的高级环形图。本文将详细介绍如何实现这种视觉效果。 1. 环形图基础 首先,我们需要了解环形图的基本构成。环形图由内外两个圆…...
【Git】Git 完全指南:从入门到精通
Git 完全指南:从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一,它帮助开发者高效地管理项目,支持分布式协作和版本控制。无论是个人项目还是团队开发,Git 都能提供强大的功能来跟踪、管理代码变更,并保障…...
【mac】mac自动定时开关机和其他常用命令,管理电源设置的工具pmset
一、操作步骤 1、打开终端 2、pmset 是用于管理电源设置的强大工具,我们将使用这个命令 (1)查询当前任务 pmset -g sched查看到我当前的设置是 唤醒电源开启在 工作日的每天早上8点半 上班时不用手动开机了 (2)删…...
【Leecode】Leecode刷题之路第62天之不同路径
题目出处 62-不同路径-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 62-不同路径-官方解法 方法1:动态规划 思路: 代码示例:(Java&…...
基于深度学习的手势识别算法
基于深度学习的手势识别算法 概述算法原理核心逻辑效果演示使用方式参考文献 概述 本文基于论文 [Simple Baselines for Human Pose Estimation and Tracking[1]](ECCV 2018 Open Access Repository (thecvf.com)) 实现手部姿态估计。 手部姿态估计是从图像或视频帧集中找到手…...
helm部署golang服务
Helm 是 Kubernetes 的一个包管理工具,类似于 Linux 中的 apt 或 yum。它使得在 Kubernetes 上部署和管理应用程序变得更加简单和高效。 安装 https://get.helm.sh/helm-v3.16.3-linux-amd64.tar.gz具体版本号可以在github上看到最新的版本号,然后替换上面链接来获取。gith…...
DreamCamera2相机预览变形的处理
最近遇到一个问题,相机更换了摄像头后,发现人像角度顺时针旋转了90度,待人像角度正常后,发现 预览时图像有挤压变形,最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示,顺时针旋…...
Mysql误删表中数据与误删表的恢复方法
查看数据库是否开启binlog日志 mysql> show variables like %log_bin%; ------------------------------------------------------------------------ | Variable_name | Value | ------------------------------------…...
lapack、blas、solver库的区别和联系
LAPACK、BLAS、Solver 库 是数值计算领域的重要组成部分,它们各自的功能和设计目标有所不同,但也存在密切的联系。 1. 概述 库主要功能设计目标BLAS提供基础的线性代数操作,如向量运算、矩阵-向量乘法、矩阵-矩阵乘法等。提供高度优化的基础线性代数操作,作为更高级库的底层…...
deepin 安装 chrome 浏览器
deepin 安装 chrome 浏览器 最近好多小伙伴儿和我说 deepin 无法安装最新的谷歌浏览器 其实是因为最新的 谷歌浏览器 其中的一个依赖需要提前安装 提前安装依赖然后再安装谷歌浏览器就可以了 安装 fonts-liberationsudo apt -y install fonts-liberation安装 chrome 浏览器sudo…...
永久免费的PDF万能水印删除工具
永久免费的PDF万能水印删除工具 1.简介 PDF万能水印删除工具,可以去除99.9%的PDF水印。例如:XObject水印(含图片水印)、文本水印、绘图水印/曲线水印、注释水印、工件水印、剪切路径水印等等。本软件是永久免费,无有…...
Linux网络——NAT/代理服务器
一.NAT技术 1.NAT IP转换 之前我们讨论了, IPv4 协议中, IP 地址数量不充足的问题,NAT 技术就是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能。 NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是一种将私有 IP 和全局IP 相互转化的技术方法: 很…...
大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO,VOC,COCO格式标注,4070张图片的数据集
大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO,VOC,COCO格式标注,4070张图片的数据集 数据集分割 4070总图像数 训练组 87% 3551图片 有效集 9% 362图片 测试集 4% 157图片 预处理 自动定向…...
基于Java的小程序电商商城开源设计源码
近年来电商模式的发展越来越成熟,基于 Java 开发的小程序电商商城开源源码,为众多开发者和企业提供了构建个性化电商平台的有力工具。 基于Java的电子商城购物平台小程序的设计在手机上运行,可以实现管理员;首页、个人中心、用户…...
node.js基础学习-fs模块-文件操作(六)
一、前言 fs模块是 Node.js 内置的文件系统(File System)模块,它提供了一系列用于与文件系统进行交互的方法。通过fs模块,可以对文件或目录进行读取、写入、删除、重命名、查询状态等操作,这使得 Node.js 能够很好地处…...
设计模式:11、迭代器模式(游标)
目录 0、定义 1、迭代器模式的四种角色 2、迭代器模式的UML类图 3、示例代码 4、迭代器的next()方法与集合的get(int index)方法的效率对比(LinkedList为例) 0、定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象…...
Oracle SCN与时间戳的映射关系
目录 一、基本概述 二、相关操作 三、参考文档 一、基本概述 Oracle 数据库中的 SYS.SMON_SCN_TIME 表是一个关键的内部表,主要用于记录过去时间段中SCN与具体的时间戳之间的映射关系。这种映射关系可以帮助用户将 SCN 值转换为可读性更强的时间戳,从而…...
视频类网站备案/常德seo
算法提高 素数求和 时间限制:1.0s 内存限制:256.0MB问题描述输入一个自然数n,求小于等于n的素数之和样例输入2样例输出2数据规模和约定测试样例保证 2 < n < 2,000,000作者注释:水平有限,此题有些不知所措——…...
企业网站网络营销案例分析/网络营销的内容主要有哪些
女生一般不会研究笔记本电脑CPU是什么?显卡是什么?性价比足够不足够?以本我多年推荐(bei)经(zhe)验(mo)来看,女生一般只想要笔记本电脑好看。。。以直男来看大多数女生应该会喜欢精致且外观漂亮的轻薄本,所以本篇回答会…...
百度网站审核期时间/北京seo课程
在此,我将Oracle中的约束总结为6种,即: lNOT NULL约束 DEFAULT约束 (DEFAULT在Oracle中好象没有被作为约束处理,因为创建后从USER_CONSTRAINTS中查不到,有谁知道怎么查,还望不吝赐教)lPRIMARY KEY约束 ll…...
快速建设网站视频教程/网络营销的营销理念
JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能实现JDK的动态代理,cglib是针对类来实现代理的,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以…...
wordpress 登陆查看/优化设计卷子答案
JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换: String json1"{name:zhangsan,age:23,interests:[{interest:篮球,colors:[绿色,黄色]},{interest:足球,colors:[红色,蓝色]}]}"; String json2&…...
网站开发seo要求/建什么网站可以长期盈利
ctrlalts,在搜索栏中搜JavaScript, JavaScript language version. 默认都是ecma5.1,改成ECMAScript6....