乐趣区

关于springboot:自动写代码

这几天,GitHub 上有个很火的插件在抖音刷屏了——Copilot。
这个神器有啥用呢?简略来讲,它就是一款由人工智能打造的编程辅助工具。
咱们来看看它有啥用。
首先就是代码补全性能,你只有给出函数名和参数,Copilot 就会主动帮你补全代码。

第二个性能,就是它能够依据正文来写代码。也就是说,你只有把正文写好,它就会主动帮你生成对应的代码,吓人吧~

除此之外,它还能够主动生成重复性代码、主动生成测试代码,同时也能够生成多套代码计划供你抉择。
目前反对多种开发语言,包含 Python, JavaScript, TypeScript, Ruby, Java, Go 等等,反对 VS Code,Neovim,JetBrains 等 IDE。
目前还没有齐全凋谢,处于邀请制状态。前几天我看到了这个插件并申请了,然而目前还没通过,所以想看演示的话大家能够上 B 站,很多大佬做了测评。
看到这个插件这么弱小的性能,很多程序员曾经吓傻了,这么弱小,AI 都曾经能够帮你写代码了,程序员是不是要下岗了?
但在我看来,这个插件目前还只是个高级的玩具而已。

  1. 只是帮你百度一下
    这个插件的实质是利用人工智能,通过开源社区里的大量代码进行训练,从而实现主动写代码的成果。
    所以,对于通用性的代码,它的生成准确性还是比拟高的。
    比方,咱们在写两个日期之间的天数,你写来写去,无非就是这样写(以 Python 为例):
    def days(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).days
    return num
    复制代码
    这种代码说白了其实没有多少创造性,写纯熟了可能基本都不须要通过大脑,都造成肌肉记忆了,无非就是函数名、变量不太一样,其余的简直都一样。
    相似的,咱们还有一些算法(比方冒泡排序)、工具(比方哈希校验),其实也都是重复性十分高的代码,它也能够帮你实现得很好。
    重复性的工作,都有可能被代替的。
    在这种状况下,Copilot 的作用就相当于帮你百度一下,而后再帮你 CV 一下。如果没有这个插件,咱们一样也能做,只是花点工夫而已。
  2. 业务代码品质不高
    Copilot 本人也抵赖,他们会尝试理解程序员的用意,并「尽可能」生成最好的代码,但生成的代码并不总是无效,有时甚至还没有意义。
    毕竟训练集来自公共代码,参差不齐,甚至齐全没有意义。
    这点在 B 站大神的测试下也失去了印证,有时候的确也生成了一堆不知所云的代码。
    毕竟,咱们的业务需要始终都是复杂多变的,有时咱们本人都不太能实现一些性能需要,还指望机器帮你写?别太空想了!
    而且,它主动补全业务代码的前提是,你曾经须要有肯定的代码量供它参考,它才能够去猜想你接下来筹备写什么。
    也就是说,你还是须要写一些代码,有这些代码了它才会写得更精确一些。而且你提供的代码量越少,它的举荐就越不精确。
    也有人说了,它会依据正文写代码啊。然而,实际上,正文你都写好了,你本人其实也曾经差不多把代码都写好了。
    再说了,程序员都晓得,读他人的代码是一件很苦楚的事件,Copilot 帮你写好了代码,你敢间接就用吗?你浏览并了解它的代码的工夫,兴许本人早就写完了。
    所以,你说它会齐全帮你写代码吗?必定不行,至多目前不会。就算能帮你写局部业务代码,也不肯定写得好。
  3. 有肯定的平安问题
    Copilot 它的原理就是利用大量的代码进行训练,样本越多天然就越精确。
    那么问题来了,他们本人声称这些样本是来自开源的社区,但你应用了它们的插件,你敢保障你写的代码不会成为他们的样本?
    而且,如果它们生成的代码不合你的要求,你手动批改了,它更加了解了你的用意,这对 Copilot 的训练几乎是神助啊,他们难道真的不会思考利用一下使用者的收费劳动力?
    但凡应用第三方插件,而且还是不开源的,谁都无奈保障你的数据是否真的没有被透露进来。
    本人练习的代码必定是无所谓了,然而如果波及到公司的商业秘密,那就可能会有法律问题了。
    而且,更可怕的是,Copilot 生成的代码,有 0.1% 的概率会一成不变复制训练集的样本。如果这些样本没版权也没事,但要是有版权,有可能也会吃官司。
    之前已有新闻报道过,Copilot 原样复制了经典射击游戏《雷神之锤》里的代码,而这些代码是受法律爱护的,使用者也因而受到了一些麻烦。
    所以,当初不少公司曾经明确规定,禁止应用 Copilot 插件!
  4. 照相机的呈现不会让画家下岗
    照相机被创造进去的时候,已经一度也有人开始唱衰画家这样的岗位。但时过境迁,这么多年过来了,画家的岗位隐没了吗?不仅没隐没,反而当初技术精湛的画家身价一涨再涨。
    相机,只是把画家的一部分重复性工作取代了,比方画肖像、风光,等等。它只会机械地,一比一还原事实。而当初的画家,更多是作为艺术创作,这部分相机短时间内是无奈取代的。
    (当初也有 AI 艺术创作,但还很难说取代)
    Copilot 何其不是这样的存在呢?我大胆预测,Copilot 只会取代局部根底的、重复性的编程工作,说它会让程序员下岗,我感觉这必定是天大的笑话。
    相机再智能,你也须要具备肯定的美术、审美根底,能力拍出难看的照片。

同样的,Copilot 帮你写了一堆代码,你如果没有肯定的编程根底的话,你连改都不会改。

  1. 瞻望
    我还是那句话,Copilot 的呈现不会让程序员下岗,只会取代局部工作而已。
    工具的呈现只是会让咱们从重复性的劳动中解放出来,从而让咱们的大脑有更多工夫思考。但思考和创作自身,很难被取代。
    我集体是十分欢送 Copilot 这样的工具呈现,能够让咱们缩小很多不必要的工作。
    作为程序员都晓得,咱们每天都须要破费很多工夫在百度 / 谷歌下面,并且各种搬运轮子。这种工作就是机械的重复性工作,如果能有工具让咱们从这样的工作中解放出来,必定会为咱们节约很多工夫。
    而且,Copilot 这个单词自身也明确了本人的定位,那就是「副驾驶」,人家曾经很明确本人的地位,基本就没想着成为主驾驶。
    所以,Copilot 的呈现,大家不要如临大敌,而是要正当利用工具,长于利用工具,让工具真正为咱们所服务。

学习编程,千万不要急于求成,肯定要多读一些经典书籍,多看源码,多下苦功夫去死磕代码,这样技术能力出息。给大家分享一些程序员必读经典书籍,肯定要多读几遍:

退出移动版