GPT-4要革程序员的命?智能开发的理想与现实 | 爱分析调研

news2024/11/25 3:23:16

 

“生成式人工智能(AIGC)将在三年内终结编程。”

——Matt Welsh,前哈佛大学计算机科学教授、Google 工程主管

GPT-4 也许还不完美,但智能开发时代真的来了

美国时间3月14日,OpenAI 正式发布 GPT-4,在 ChatGPT(GPT-3.5)的基础上,进一步升级了图像识别功能和高级推理技能,单词处理能力达到25000个,是 GPT-3.5 的8倍,并可以使用几乎所有流行的编程语言编写代码。

仅仅一周之内,OpenAI 的最大股东微软先后宣布将用 GPT-4 武装升级 Bing 搜索引擎、Edge 浏览器和 Office 全家桶,其旗下代码托管平台 GitHub 更是发布重磅“炸弹”:推出 Copilot X 计划,将 GPT-4 集成到 IDE。在 Copilot X 中,用户只需“动动嘴”,机器就能写出代码,也能帮助用户解释代码片段,还能直接完成 Debug 工作。

在人们惊叹于 AIGC 编程强大能力的同时,软件从业者也陷入了对于“饭碗”的深深担忧:当 GPT 比人更会写代码,程序员还能干什么?在 Matt Welsh 看来,由于 GPT-4 大模型的出现,编程正处于从人类工作转变为机器人工作的转折点,程序员这一职业很快将被人工智能所取代。

回顾软件工程的发展历程,技术进步持续推动了软件开发的范式革命,今天的 GPT-4 将成为软件工程进入智能开发时代的催化剂。

上世纪中叶,《人月神话》所描述的软件危机迫使人们努力寻找危机的内在原因和解决方案,1968年 NATO 在联邦德国召开会议,正式提出了“软件工程”这一概念,希望用工程化方法构建和维护有效、实用和高质量的软件,标志着软件开发正式成为一门工程学科并得以持续发展(软件工程1.0)。

进入21世纪,受到互联网、开源软件运动影响,人们对于软件工程的认识和理解不断加深,2001年发布的《敏捷宣言》正式提出了以人为中心的软件开发方法,进而形成了建立在 Cloud 、SaaS、敏捷开发模式之上的软件工程2.0版本。

今天,GPT-4 的出现让人们真正开始认识到智能开发时代即将到来,未来的软件开发将会使用自然语言作为交流方式,让人工智能理解开发者交待的任务并自主完成软件开发,如理解需求、自动生成 UI、自动生成代码、自动生成测试脚本等。随着开发方式的改变,开发者的使命也将发生根本性变化,软件工程3.0版本即将正式开启。

Matt Welsh 对于程序员前途的预言引发了软件开发行业的震动,但现在就断言 AIGC 编程将全面取代程序员仍然为时尚早,对于复杂的企业级应用开发而言,具备了强大编程能力的 GPT-4 也还存在相当严重的局限性。

首先,大模型基于公开数据集完成训练,缺乏企业级应用所必需的行业和业务 know-how。众所周知,企业级应用的开发极为复杂,除了需要开发者具备良好的编程能力,更要求开发者能够形成对于行业和业务场景的深入理解,从而建立业务和代码之间的有机连接,这部分知识是公开数据集所无法囊括的。今天包括 GPT-4 在内的大模型均基于公开数据集(主要包括维基百科、书籍、期刊、Reddit 链接、Common Crawl、GitHub 开源代码等)进行训练,这就意味着无法有效建立行业和业务 know-how,以致于难以应对面向企业级应用的复杂开发需求。

其次,AI 编程依赖于提示词(Prompt),代码质量存在极大的不确定性。与传统编程过程中通过编程语言调用特定的 API 不同,AI 编程需要开发者通过提示词让大模型理解开发需求,这就像产品经理与程序员之间的沟通一样,信息量越丰富,对方的理解就越深入。百度 CEO 李彦宏曾经谈及提示词和智能涌现,“大模型本身的能力放在那,谁能把它用好完全靠提示词来决定。提示词写得越好,智能涌现的能力就越多,反馈的结果就更有价值。提示词不好,出来的东西就是一本正经胡说八道。”这种代码质量的不确定性显然与追求结果确定性和计算准确性的企业级应用背道而驰。

