Redian新闻
>
AI大模型代替程序员,别开玩笑了!

AI大模型代替程序员,别开玩笑了!

科学

点击上方蓝字关注“尹哥聊基因”

最近微信改版,容易找不到尹哥的文章,大家记得把尹哥设为星标⭐️ 哦~

近日,Devin-全球首位AI全栈程序员问世,引起了极大的轰动刷爆全网。先前通过跟ChatGPT讲一句话能生成可直接运行的俄罗斯方块小游戏让人惊叹不已。这次AI程序员Devin诞生——能从聊需求、设计执行计划,到编码、测试验证,再到部署运行一气呵成!换言之,AI能完成端到端地构建和部署应用程序,这就有点细思极恐了!日前,英伟达皮衣教主黄仁勋说:人类再也不需要学习如何编码了,孩子们应该停止编程课(所以以后只需要买GPU卡就对了吗,手动狗头)。让程序猿们震惊的同时也陷入深深的焦虑:砸饭碗的日子终于要来了吗?

在过去的几年里,AI在各个领域都取得了显著的进展,AI大模型的代码生成已经成为软件开发领域最大的热点。这些工具利用深度学习算法增强的自然语言处理(NLP)能力,以便理解开发者的意图,以自动生成相应代码,极大地提高了开发效率。然而,随着这类 AI 工具能力的不断增强,人们开始担心它可能会替代程序员的工作,至少是很多初级程序员的工作。一时间广大码农人心惶惶,担心是不是又要下岗去送外卖了。那我们今天就来聊聊这个事情,码农们的饭碗还能不能端得住!

01

随着AI大模型持续火爆,代码开发这种对生成式AI天然友好的领域自然受到了重点关注,各种工具层出不穷

以目前热门的Github Copilot为例,目前已具备技能有:

自动代码补全:能根据代码上下文,自动补全代码,包括函数、变量、类等的声明和实现。

根据注释生成代码:只要在注释中清晰地描述想要实现的功能,GitHub Copilot 会根据这些描述生成相应的代码。

方法和函数生成:当输入一个方法名或函数名时,GitHub Copilot 可以自动生成该方法或函数的代码实现。

生成单元测试代码:可以自动生成类的单元测试代码。

根据代码生成文档:Copilot 能够根据函数的名称和参数,自动生成注释、文档,帮助开发者维护代码文档。

此外,Copilot支持多种编程语言,最重要的是能根据开发者的反馈和社区的代码更新不断学习和改进。

得益于ChatGPT的话题,GitHub的影响力,Copilot带来了广泛的影响,但实际上类似的产品有很多:

△ 主流的AI代码生成产品

经实测,现阶段AI代码生成确实可以做到很多事情:代码生成、代码补全、编写测试用例、代码注释、代码翻译、解决算法问题、技术栈分析、文档编写、代码优化建议、代码审查等,虽然准确率、理解能力、灵活度还有待提升,作为单兵工具完全没有问题

仿佛一夜之间,广大程序猿们发现自己干的事情好像AI都能干了,甚至可能比自己干得更快更好,毕竟AI编程可以7*24小时干活只要有电就行。

02

先说说自动代码生成,其实在AI大模型之前早就有了

要说追求工作效率这块,程序员绝对是排在前面的,也是最会革自己的命的。各类的自动化工具的编写者,也是最会偷懒的。因此编程辅助工具的历史悠久,从VB的拖拽编码到代码生成器再到低代码平台,代码自动生成大致可以分成以下四个阶段:

早期的代码生成:模板和脚手架

最初的代码生成工具主要基于模板。开发者创建一系列预定义的代码模板,然后通过填充特定参数来生成代码。这种方法简单高效,能够快速生成一些固定功能的代码块,但通常缺乏灵活性。如前端开发中的 vue-cli 和 create-react-app,可通过一键初始化项目来生成基于 Vue 和 React 框架的代码结构。

可视化编程:拖拉拽界面

随着技术的进步,可视化编程工具开始流行。这些工具允许用户通过图形界面来组织和操作代码块。通过UI把一些标准的功能代码块以插件的方式封装在工作台,所见即所得,辅助逻辑流程控制能够完成一些功能较复杂的代码开发,不仅如此,这还使非开发人员也能参与到软件开发中来,把一些需求方转变为了开发方,如发动机控制和车身控制系统

代码语料库:基于IDE的插件

随着集成开发环境(IDE)的普及,基于代码语料库的生成工具开始出现。这些工具通常作为IDE插件存在,能够根据开发者的输入和上下文提示代码片段。这种方法提高了开发效率,尤其是在处理重复性代码时。

如果说前面是帮程序员生成固定的模块化代码,本质上还是程序员自己写的代码,从这里开始才是有了自动编码的雏形,机器和程序员交互产生代码,虽然还比较简单,集中在语法提示和代码补齐等碎片化辅助的阶段。

