1 简介

网传有了大模型之后,很多人都要失业了,其中也包括一部分程序员,确实大模型可以减轻开发者的工作量,但是具体到减轻了多少工作量,哪种类型的工作,学习成本,使用成本如何?不捧不踩,今天我们尽量客观地体验一下。

本文将介绍目前使用最多的三个智能编程助手,它们均可提供:代码解释、注释、生成、实时补全等功能。下面基于 VSCode 环境来介绍具体的使用方法。

2 Copilot

编程助手_Copilot

3 CodeGeeX

编程助手_CodeGeeX

4 Cursor

编程助手_Cursor

5 讨论

5.1 使用场景

  • 对于新手,我们不用再花很多时间强调代码规范了,让大家直接用 AI 就可以润色出不错的代码和注释。
  • 对于不熟悉的领域、代码、编程语言,可以快速地了解和梳理代码,解释代码和逻辑。
  • 自动编写常用的代码片断
  • 自动编写相对复杂的 正则 或 SQL 查询
  • 解决一些简单的 bug
  • 帮助程序员快速入门一门语言或一种框架
  • 快速程序写 demo 和代码框架,程序员只需要做少量修改即可使用

5.2 使用体验

5.2.1 基于场景的设计

最简单的使用大模型的方法是 ChatGPT 聊天界面提问代码相关问题,这种情况下,程序员需要描述环境,比如功能,编程语言,函数的输入输出,风格…… 而返回也往往是包含描述和代码,一般需要人看完整段回答,然后选取部分代码,再与自己代码组合。而且在两个界面之间切来切去很打断思路。

而上述的几种工具都使用了基于场景的设计,把工具融入编码的工作流,自动识别上下文,直接修改代码,节省了很多脑力,和 Chat 差别非常大。

5.2.2 清晰的注释

目前辅助工具更擅长写小模块,模板,常用功能;而对于业务理解,整体设计相对较差。从原理看,模型是用代码训练出来的,训练用的源码也有不同水平,难免不对,尤其对其未见过的复杂业务逻辑。

因此,整个开发过程需要人与工具不断沟通,比如:一开始它给我写的代码非常简单,后来我修改了几次注释提示,想要的内容就全都有了,自己再整理一下,或者让它整理一下,就很完美了。

另外,程序员可以先梳理业务逻辑,将其拆分成子任务,然后再用辅助工具其现子任务的具体功能。

5.3 使用效果

《Google Research 2022 年度盘点》发布:谷歌在内部为开发者提供 5 亿参数的语言模型 ML-Enhanced 用于 为 IDE 集成代码补齐功能,通过内部 1W+ 员工的实验对比显示,该功能减少了 6% 的开发时间,3% 的新代码 (以字符为单位) 是通过接受机器学习生成的。由此可见,AI 的代码补全功能并不像我们想象中那么有效。至少目前离完全自动化还很远。

当然,这也与开发应用的类型有关。我个人感觉,对于前后端,数据分析,数据等常用工具而言,提升 20%-30% 的工作效率应该没问题,甚至有时候觉得,有些普通的功能,选择一下,等着按 Tab 就行了。对于不熟悉的领域,机器生成的常常比人写的好。

5.4 如何选择工具

下图是计算机科学家 Matthias Plappert 在他的推文中对主流大模型代码效果的评测:

|400

这样看来 openai-gpt4 还是首选,但比较贵,性价比最高的应属 openai-text-davinci-003;Openai 的 GPT 系列仍独占鳌头。

对于如何选择辅助工具,也列出了一些建议,仅供大家参考:

  • 如果有比较高的定制需求,或者大批量修改,可以自己做一些提示和后处理,调用 chatgpt-3.5/4 的 api,直接优化代码。
  • 如果以编程为生,需要深度使用,自己又能“科学”的,推荐使用 Copilot。
  • 对于单位使用或者科研人员,建议先用 CodeGeeX 试试水,或者考虑购买 Copilot 商业版。
  • 如果使用 VSCode,建议使用可嵌入的工具,不用切来切去,不打断思路;如果没有非常依赖的 IDE 建议先试用 Cursor。

6 用后感

今天,启 docker 镜像时把 tag 弄错了,导致 copilot 没能正常运行。活儿又有点急,没来得及找原因,就切着用 ChatGPT 实现查相应的功能,这一整天就跟单腿蹦似的;晚上修好了,感觉松了一口气。

有时候开着它,给你推荐得不对还打断思路,但是用习惯了,没它还真别扭。

这一旦开始依赖……真是可怕。

7 使用注意事项

  • 在设计结构时尽量关掉,在实现代码时再打开
  • 需要先写个 demo,不能啥都没有就让它写

8 参考文献

【CodeGeeX2】很强的国产免费AI代码补全工具,基本使用教程

VsCode 安装Copilot

2023年AI编程工具总结

大模型代码生成排行榜出炉,70亿LLaMA拉跨,被2.5亿Codex吊打

当前业界最优秀的8个编程大模型简介

ML-Enhanced Code Completion Improves Developer Productivity