更重要的,具备开放特性的大模型难以满足企业级应用对于安全性的要求。3月下旬,据 SBS 等韩媒报道:三星刚引入 ChatGPT 还不到20天,就发生了3起机密数据泄漏事件,其中涉及三星半导体设备测量资料、产品良率等信息。根据 OpenAI 官网关于 ChatGPT 的 FAQ,其确实指出与 ChatGPT 的对话可能会用作训练数据。三星事件让摩根大通、花旗集团、高盛、德意志银行等越来越多的企业因担心机密数据外泄而禁止员工访问 ChatGPT,意大利个人数据保护局也在3月31日宣布从即日起禁止使用 ChatGPT,并限制 OpenAI 处理意大利用户信息。

诚然,今天的 GPT-4 仍存在着这样那样的局限,但其当下已经展现出的能力和快速迭代的脚步已经足够让人们对于其前景满怀期待,智能开发的浪潮正在不可逆转地奔涌而来。

只知道 GPT-4?智能开发时代不止一个主角

从蒸汽机到电力,从计算机到互联网,任何一次新的技术浪潮,往往能够让生产力得到极大程度的解放,突破固有的效率瓶颈,解决过去难以调和的矛盾,推动社会的持续发展。互联网时代,软件已成为社会发展的重要基础设施,然而随着业务需求的快速迭代,软件开发行业正面临着越来越难以调和的矛盾和痛点:

  • 项目成本高——一线城市稍有经验的工程师动辄三、五十万的年薪,成本高不说,一旦碰上团队核心成员出走,轻则让项目延期,重则导致苦心研发的产品中途流产。
  • 开发周期长——开发周期过长,带来一系列的问题,尤其是大型项目,开发测试环节多、测试耗时长,过程中各项成本需要持续投入、交付慢回款也就慢,公司现金流捉襟见肘。
  • 代码质量低——技术选型依赖开发人员,而他们通常只会选择自己擅长的,而不是最适合公司需求的技术栈,一旦出现错误,对业务的影响是灾难性的。再加上每个人写代码的水平参差不齐,极易导致开发和检查效率低下,经常一个环节出问题,导致整个项目延迟交付。
  • 团队管理难——现在的开发主要还是依赖人力,突然接到大项目,来不及第一时间招到合适的人来做,而且每个人水平背景参差不齐,在流程、技术、安全规范各方面总是出现各种各样的问题。

GPT-4 能够引起软件开发从业者如此程度的关注,背后恰恰反映出今天软件开发行业所面临的挑战是多么严峻,进而催生出整个行业对于软件开发范式变革的迫切需求。人们一方面热切期盼 GPT-4 能够改变传统工作流,给生产效率带来10倍、100倍的提升,另一方面也开始担忧行业生产力的提升将改变固有的生产关系,也正是 Matt Welsh 提出的程序员“饭碗”问题。

时代车轮滚滚向前,唯一不变的只有变革本身。在软件开发行业,引起程序员对于“饭碗”担忧的,GPT-4 并不是第一个,也绝对不会是最后一个,近年来方兴未艾的低代码平台、全栈式全自动开发都曾是此类话题的焦点。

低代码平台、全栈式全自动开发与 GPT-4 的愿景相通,均立足于通过技术创新为软件开发团队带来生产力提升,从而改变传统的软件开发范式,解决行业当前面临的诸多痛点。但从产品能力而言,全栈式全自动开发与更为人们所熟知的低代码平台存在不小的差异:

  • 应用场景——大部分低代码平台基于 BPM 流程引擎实现,本质上只能解决简单的工作流,以设计表单为驱动,无法实现复杂功能和逻辑;全栈式全自动开发则不仅支持不同业务场景下定制化的小型应用开发,还能够支持如电商平台等复杂的大型应用系统开发。
  • 流程覆盖——低代码平台大多基于脚本类语言设计,提供表单、流程、报表,供用户拖拽式生成应用,核心解决前端开发的可视化;全栈式全自动开发则提供基于 Java 语言的可视化开发能力,能够覆盖前端+后端的可视化+配置化,同时支持全自动测试和全自动运维,实现软件开发流程的全栈式覆盖。
  • 质量安全——使用低代码平台构建的应用通常与平台绑定,导致很多特性需要依托于特定的低代码平台才可以实现,用户对系统质量、安全和知识产权的掌控无法得到保证;全栈式全自动开发则将开发成果的“所有权”完全交给用户,解决客户对于安全性和知识产权的担忧,同时提供系统质量保证。