智能化代码生成:生成式AI的崛起

随着AI技术的发展,智能化代码生成工具取得了巨大进步。这些工具使用机器学习模型,特别是大语言模型(LLM),如 GPT-3 和 Codex,来理解自然语言上下文和语义,并以程序语言输出,产生惊人的coding效率。依靠GitHub提供海量代码库作为语料库,Copilot训练出了强大的代码能力,它能够自动填充代码,给出建议,甚至可以根据注释生成代码。AI已经可以独立生成大段大段的具有完整逻辑的代码了,如开篇所说Devin甚至独立完成应用开发。

03

然而,程序员的工作不只是写代码,大量的工作在编程之外

程序的本质是一组计算机能识别并执行的指令集合,程序员的主要工作则是将需求转换为这些可扩展、稳定、高效、可重复执行的指令代码。

因此程序员的工作到底是什么?大家一直有一个误区,就是程序员一天到晚都在电脑前面写程序,而事实是:对大部分程序员来说,代码coding只是工作的一小部分,为什么?

软件开发过程涉及需求分析、架构设计、模块拆分、编码实现、测试验证、成本性能、文档、审查等诸多内容,编码只是其中之一。完成一项工程的落地,其难点在于工程越复杂,其中沟通理解的工作就越复杂。如战场指挥一般,了解需求方的真实目的,促进需求方理解自己的真实需求;协调开发的互相协作,分工配合;促使所有人理解项目的本质,从而完成长龙摆尾一般的项目,这些会消耗日常开发工作的大量时间。如有兴趣,大家可以阅读一本来自40年前的经典著作“人月神话”。笔者是所在公司的核心架构师,按照日常经验判断程序员真正coding的时间只占工作时间的30%左右,基本这也是国内大部分程序员的工作日常。一个残酷的事实是,打得一手好代码只是软件项目成功的众多因素之一,甚至很多时候还不是最重要的那个。

所以,程序员的痛点从来不在写代码:

• 理解复杂需求,了解真实的需求,将其转化为可执行方案;

• 促使系统架构、设计模式最大程度匹配业务逻辑,跟随业务的演进,不断改进架构,使其具备高稳定、高性能和高扩展;

• 面对各种问题,促进各个部门、人员的沟通,协调各种配合问题;

• 面对新技术,持续不断地学习、创新、自我突破的能力;

通过这些方面的水平,我们可以评价一个程序员是否足够优秀,本质上是软件工程,而不是具体的代码开发,这是一个建立在智力密集基础上的综合型工作,顶级程序员可遇不可求,当前乃至将来,没有AI能达到他们的水准:

• Dennis Ritchie - C语言和UNIX的创造者,对现代编程语言和操作系统的发展作出了巨大贡献。

• Niklaus Wirth - Pascal语言的创造者,对结构化编程有重要影响。

• Linus Torvalds - Linux和Git的创造者,推动了开源软件运动的发展。

• Richard Stallman - Emacs文本编辑器和GCC编译器的创造者,为开源社区作出了巨大贡献。

• Donald Knuth - 《计算机程序设计艺术》的作者,TeX数字排版系统的发明者。

• Bram Cohen - BitTorrent文件分享协议的发明者,对P2P技术的发展产生了重要影响。

• Guido van Rossum - Python语言的创造者,对推广Python语言和动态编程做出了贡献。

• James Gosling - Java语言的共同创造者之一,对面向对象编程语言的发展有重要影响。

• Anders Hejlsberg - 计算机编程语言设计师,参与了Turbo Pascal、Delphi和C#的开发。

• Yukihiro Matsumoto (Matz) - Ruby编程语言的创造者,对Ruby社区和Rails框架的发展有重要贡献。

同时,有一个不起眼的事情,但AI的确能帮助程序员解决历史问题。因为程序员们也经常需要面对技术债务和遗留代码的历史问题:“代码屎山”的问题、传承问题、人员传帮带问题。这是生成式AI 能发挥的地方:通过生成规范的代码片段来提高代码质量,减少所谓的“代码屎山”。提供重构建议,帮助改善现有代码的结构和可读性;通过生成文档和注释,有助于新团队成员理解和维护旧代码。还可以通过代码示例和注释来加速新技术的学习过程。AI工具可以促进团队成员之间的知识共享,通过提供代码审查和bug检测等功能,帮助团队提高协作效率。

生成式AI现阶段作为开发辅助工具,在工程的局部,如在提升开发效率、提高代码质量以及完善项目文档方面具有很大优势,但在整体性问题上,代码准确、对复杂需求的理解、架构设计、项目协作、创造性等方面较弱,人类开发者的经验和判断仍然是不可或缺的

04

未来只有大数据程序员:短时间内AI不会取代程序员,但会改变程序员的工作方式,变革职业属性

