CodeGeex -智能编程助手

一.官方地址

CodeGeex

二.智能工具对比

一、CodeGeeX
CodeGeeX 基于 AI 的免费编程辅助插件,它提供了一种简单的编码解决方案,可以帮助我们更快、更高效地编写代码。它具有以下功能:

根据英文注释描述的功能自动生成代码;
根据已有的代码自动生成后续代码;
将一种编程语言翻译成另一种编程语言;
自动编写注释。
如果将这些功能比作点一杯咖啡的流程的话,大概可以分为以下几步:

1.1、下单
我们去咖啡店点咖啡的时候,首先要告诉店员自己需要卡布奇诺还是冰美式然后进行下单。同样的,我们使用 AI 写代码,也需要告诉 AI 我们需要什么代码,只不过这里需要用英文把需求写到注释里:

可以看到输入注释后 CodeGeeX 会自动生成需要的代码,按 Tab 键后会自动插入代码中,不足之处就是生成的代码中有一些多余的方法,需要手动删除。

1.2、续杯
当一杯咖啡喝完了,意犹未尽还想喝怎么办,当然是拿着之前的杯子去前台续杯了。同样的,代码写到一半没有思路了,也可以让 AI 用写完的 “杯子” 帮你 “续杯”:

上面的表现让我对这位 AI “店员”有点哭笑不得,哭的是居然还有语法错误,声明的 delay 参数也没有用到,笑的是它居然理解了我想写 ES5 的方法,并且还解决了 this 和 arguments 的指向问题。这种感觉就像是我点的是冰美式,店员帮我续的也是冰美式,但是杯子被他搞漏了。

1.3、拉花
有时候我们看到网上一些咖啡上面有漂亮的拉花,怎样才能让自己也拥有一杯呢?当然是把拉花照片给店员,让店员也仿制一杯啦。同样的,我们也可以把其他语言的代码交给 AI “店员” 让它帮我们生成目标代码:

左边是从 网上 找了一段 GO 语言写的防抖代码,鼠标右键选择 CodeGeeX 的翻译功能后选择代码的语言就可以在右侧根据文件的后缀名生成对应语言的代码,但是这个生成结果还是差强人意了,看来这个 AI “店员” 看图做咖啡的水平有待提升。

1.4、标记
点咖啡的时候都会根据客户对咖啡的要求在咖啡杯上面贴一个标记纸,让做咖啡的同学明白这一杯里面的冷热酸甜。同样的,我们可以用 CodeGeeX 对代码自动生成标记,让以后接手的同学也明白里面的酸甜苦辣:

上面是选中代码后选择添加注释的结果,以后的同学会不会明白里面的酸甜苦辣我不知道,但是就冲它 “贴心” 地帮我复制了一遍 fn.call,我现感觉挺苦辣的。

1.5、小结
从上面的例子可以看出 CodeGeeX 的功能还是比较全面的,最重要的代码生成功能也可堪一用,但还是需要人为地去解决一些问题,有一定的调试和纠错成本。

二、Tabnine
TabNine 是一个自动补全的编码插件,它能智能识别代码的上文信息,提供长序列的代码补全结果,并且开箱即用,不需要额外配置。TabNine 分为免费版和收费版,免费版提供了基础的代码补全功能,而且补全代码的建议是基于代码编辑位置附近的 400K 内容,而收费的 Pro 版本补全建议是基于代码编辑位置附近的 100MB 的内容,补全效果更好。

2.1、续杯
在 VSCode 插件栏搜索安装 TabNine 后即注册一个免费的账号即可使用,同样让 TabNine 帮我们续一杯防抖 “咖啡”:

可以看到它基本上领悟到了我们想要什么,在单行代码的提示上做得很到位,但是完全使用它来生成代码的话,开发者还是得有纠错的能力,在这里就没考虑到 this 指向的问题。

2.2、测温
接下来看看它能不能联系上下文帮我们试一试刚才那杯防抖 “咖啡” 的温度:

可以看到 TabNine 联系上下文然后根据注释帮我们写了一个测试防抖的函数,虽然这个函数可以使用,但是没有覆盖到 arguments 和 this 指向的问题,因此还需要人工修改一下才可以完整覆盖防抖函数的功能。

2.3、小结
从上面的例子是在免费版的 TabNine 上进行的,可以看出它在单行代码补全方面是很强的,基本上做到了指哪打哪,对上下文的理解也很到位,根据注释生成代码也可堪一用,但是也不能盲目信赖它,需要对生成的代码进行测试和校正,不然容易为自己和项目挖坑。

三、GitHub Copilot
GitHub Copilot 是由 GitHub 和 OpenAI 合作开发的人工智能代码助手,它可以根据你的输入,自动生成代码片段、函数、甚至整个文件。它使用了 GPT-3 等先进的自然语言处理技术,使用 GPT-4 的 Copilot X 已经发布,但还在内测阶段,让我们先来体验一下这位基于 GPT-3 的副驾的能力。