通过对比不难发现,相较传统低代码平台,全栈式全自动开发更加适合应用架构复杂、涉及众多流程环节、对系统质量和安全均有极高要求的企业级应用开发场景。与此同时,与当下火热的 AIGC 编程相比,全栈式全自动开发在 GPT-4 的核心局限性问题上也能够给出令人满意的答案。

  • 专业性方面,除了全栈式全自动开发厂商提供的通用性组件和模型,用户和厂商可以共同基于自身长期积累的大量行业和业务 know-how,搭建个性化组件和模型并进行持续迭代,从而产出最贴近业务需求的应用。
  • 可靠性方面,相比于具备高度不确定性的 GPT-4,全栈式全自动开发的重要特性即是现实软件开发的标准化,从“人治”到“法治”,对人为变量进行最大限度约束,确保产品质量高度可靠。
  • 安全性方面,全栈式全自动开发厂商允许客户根据需求灵活选择代码的存储和部署方式,私有化部署的支持能够从根本上打消客户对于安全性和知识产权的顾虑。

用实战说话,全栈式全自动开发让智能开发照进现实

智能开发因为此次 ChatGPT 热潮而备受瞩目,但其实早在数年之前,低代码平台、全栈式全自动开发等一系列对智能开发的探索就已经开始。

自2014年 Forrester Research 提出“低代码”概念后,低代码平台的发展快速起步,除 OutSystems 和 Mendix 等低代码厂商外,微软、谷歌等巨头也纷纷开始布局低代码。2015年前后,低代码概念进入中国,奥哲、ClickPaas 等一批本土低代码品牌迅速崛起,阿里、腾讯、金蝶、用友等云厂商和传统软件厂商也先后入局。基于对近30个本土低代码产品和上百个应用实践案例的评估,爱分析认为国内的低代码产品仍处于发展早期阶段,但许多厂商已经具备了比较完整的产品项目和成功的实际应用案例落地,根据 IDC 数据,预计到2025年中国低代码市场规模将超过10亿美元。

低代码平台和 GPT-4 起源于西方,而全栈式全自动开发的概念则来自于中国企业的自主创新,飞算科技就是其中的杰出代表。飞算科技于2020年发布了全球首款全栈式全自动开发工具——SoFlu 软件机器人,通过自动化、标准化和工具化,改变传统软件工程生产范式,帮助企业实现全链条 IT 生产力提升。

SoFlu 软件机器人基于“业务即图,图即代码”的核心理念打造,提供 Java 可视化开发及执行日志、丰富的组件库、仿真测试等核心技术工具,帮助开发者自动完成包括前端开发、后端开发、测试、运维在内的全栈式软件开发工作,真正实现“软件开发,十倍提效”,大大降低企业开发成本。

SoFlu 软件机器人的能力已经在金融、医疗、高端制造、区块链等八大行业的上百次企业级应用项目实战中得到验证。在中石油旗下大型电商平台重构项目中,中石油开发一个大型电商平台时由于开发人员有限,他们聘请了外部厂商进行开发,但系统上线后,随着用户数量的增加和具有企业特色的功能需求不断提出,原有的平台架构在功能、性能和扩展性方面已经不能满足商城的发展需求,同时系统改造还依赖于外部厂商进行开发,庞大的投入支出和不断延长的开发周期给中石油信息化团队带来了很大的困扰。如果要进行商城的重构,传统模式下至少需要27人,开发300多天才能完成。中国石油信息化团队在使用了SoFlu软件机器人后,9人小团队在5个软件机器人的协助下,仅用45天就完成了商城的重构及上线,并且在保障系统强壮度和安全性的同时从源头上降低系统维护难度。中石油的项目负责人事后感叹,团队利用 SoFlu 做到了以前无法想象的事情。

