“警告:依赖AI代码生成,你的编程之路或将越走越窄!”程序员编程语言ai代码

【CSDN编者按】AI生成代码技术的兴起,让许多人看到了提高编程效率、加速软件开发进程的希望。然而,本文作者认为必须正视一个潜在的风险:过度依赖AI生成的代码,可能会让程序员在不知不觉中走向技能退化的深渊,进而成为一个糟糕的程序员。

作者|RudisMuiznieks翻译|郑丽媛

出品|CSDN(ID:CSDNnews)

除非你不在乎自我提升或对自己的工作不以为意,否则,用AI写代码可不是什么好事。

不要使用AI生成的代码的理由

(1)剥夺了你宝贵的学习机会

在互联网早期,“脚本小子”(scriptkiddie)这个贬义词被用来形容那些不懂技术原理、仅凭现成工具进行所谓“黑客攻击”的人。这些人往往借助他人编写的工具或脚本,试图执行诸如破解密码、入侵他人电脑、篡改网页等恶意行为,并因此自诩为真正的黑客。

你或许会觉得,把使用AI生成代码的开发者比作“脚本小子”有些过于牵强,但我认为这种类比有一定道理。

那些渴望成为顶尖黑客的“脚本小子”们,若只是一味地运行现有脚本,永远无法实现他们的梦想。真正的高手是那些亲自编写脚本的人,他们在探索和研究中积累了深厚的知识,真正理解了所利用的安全漏洞。同理,如果开发者想成为大牛,但若总是依赖AI来完成代码编写,那么实际上是在阻碍自己前进的脚步。至少就目前来说,真正的大牛开发者依然是那些编写代码并能为这些AI系统提供训练数据的人。

毋庸置疑,任何技能的提升都离不开实践。就如同不下棋就不可能提高棋艺,不练琴就无法掌握钢琴演奏,不上场打球就无法成为一名更出色的曲棍球员一样,如果不亲手编写代码,你的开发技能永远也不会进步。

(2)你的现有技能可能会退化

但如果你对自己作为程序员的技能已经感到得心应手,只想让AI处理那些枯燥无味的任务呢?比如创建新项目框架、编写简单的阶乘或归并排序函数,或是生成模板代码——那些日常琐碎的工作。

也许你觉得这没问题。毕竟早在大型语言模型出现之前,经验丰富的开发者就已经习惯将琐事的任务交给初级开发者了——然而,使用AI来代替自己完成这些工作真的没有区别吗?

首先,初级程序员不仅需要更多的指导,还可能会向你求教。在这一过程中,帮助他们不仅能强化你自己的技能,还能培养新的能力(如辅导技巧、沟通能力,如何在不断增加的烦躁和不耐烦中仍能面带微笑)。

(3)你可能会依赖上你最终的替代者

在本文前面提到,我们许多人已经依赖上了高级开发环境,如语法高亮、自动完成、代码分析和自动重构。你可能会问,AI与这些工具有什么不同?答案很简单:前者旨在帮助你更高效地工作,写出更高质量的代码;而后者则有着最终取代你的目标。企业高层之所以热衷于AI工具,并非因为相信这些工具能将员工培养成高薪的高级开发者,而是因为他们看到了一个未来——在这个未来中,高薪的高级开发者将被成本更低、依赖AI的初级开发者所取代,甚至被AI本身彻底替代。一旦我们有足够多的人支付了这种订阅费,就可以训练出不再需要我们参与的AI。

(4)一个小插曲:你真正拥有AI生成的代码吗?

虽然我不是律师,也不打算在电视上扮演律师角色,但我确实订阅了Nebula上的《HelloFutureMe》,并且深刻地感觉到关于AI生成作品的所有权问题,至少可以说是存在一些法律模糊地带。这种不确定性不仅限于艺术作品,同样适用于代码领域。(而且,如果你像我一样,把编程视作一种艺术表达形式,可能会更能理解这一点。)

假设你使用AI生成了一个函数,而这个AI的训练数据中包含了LGPL许可证的代码,那么这个生成的函数是否也必须遵循LGPL?也许你不在乎LGPL,因为它的约束力有限,但如果训练数据中包含了某个财力雄厚且具有强大诉讼能力的公司的非自由仓库呢?如果他们能够证明你在构建一个有些过于成功的竞争产品时使用了这个AI,又该怎么办?

坦率地讲,对于上述问题我没有确切答案,我也不想在未来法院审理此类案件时成为支付这些法律账单的人,那你呢?

(5)你的代码将得不到应有的尊重

我们不能断言AI生成的代码一定会质量低下。尽管当前的技术水平可能存在一定的局限性,但显然这项技术将持续进步并变得更加完善。