程序员必须向跨学科的综合型人才发展。学习路径变了,以前写程序从hello world开始,现在要从跑个模型开始;知识储备变了,不再是21天学一门开发语言,语法和数据结构被模型和参数替代。程序员要回归到对数学、物理、工控等基础学科的认知,计算机科学的边界越来越模糊。

AI造就更多的全能程序员,程序员岗位加速融合,不再分前端、后端、运维等,AI将使得全栈工程师成为普遍现象,AI会成为程序员的得力助手。长期来看,生成式AI很有可能集成CICD(Continuous Integration,Continuous Delivery/Continuous Deployment:持续集成和持续交付/部署,指在应用软件开发和运维中引入自动化来达到快速频繁的迭代和升级部署的方法,显著提高软件开发的效率和质量),角色从水电工晋升到包工头,解决AI生成代码的功能、稳定及性能的验证问题。再远一点,生成式AI可能解决系统中某个模块、服务的定义、集成与扩展。

率先拥抱AI的程序员将领先一步在变革中获利开辟职业新天地,获得更大的发展空间。AI大模型也会加速程序员的分化,好的越来越好越来越快,通过指挥AI工作,得到级联放大的效果,一个人顶一个团队;不能及时跟上,掉队的人则面临被淘汰的风险。从这个角度来看“拧螺丝”的程序员的确会被AI替代,但与其说是被AI替代不如说是被历史淘汰,脱离编程这个领域,这是历次技术变革时必然发生在劳动者身上的事情。AI的发展本身也需要更多优秀的程序员,Devin背后拥有一支强大的金牌程序员团队,AI会继互联网之后再次激活软件工程师的庞大需求,只是热点从数据库、中间件、云平台等转向大数据、模型算法、AI模型训练、混合计算、大规模计算等更广阔的领域。

如果不关注更远的时空,以科幻的角度去理解需求的产生和开发过程中的各项配合,没有人的过程会比有人的过程更为简单。可能在那时,AI确实代替了程序员,但我想那不仅仅是程序员要担心的问题。从现实角度来说我们大可放心,未来30年程序员依然是最好的职业之一,AI代替程序员工作,这是程序员做梦都想的事情,让程序员失业,还早得很!


— END —


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
只是开玩笑!美国警察用滤镜把自己P成黑人 被发现后遭解雇北燕南飞入悉尼(2)大模型的“瘦身”革命:巨头逐鹿轻量化大模型 | 大模型一周大事第一批因辞职搞灰产坐牢的90后程序员,已经上路了愚人节开玩笑?磁铁吸得住的一分钱硬币 值40万元卷疯了!最强开源大模型Llama 3发布,最大参数4000亿,小扎内心:大模型比元宇宙香多了清华、哈工大把大模型压缩到了1bit,把大模型放在手机里跑的愿望就快要实现了!身为程序员,怎么能不会 Linux 呢?7-11宣布推出新口味汽水,粉丝:你开玩笑对吧?Linux 一社区封杀大模型代码!“shit”7次出现在小作文,网友:此举非常明智!第135章 凤凰于飞命运像在开玩笑!亚裔移民抗癌八年 买彩票突中13亿美元一场轰动一时的吵架,彻底改变三个人的命运最神秘国产大模型团队冒泡,一出手就是万亿参数MoE,两款应用敞开玩玩归玩闹归闹 有些事不能开玩笑!美女子“遭调侃”后获赔$2000万AI早知道|商汤发布日日新5.0大模型;微软推出小语言模型Phi-3;腾讯旗下协作SaaS产品全面接入混元大模型开源大模型火了!(附99个大模型微调模型/数据/工具)!36岁年轻爸爸猝死,与妻子聊天记录曝光:春节将至,千万别再拿命开玩笑!大模型会取代程序员吗?第136章 柴新鑫GPT-4单项仅得7.1分,揭露大模型代码能力三大短板,最新基准测试来了好心态决定女人一生,不是开玩笑印度小哥“开玩笑”,把吹风机怼进朋友菊花,一响之后悲剧了...英伟达CEO黄仁勋:以后人人都能当程序员,别再学计算机了!下个黄金赛道是...第一批用 LangChain 的程序员,已经碾压同事了…… | 极客时间传奇程序员Kent Beck:LLM如何放大程序员技能 | 极客时间开源日报 | 构建一个类似英伟达CUDA的开源生态;“AI程序员”大杀四方,人类程序员开始反击;Podman 5.0发布第一批上手大模型的程序员,已经碾压同事了… | 极客时间同事乱开玩笑!新泽西女子控告获赔2000万美元楼市触底上涨,不是开玩笑吧?旅行的尽头是日本(2)拚死吃河豚????只会写代码的程序员要不存在了?大模型浪潮下开发者概念泛化 | InfoQ 研究中心愚人节开玩笑?磁铁吸得住的一分钱硬币,值40万元360安全大模型3.0来了!垂直大模型,他们这么训大模型真要取代程序员了?最危险的岗位是......
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。