据了解,以“打造中国原创、全球领先的软件工程共创平台”为使命愿景的飞算科技,下一步会持续构建开发者生态,吸引更广泛的开发者贡献高质量组件,覆盖企业业务需求的“最后一公里”。同时,借鉴 GPT-4 创新理念,SoFlu 软件机器人也已初步完成产品 AI 能力的搭建,“自然语言生成需求表述”、“自动绘制流程图”、“代码实时生成”等产品能力将成为开发者提升效率的强大助力。

回到 Matt Welsh 所关心的问题,SoFlu 软件机器人的目标绝不是让程序员丢掉“饭碗”,而是将开发者从日常简单重复的“写代码”中抽离出来,能够有时间站在更高的角度深入思考问题,从“程序员”变成“架构师”,从“写代码”变成“设计程序”,彻底释放每个开发者的创新潜能。

结语

正如英伟达 CEO 黄仁勋所说,GPT-4 开启了人工智能领域的 iPhone 时刻,无数行业将因为 AIGC 技术发生改变甚至颠覆。作为信息化时代的重要基础设施,软件工程领域在这场变革中首当其冲,智能开发浪潮蓄势已久,现在正由 GPT-4 将它推向台前。

长期以来,中国在软件工程等基础学科领域的创新步伐一直落后于西方,而过去几年发生的中美贸易战、科技战再次让我们认识到基础学科创新的必要性与紧迫性。无论是奥哲、ClickPaas 等低代码平台,还是以 SoFlu 为代表的全栈式全自动开发工具,以及百度“文心一言”、阿里云“通义千问”等 AI 大模型,无不是中国科技企业面向智能开发的奋力尝试与探索。与此同时,软件工程的自主创新离不开政策的大力扶持、用户的积极采纳以及社会各界的广泛关注,相信在所有国人的共同努力下,智能开发将不仅仅是软件开发的又一次技术变革,更将成为中国软件工程崛起的重要契机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Navidrome 开源音乐服务器】手把手教你打造属于自己的音乐播放器随时随地想听就听

目录 1. 前言 2. Navidrome网站搭建 2.1 Navidrome下载和安装 2.1.1 安装并添加ffmpeg 2.1.2下载并配置Navidrome 2.1.3 添加Navidrome到系统服务 2.2. Navidrome网页测试 3. 本地网页发布 3.1 cpolar的安装和注册 3.2 Cpolar云端设置 3.3 Cpolar本地设置 4. 公网访…

电商数仓—前言