我可以肯定的是,如果你依赖这些AI工具,那么除了一些同样依赖AI的开发者外,外界大多数人都不会对你的编程技能产生深刻印象。软件开发不仅仅是一种技术,它更像是一门艺术——构建一个连贯紧凑的代码库、为复杂问题提供精妙的解决方案,并赢得同行的尊重,这些应该是每个程序员引以为豪的事情。你是希望别人赞美自己亲手创造的成果,还是机器生成代码的成果?或许我的想法有些传统,但这正是我个人拒绝将AI生成代码融入开发环境的主要原因——即使这可能导致我失去工作。

我不想委托他人创作然后声称那是我的作品,我希望成为真正的创作者。追求高标准有错吗?为自己的工作感到自豪不会让它更加有趣吗?如果你都没有亲自编写代码,怎么可能尊重自己的代码,或者期望别人尊重它呢?

使用AI生成代码的理由

(1)你是一个受虐狂,喜欢代码审查胜过编写代码

我之前提到的观点并非完全准确。实际上,这只是我个人坚决不将AI工具融入我开发环境的主要原因。我热爱编写代码,但非常不喜欢阅读、审查以及对他人的代码提供建议。虽然我知道这是一种宝贵的技能,可以帮助指导新手成长,成为更有生产力的团队成员,但我仍然不喜欢做这件事。

随着你越来越多地依赖AI生成代码,你的角色也将逐渐从编码者转向代码审查者。或许有人享受这种转变,但这并不是我的选择。

(2)你其实并不想做程序员

如果你对学习编程毫无兴趣,而是把AI当作一种自由职业者工具,通过简单指示如“创建一个卡丁车竞速游戏”或“这不行,改进它”来完成任务,那么以上讨论的顾虑可能与你无关。

我真心认为,这就是大型科技公司正热切盼望的未来:一个由他们封闭生态系统的应用分发,和一个他们掌控应用生产方式的世界。有一个新应用的创意?只需告诉应用商店的AI,它就能直接将应用部署到你的设备上,使企业能获得100%的订阅收入——比以往需要与开发者分成30%收益的情况更为有利可图。

这也引出了我最后一个关于使用AI生成代码的理由。

(3)你相信我们已经进入了一个后工作时代,并信任企业将引领我们走向这个未来

如果你已经深陷于这种观念之中,甚至在阅读本文的前几段后仍未离开,那么我实在没什么可说的了。我建议你去读《一九八四》、《华氏451度》或《雪崩》等书籍,这些作品中对未来社会的想象或许会让你感到兴奋,并有所期待。

