当前位置: 首页 > 后端技术 > PHP

自动写代码?

时间:2023-03-29 23:40:15 PHP

大家好,我是良旭。这几天,GitHub上一款非常火爆的插件在抖音刷屏——Copilot。这神器有什么用?简单的说,它就是一个由人工智能构建的编程辅助工具。让我们看看它做了什么。首先是代码补全功能。您只需提供函数名称和参数,Copilot会自动为您完成代码。第二个功能是可以根据注释写代码。也就是说,只要你写注释,它就会自动为你生成相应的代码。吓人~另外,它还可以自动生成重复代码,自动生成测试代码,还可以生成多套代码方案供你选择。目前支持多种开发语言,包括Python、JavaScript、TypeScript、Ruby、Java、Go等,支持VSCode、Neovim、JetBrains等IDE。目前还没有完全开放,处于邀请制状态。前几天看到这个插件申请了,现在还没通过,所以想看demo的可以去B站,很多大佬都做过评测。看到这款插件如此强大的功能,很多程序员都被吓死了。它是如此强大,以至于AI已经可以为您编写代码。程序员会被裁员吗?但是在我看来,这个插件还只是一个进阶玩具。1.只是帮你百度。这个插件的本质是利用人工智能通过开源社区的大量代码进行训练,从而达到自动写代码的效果。因此,对于通用代码,其生成精度是比较高的。比如我们在写两个日期之间的天数,你来回写,无非就是这样写(以Python为例):defdays(str1,str2):date1=datetime.datetime。strptime(str1[0:10],"%Y-%m-%d")date2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d")num=(date1-date2).daysreturn说白了num的代码没什么创意。如果写得熟练,可能根本不需要经过大脑,就会形成肌肉记忆。无非就是函数名和变量不同,其他都差不多。同样的,我们也有一些算法(比如冒泡排序)和工具(比如哈希验证),这些其实都是非常重复的代码,也可以帮你很好的完成。重复的任务很可能会被取代。这样的话,Copilot的作用就相当于帮你百度了,然后又帮你做了CV。没有这个插件我们也可以做同样的事情,只是需要一点时间。2、业务代码质量不高。Copilot自己也承认,他们会尝试理解程序员的意图并“尽可能”地生成最好的代码,但生成的代码并不总是有效的,有时甚至没有意义。毕竟训练集来自于公开的代码,是混杂的,甚至是完全没有意义的。这一点在B站站长的测试下也得到了证实,有时候确实会生成一堆看不懂的代码。毕竟我们的业务需求一直都是复杂多变的。有时候有些功能需求我们自己都实现不了,还指望机器给你写?不要太花哨!而且它自动补全业务代码的前提是你已经需要一定的代码供它参考,它才能猜到你接下来要写什么。也就是说,你还是需要写一些代码,有了这些代码,会更加准确。你提供的代码越少,它的建议就越不准确。也有人说会根据注释写代码。但是,实际上,所有的注释都是你写的,几乎所有的代码都是你自己写的。再说了,程序员都知道阅读别人的代码是一件很痛苦的事情。Copilot已经为您编写了代码。你敢直接用吗?当你阅读并理解它的代码时,你可能已经自己写完了。所以,你说它会完全帮你写代码?当然不是,至少现在还不是。即使能帮你写一些业务代码,也未必写得好。3.存在一定的安全问题。Copilot的原理是使用大量代码进行训练。样本越多,它就会越准确。那么问题来了,他们声称这些样本来自开源社区,但是你用他们的插件,你能保证你写的代码不会成为他们的样本吗?而且,如果他们生成的代码不符合你的要求,你手动修改它,它更能理解你的意图。这是副驾驶培训的天赐之物。他们真的不会考虑利用用户的免费劳动力吗?如果你用的是第三方插件,而且不是开源的,谁也不能保证你的数据没有泄露。自己练代码没关系,但如果涉及到公司的商业秘密,就可能会出现法律问题。而且,更可怕的是,Copilot生成的代码有0.1%的概率完整复制了训练集的样本。这些样本如果没有版权还好,但如果有版权,也可能面临官司。此前曾有新闻报道Copilot抄袭了经典射击游戏《雷神之锤》中的代码,而这些代码是受法律保护的,用户也因此受到了一些困扰。所以现在很多公司都明确规定,禁止使用Copilot插件!4、相机的出现不会让画家下岗。当照相机被发明出来的时候,一些人曾经开始唱衰画家的立场。可是时过境迁,这么多年过去了,画家这个职位是不是消失了?不但没有消失,技艺高超的画家身价反而一再上升。相机只是代替了画家的一部分重复性工作,比如画人像、风景等。它只会机械地将现实一一还原。现在的画家更多的是一种艺术创作,相机这部分不是短时间可以更换的。(现在也有AI艺术创作,但是很难说怎么替代)Copilot为什么没有这样的存在?我大胆预测Copilot只会代替一些基础的、重复的编程工作,说它会裁掉程序员,我想这一定是天大的笑话。再聪明的相机,也需要有一定的美术和审美基础,才能拍出好看的照片。同样,Copilot已经为您编写了一堆代码。如果没有一定的编程基础,你连改都不会。5.展望未来,我还是要说,Copilot的出现不会让程序员下岗,它只会替代一部分工作。工具的出现只会让我们摆脱重复性的劳动,让我们的大脑有更多的时间去思考。但是思考和创造本身是很难被取代的。我个人非常欢迎像Copilot这样的工具的出现,它可以为我们省去很多不必要的工作。作为程序员,我们都知道每天需要花大量的时间在百度/谷歌上,各种转动轮子。这种工作是机械性的重复工作。如果有工具可以让我们从这样的工作中解脱出来,那肯定会为我们节省很多时间。而且,Copilot这个词本身也定义了自己的定位,即“copilot”。人家已经明确了自己的定位,根本就没想过要成为主力。所以Copilot的出现,大家不要有临大敌的感觉,而是要合理使用工具,善于使用工具,让工具真正为我们服务。