分享

代码自动生成,程序员的“寒冬”来了吗?

 gfergfer 2023-10-07 发布于辽宁


§§


一、前言

Stack Overflow做过一个调查,针对开发人员是否使用过AI进行辅助编程,在185个国家,超过9万名开发者中,有44%的开发人员会使用AI工具进行辅助开发,还有26%的开发者正在计划使用。而进行编程学习的人,使用AI进行学习的比例更是达到了55%。

目前市面上的AI工具很多,在调查结果中,最受欢迎的AI搜索工具当属ChatGPT,有83%的人会使用它来搜索,其次是Bing AI,有20%的人会使用它。而在编程领域,使用最多的是GitHub Copilot,有超过55%的开发者会使用它来辅助编程,其次就是Tabnine和AWS CodeWhisperer,分别占13%和5%。

所以说,国外的开发者们,已经超过一半的人都在使用ChatGPT和GitHub Copilot等AI工具进行辅助编程了,但是遗憾的是,在国内使用这两个工具依然有一些门槛,而且这两个工具都不是免费的,注册账户这一个步骤就能难住不少人了。

今天我将为大家介绍的是一款存国产软件,是由清华大学知识工程实验室,蓝河鹏城实验室,智普AI,华为MidSpore等共同打造出的一款代码自动生成工具---CodeGeeX

二、编程的演进



作为程序员,最重要也是最本职的工作就是写代码,程序员们用代码构建出一个又一个互联网应用,创造了一个又一个互联网造富神话。程序员的工资也水涨船高,一度是最热门的专业,但是随着互联网的寒冬,加上各种AI编程工具的出现,降低了代码开发的难度,未来几年,程序员们又该何去何从。

图片

在以往,我们程序员编程的过程如上图所示,在接收到需求后,开始进行需求设计,然后手写代码,交给编译器,最后运行代码。手写代码不仅耗时,而且还经常会写出Bug,调试都要调试半天。一天下来,能够写出一两百行高质量代码已经不错了。

图片

ChatGPT等各种AI工具出现后,我们学会了AI辅助编程,我们可以将自己的问题,通过自然语言的形式告诉AI,然后它会帮忙生成代码片段,然后我们复制到编辑器中,通过部分修改和调试,才能得到我们最终想要的结果。不过这已经大大加快了我们编写代码的速度,遇到问题也不需要去网上一个个搜索了,ChatGPT会告诉我们答案,甚至还会帮你找到代码Bug,提供修复建议等。

GitHub Copliot插件更是可以帮助自动补全代码,只需要在Idea中安装了GitHub Copliot插件,我们写代码时只需要敲出前几个单词,它就能够猜测出你想要写什么,然后通过很多选项让你选择,你只需要选中回车就可以了,让写代码变成一件非常轻松的事情。

图片

上面无论是ChatGPT还是GitHub Copliot都只能算是辅助编程,没有实现自动编程。在使用ChatGPT时,我们需要把描述提供给它,然后复制输出的代码再进行修改,而且因为并不是使用单纯的代码数据进行训练的,输出的代码也总是差强人意。GitHub Copliot更多的是一个提示工具,仍然需要你对代码设计和编写有一定的基础,才能够驾驭它。

而到了自动编程过程,我们只需要写个注释,AI就会在代码编辑器中自动生成完整代码。

三、CodeGeeX简介



CodeGeeX是一个基于transformers的大规模预训练语言模型,将代码或自然语言作为输入,预测下一个标识符的概率分布。


图片

上图是CodeGeeX的原理图,它含有40个transformer层,每一层自注意力块的隐藏层维数为5120,总参数量达到130亿。模型支持的最大序列长度为2048。

CodeGeeX的语料库主要是由开源代码数据集和一部分补充数据组成,通过从GitHub开源仓库中爬取拥有100颗星以上的开源代码,包含了Python,Java,C 等23种编程语言。

图片

从图中可以看出,C 代码占比最大,达到28.5%,其次是Python,占比为26.67,第三是Java,占比15.98,这三大主流语言占比就超过了70%。

四、CodeGeeX功能



CodeGeeX可以完成很多生成式的编程问题,比如根据注释写代码,根据代码写注释,根据上下文进行代码补全,不同语言之间的代码翻译等功能。

图片

CodeGeeX支持多种主流的IDE,并提供了插件,如VS Code, IntelliJ IDEA,PyCharm等,同时也支持多种主流语言,如Python,Js,Ts,C ,Java,Go,PHP,C#等。下面以IDEA中安装插件为例。在Settings中找到插件Plugins,在Marketplace中搜索CodeGeeX,安装即可。

图片

图片

上面展示了根据注释生成代码的能力,可以看到,只需要写上注释,当出现代码后,直接按Tab键即可。

我们拿一个leetCode上的算法题为例,看它是否能够真正生成正确的代码。

图片

图片

我们将题目描述,以注释的方式写入到IDEA中,当我们把鼠标移动到注释下面空白处时,上图中红色圈起来的部分就是CodeGeeX自动生成的代码,我们只需要按下Tab键就可以使用这段代码。紧接着它就会自动进行补充,我们一直按Tab即可。

图片

最后我们运行一下代码,结果完全正确,放到LeetCode中执行以下,通过了,完全没有问题。

图片

我们除了可以用来写这种算法题之外,工程类项目也完全不在话下,可以让它遵循某个设计原则,帮我们写出具体的代码。但是同样需要程序员拥有代码和架构设计的能力,因为它并不会帮助你自动创建目录和文件。

图片

代码翻译功能,当我们选中需要翻译的代码时,选择翻译的目标语言,就可以实现代码翻译,这里是将java代码翻译成Python代码,还是非常好用的。

图片

图片

代码注释功能,我们选中一段代码,右键,选择添加注释,稍等片刻后,就可以像上图一样添加上注释了,再也不用担心看不懂代码啦。

四、总结



本文主要介绍了CodeGeeX的一些功能,并演示了代码生成和代码翻译以及注释的使用,其实这个产品还不够完美,但是依然能够给开发者带来非常大的遍历,希望国产软件越做越好,国产AI可以快速追赶上国外。

最后,你觉得AI会给程序员带来寒冬还是春天呢?


图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多