THE END
1.终于有大牛把《数据结构与算法》讲透了,附源码笔记这份PDF阅读体验肯定是要比公众号和各大的博客平台的文章要好的。PDF内容为纯手打! 话不多说,先看目录 需要完整版笔记的老铁点此获取 下面简单介绍一下八大基础排序和基础的数据结构,每种排序的思想和基础的讲解和源码在PDF里边有。 数据结构与算法学习文档及笔记 https://zhuanlan.zhihu.com/p/567419989
2.数据结构和算法一定要背算法的代码嘛但是如果一个人自己跑几个模型例子就声称自己可以做算法并且十分反感写代码的话,那他在算法领域也不会有很好的发展。 除非,你是一个算法造诣非常高的天才并且能够胜任算法科学家的人。 否则,请不要欺骗自己,认真培养你的算法能力和工程能力,毕竟你的目标还是一个合格的算法工程师。 https://blog.csdn.net/weixin_39967405/article/details/111279063
3.算法一定要用计算机程序实现吗?程序必须用规定的程序设计语言来写,而算法很随意。一个算法可以用不同的编程语言编写出不同的程序。程序并不都满足算法所要求的特征,例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。程序=数据结构+算法。数据结构与算法要通过程序的实现,才能由计算机系统来执行。所以,并不是所有的https://zhidao.baidu.com/question/2149819650965762628.html
4.30了,程序员中的老司机们,30后的路该开向哪里?擅长什么,不要放弃。擅长工程,就不要眼红人家搞算法的。坚持到底,路才能更宽,走得更远。 左:打工赚钱? 右:创业冒险? 当技术积累到一定程度的时候,大部分人都会技痒难耐,考虑创业。原因有几个: 给别人写代码,期权从几千股到几万股, 比例从毫不知情到万分之几、千分之几就不错了。自我感觉很好,但并不是https://36kr.com/p/1721857474561
5.GitHubCoding4Real/leetcodePDF版本:「代码随想录」算法精讲 PDF 版本。 最强八股文::代码随想录知识星球精华PDF 刷题顺序: README已经将刷题顺序排好了,按照顺序一道一道刷就可以。 学习社区: 一起学习打卡/面试技巧/如何选择offer/大厂内推/职场规则/简历修改/技术分享/程序人生。欢迎加入「代码随想录」知识星球。 https://github.com/Coding4Real/leetcode-master
6.探秘写了一百万行代码是什么体验?腾讯云开发者社区探秘| 写了一百万行代码是什么体验? 搞程序的累计写到一百万行代码到底是什么体验呢? 如果一百万是标量的话,来和大家研究一下这个数据,假设最好的情况,一天100行高质量代码,一年36500,100/3.65=27年多。即便从20岁开始编码,要到50岁左右方可完成。但实际上关于平均代码量的问题,即便把所有工作日都算上,大概也https://cloud.tencent.com/developer/article/1085550
7.编程中,有哪些好的习惯从一开始就值得坚持?只有先做到这一点,你才能把代码写简单,才能让人一眼看出意图、明显没有缺陷。 把很简单的程序搞复杂、搞的没人能懂,这很简单——不妨搜一下“C 语言混乱代码大赛”。 但把很复杂的功能写简单、写的让人一眼看懂、而且很确定“这里明显没有错误”,反而需要极深的功底。 https://maimai.cn/article/detail?fid=1704779105&efid=OhUNp8oeLY-b-crWXJxV2w
8.从事程序员14年,我总结了8条宝贵的编程实战经验优设网快速获得精准反馈:开发者每次调整代码后,能通过自动化测试快速获得结果反馈; 零成本试错:写出的代码语法有错误、逻辑有问题,没有任何不良后果,心理负担小。 不过,屏幕前的你很可能觉得我在说些废话。 “不然呢?解算法题、写小脚本,不就是这样的体验吗?有啥特别值得说的?”你很可能会继续补充道,“你知道我们公司https://www.uisdc.com/8-programming-experience
9.求职求助面试java岗用c++写代码可以吗本人一直是用c++写算法题的,但之后找工作估计是java后端,所以突然想到了这个问题o(╥﹏╥)o0 收藏分享 回复讨论接收动态 共4 个回复最热小约翰可汗 来自湖北 2024-04-15 可以但没必要,建议不要这样,可能面试官当场不介意你这么搞,能做出算法题特别是高难度一些的就证明你很优秀。但是吧面试官可能会觉得你Java基础https://leetcode.cn/circle/discuss/4L2prB/
10.代码规范指南java,代码规范说明(8).不允许把多个短语句写在一行中,即一行只写一条语句。 (9).函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。 注:如果大家有兴趣可以到安安DIY创作室博客,有相关说明性的文章和解释。 2、注解 Java 的语法与 C++ 及为相似,那么,你知道 Java 的注释有几种吗?是两种? http://www.cxhlcq.com/article/heoges.html
11.php学习心得范文(通用14篇)搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算 一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。 https://www.yjbys.com/edu/PHP/471525.html
12.入行14年,我还是觉得编程很难:给大项目写代码没意思还危险1写代码很简单,但写好代码很难 编程曾经是一项门槛很高的专业技能。从前,一个普通人想学编程,最常见的做法就是通过教材和书本学习。不过大部分编程专业书,十分艰深晦涩,对于初学者来说很不友好。因此不少人在尝到编程的乐趣前,就早早地半途而废。 但如今,学编程正在https://www.elecfans.com/d/2016881.html
13.多吹牛,少写代码–四火的唠叨可是,这真的 “正确” 吗? 来看看所谓的软件工程师的基础素质里面,写代码占了多大的比重?沟通、合作、学习,问题分析、解决,系统设计、算法,代码实现、测试、ops……到底有多少部分是 “写代码” 的? 如果我们把写代码看做软件的具体实现,那么,为了能写代码,有很多工作要做;而在写代码之后,也有很多工作要做。https://www.raychase.net/6634/
14.几个对程序员的误解,害人不浅!51CTO博客进了公司后我才发现,真正写代码的时间很少,像前期的需求评审、跟产品 Battle 啊、方案设计、技术选型啊、沟通、资源协调更重要,也往往更花时间。在你想清楚要不要写代码、怎么写代码后,再去写代码,那时你会发现只不过是一种翻译工具而已。 而且就我观察下来,一般职级越高、工资越高、能力越强的人,写的代码反而https://blog.51cto.com/u_13626762/5377111
15.学图论,你真的了解最短路吗?这就好比是走迷宫,你沿着一条路要一直走,直到遇到死胡同才返回 通常采用邻接矩阵存储,有权无权都可以处理,可以处理负边权,但不能处理负环 简单来说就是从一个点出发,递归+回溯遍历每一条与它相连的边,到达每个点,更新最短路 虽然代码很好写,但是极容易超时,请谨慎食用此算法 https://www.luogu.com.cn/blog/FrozaFerrari/xue-tu-lun-ni-zhen-di-liao-xie-zui-duan-lu-ma-post