项目流程图 1.数据仓库的概念 数据 业务数据 存储在mysql 处理事务过程中产生的数据例如:登录、下单、支付用户行为数据 日志文件(以文件形式) 用户与客户端产品交互过程中产生的数据通过埋点实现:代码埋点(前端/后…

Unity集成GPT

GPT想必是最近互联网最火的话题了,作为一个Unity开发者,今天来介绍一下如何在Unity中使用GPT。 一、API 密钥 使用GPT的API首先要获得密钥,如下进入OpenAI官网(https://platform.openai.com/account/api-keys)–>选择自己的账号–>查…

Docker-Compose企业生产环境实战

1. Docker-Compose企业生产环境实战 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。Compose 定位是“defining and running complex applications with Docker”,前身是 Fig&#…

手把手教你如何管理进程和计划任务管理

目录一、查看和控制进程1.1查看进程1.1.1 ps 命令— 查看静态的进程统计信息1.1.2ps -elf 命令— 查看静态的进程统计信息1.1.3grep过滤查询1.1.4top命令—动态查看进程信息1.1.5pgrep命令— 根据特定条件查询进程PID信息1.1.6pstree命令—查看进程树1.2控制进程1.2.1手动启动1…

单片机--第六章中断系统--例6-3学习

单片机--第六章中断系统--例6-3学习 同6-2图,要求:使用定时器T0中断实现流水灯操作,流水频率为每0.5s更替一次(假设单片机外接11.0592MHZ的晶振)。 这个代码实现的是流水灯的效果,即将多个 LED 灯依次点亮并…

.net6 Program.cs 文件解析

Program.cs 是整个Web应用程序的入口文件,.NET6 用了极简单的风格搞定了很多事情。 Program.cs中首先注意的是: 1.builder.Services.AddXXX是用来添加服务的,builder是WebApplicationBuilder对象; 2.builder.Services.Configure&…

【C++】判断语句中对变量的合理定义

先总结一下这篇博客的核心: C中,不允许重复定义同一个变量,否则保留的初次定义的值(虽然编译能通过)涉及到判断的多分支时,应在进判断分支之前定义好变量,如果在分支中分别定义会出现编译错误&…

基于HashData的湖仓一体解决方案的探索与实践

2023年4月7日,由中国DBA联盟(ACDU)和墨天轮社区联合主办的第十二届『数据技术嘉年华』(DTC 2023) 在北京新云南皇冠假日酒店盛大开启。HashData资深解决方案架构师李俊在4月8号专题会场6-“融合应用:湖仓技术创新”上发表了《基于…

从零开始学JAVA(05):面向对象编程--04

一、StringBuilder StringBuilder是一个非常方便的用来处理和拼接字符串的类,它和string不同的是,它是可变的 package com.lcy.learn;public class LearnStringBuilder {public static void main(String[] args) {// StringBuilder首先是可变的// 而且对…

牛客网算法八股刷题系列(九)训练过程损失函数不下降问题

牛客网算法八股刷题系列——训练过程损失函数不下降问题题目描述正确答案:D\mathcal DD题目解析延伸:训练过程损失函数不下降的其他情况题目描述 在训练神经网络时,损失函数(Loss)(\text{Loss})(Loss)在最初的几个Epoch\text{Epoch}Epoch时没…

delphi 实现Ribbon风格的窗体

随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格。 那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的。 首先,Delphi本身并没有Ribbon风格的窗口可以直…

epoll为什么用红黑树?

网络编程的时候有没有碰到过 Socket 对象?或者在配置代理的时候,有没有碰到配置 Socket 地址?当你看到服务端 Socket、客户端 Socket 等名词时,是否可以明确理解这些概念? 学习好这些知识有一条主线,就是抓…

Dockerfile构建镜像缓慢解决方案总结

分几种不同的情况,不断更新中 1、Dockerfile apk add 下载更新软件时,比较慢,如何解决 例子如下: 更好一下仓库源 RUN sed -i s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g /etc/apk/repositories或者改成科大的镜像 RUN…

android核心架构Framework组件介绍

作为一个android开发者,核心架构是必须要了解的。只有了解每个核心层的作用,才能更深入的理解和学习。本篇主要讲解Java Framework层核心代码流程。 文章目录一,Android系统架构1.System Apps2.Java Framework3.系统运行库层4.硬件抽象层&…

Matplotlib库的简单用法

Matplotlib库的简单用法 Matplotlib是python科学计算中最基础、最重要的绘图库,是Python中最流行的数据可视化库之一,它提供了大量的绘图函数和工具,可以让用户创建各种类型的图表和图形,一般使用matpltlib完全可以满足我们绘图需…

“成功学大师”杨涛鸣被抓

我是卢松松,点点上面的头像,欢迎关注我哦! 4月15日,号称帮助一百多位草根开上劳斯莱斯,“成功学大师”杨涛鸣机其团队30多人已被刑事拘留,培训课程涉嫌精神传销,警方以诈骗案进行立案调查。 …

基于4412的dm9000驱动移植

1 概述 以太网高速稳定的特性比Wifi无线传输有一定的优势,当无线传输无法满足一些智能设备,需要开发设计以太网模块。Linux支持以太网系统,结合4412开发板,重点学习dm9000驱动的设计与实现。 2 硬件资源分析 2.1 4412开发板以太网…

【Python】Python中的列表,元组,字典

文章目录列表创建列表获取元素修改元素添加元素查找元素删除元素列表拼接遍历列表切片操作元组创建元组元组中的操作字典创建字典添加/修改元素删除元素查找字典的遍历合法的key类型列表 列表是一种批量保存数据的方式,列表使用[]表示 创建列表 创建两个空列表 …

nginx优化及配置

nginx隐藏版本号 查看方法 浏览器F12 看network头部看server curl -i 192.168.232.7 获取头部(查版本号) 配置文件改 添加server_tokens off 改源码 cd /src/core vim nginx.h 修改 修改的IIS为window常用的软件服务 重新编译安装 cd nginx_1.2…