当前位置: 首页 > news >正文

【随笔】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只输入一个字符就自动失去焦点

下面一段代码在每次输入后自动失去焦点&#xff0c;这是因为绑定的:key是动态的&#xff0c;输入改变后都需要重新刷新渲染&#xff0c;这是造成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. 概要 前三篇文章的地址&#xff1a; 定时/延时任务-自己实现一个简单的定时器定时/延时任…...

自编码器(一)

其实自编码器也可以算是自监督学习的一环&#xff0c;因 此我们可以再简单回顾一下自监督学习的框架。如图1.1所示&#xff0c;首先你有大量的没有标注的 数据&#xff0c;用这些没有标注的数据&#xff0c;你可以去训练一个模型&#xff0c;你必须设计一些不需要标注数据的 任…...

Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway)

Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway) 一、服务网关 1.1 什么是网关 在微服务架构中&#xff0c;服务网关是一个至关重要的组件。它作为系统的入口&#xff0c;负责接收客户端的请求&#xff0c;并将这些请求路由到相应的后端服务…...

40分钟学 Go 语言高并发:Go程序性能优化方法论

Go程序性能优化方法论 一、性能指标概述 指标类型关键指标重要程度优化目标CPU相关CPU使用率、线程数、上下文切换⭐⭐⭐⭐⭐降低CPU使用率&#xff0c;减少上下文切换内存相关内存使用量、GC频率、对象分配⭐⭐⭐⭐⭐减少内存分配&#xff0c;优化GC延迟指标响应时间、处理延…...

一文解析Kettle开源ETL工具!

ETL&#xff08;Extract, Transform, Load&#xff09;工具是用于数据抽取、转换和加载的软件工具&#xff0c;用于支持数据仓库和数据集成过程。Kettle作为传统的ETL工具备受用户推崇。本文就来详细说下Kettle。 一、Kettle是什么&#xff1f; 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++中级篇——通信的数据的传递形式

一、通信的数据传递 在开发程序中&#xff0c;无可避免的会进行数据的传递。这种传递方式有很多种&#xff0c;字节流、消息、Json、参数以及对象甚至可能的方法。那么在传递这些数据时&#xff0c;如何正确的采用更合适的方法&#xff0c;就成为了一个设计的首选的问题。 二…...

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. 函数签名不一致的问…...

打造双层环形图:基础与高级渐变效果的应用

在数据可视化领域&#xff0c;环形图因其独特的展示方式而广受欢迎。今天&#xff0c;我们将通过ECharts库来创建一个具有双层渐变效果的高级环形图。本文将详细介绍如何实现这种视觉效果。 1. 环形图基础 首先&#xff0c;我们需要了解环形图的基本构成。环形图由内外两个圆…...

【Git】Git 完全指南:从入门到精通

Git 完全指南&#xff1a;从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一&#xff0c;它帮助开发者高效地管理项目&#xff0c;支持分布式协作和版本控制。无论是个人项目还是团队开发&#xff0c;Git 都能提供强大的功能来跟踪、管理代码变更&#xff0c;并保障…...

【mac】mac自动定时开关机和其他常用命令,管理电源设置的工具pmset

一、操作步骤 1、打开终端 2、pmset 是用于管理电源设置的强大工具&#xff0c;我们将使用这个命令 &#xff08;1&#xff09;查询当前任务 pmset -g sched查看到我当前的设置是 唤醒电源开启在 工作日的每天早上8点半 上班时不用手动开机了 &#xff08;2&#xff09;删…...

【Leecode】Leecode刷题之路第62天之不同路径

题目出处 62-不同路径-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 62-不同路径-官方解法 方法1&#xff1a;动态规划 思路&#xff1a; 代码示例&#xff1a;&#xff08;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相机预览变形的处理

最近遇到一个问题&#xff0c;相机更换了摄像头后&#xff0c;发现人像角度顺时针旋转了90度&#xff0c;待人像角度正常后&#xff0c;发现 预览时图像有挤压变形&#xff0c;最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示&#xff0c;顺时针旋…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...