3.1、导航
我们先给副驾一个目的地,看它能不能带我们导航过去:

从这里可以看出来,这位副驾支持中文导航,而且导航目的地导航得很准确,就是脾气有点暴躁,走的路程不太规范,需要格式化一下。

3.2、指路
再来看看写到一半的函数,它会怎样帮我们指引道路:

不得不夸它代码生成得稳准快,相对于前面体验的几款插件,准确性和生成速度都有肉眼可见的提升。

我们再来写个箭头函数,看它能不能自动针对 ES6 生成代码:

嗯。看来它是懂指路的。同样是去防抖学校,想要去 5 号门副驾就指 5 号门的路,想要去 6 号门它就指6号门的路。

3.3、路书
副驾在给我们指路的过程中,我们也会希望它帮我们生成一份路书,方便以后再走这条路的时候,避免陷进路上的坑里:

可以看到,副驾贴心的告诉了我们如何进行导航,但是导航的路好像有点货不对板。

3.4、小结
GitHub Copilot 在代码生成上面很强大,准确性比前面的插件要高了一个量级,代码生成速度也很快,可惜它是收费的,使用之前必须绑定银行卡,在 60 天的免费期结束后会自动进行每月 10 美刀的扣费。

四、CHAT-GPT 中文版
我们都知道,chatGPT 不只是一个强大的 AI 聊天软件,在 coding 方面,我们也可以通过对话的方式让它帮我们写代码。而随着 chatGPT 的迅速走红,越来越多的开发者在 VScode 上面开发了 chatGPT 的聊天插件,例如这个 ChatGPT 中文版插件,利用它,我们也可以方便的进行 coding。

4.1、聊天
同样的以防抖函数为例子:

不愧是正宗的 ChatGPT,生成的代码稳准狠,挑不出一点毛病,还附赠了我们使用的方法。

当然,我们还可以让它写一个测试函数:

它不但把测试函数给到了我们,还对函数进行了说明。

4.2、选中代码
你以为这样就结束了?No,如果就这样的话,直接用 chatGPT 就可以,然而,它可以在选中代码后点击鼠标右键选择使用 chatGPT 对代码进行测试、答疑,优化,以及解释。

可以看到,它会自动将代码放到聊天模板中与 chatGTP 进行对话,美中不足的是,让它添加测试代码,却依然是以聊天的方式进行的,并不会在编辑界面自动添加测试代码。

4.3、答疑
接下来让我们试试其他辅助编程插件都没有的答疑功能:

有点尴尬,答案对了,理由却错了,看来万能的 chatGPT 也不是万事万能的,但它能看出来语法之外的错误,还是瑕不掩瑜的。

4.4、优化
让我们看看 chatGPT 对它自己写出来的代码有什么优化的建议:

厉害了,它还知道防抖有不会立即执行的痛点,貌似已经脱离的代码层面,从实际使用的层面去进行优化了,这里不得不夸它一下。

4.5、解释
业务繁重,上面优化出来的代码又有点复杂,来不及解释了,那就让 chatGPT 来解释解释:

不错,解释得很到位,就把它作为注释写在函数前面吧,希望以后接手的同学不要太长不看。

4.6、小结
这个 chatGTP 插件实际上是承担了一个传话人的角色,让我们可以直接在编辑器内和 chatGTP 进行对话,并且结合选中的代码帮我们定制了与 chatGTP 聊天常用的模板,这样子优点和缺点都非常明显,优点就是功能强大,代码的准确性很高,很有保障,缺点就是它是被动式的,需要阐明你的需求,需要复制粘贴,不能主动根据编辑器中的上下文推荐备选代码。

五、总结
从上面的例子可以看出,CodeGeeX 功能全但不精;Tabnine 单行代码生成的水平可以,但是生成整个函数可能会有一定的问题;GitHub Copilot 能力强大但是收费;CHAT-GPT 中文版插件能力强大功能全面,但是没有主动在编辑器内推送代码的功能,不够便捷。而且它们都有一个共同的问题,就是代码安全,预防这个问题只有分一个测试的项目去让插件生成独立的函数,或者私有化部署才能解决。

AI 很好,ChatGPT 很棒,它们能帮我们大大提升 coding 的效率,但是不能完全依赖 AI,还是需要提升自己的能力,否则那些看似没问题的代码往往可能隐藏着深坑,我们这些苦命的打工人也会成为 AI 的背锅侠。毕竟 AI 可以根据模型和大数据匹配甚至创造出你想要的代码,但是它们理解不了业务需求,也难以预料真实使用场景的复杂程度。

AI,且用且思考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值