编辑
2023-05-29
ai100x
00
请注意,本文编写于 478 天前,最后修改于 286 天前,其中某些信息可能已经过时。

在最近的一个月里,我深度体验了Codeium这个产品,效果非常惊艳。目前我已经把它引入到我日常的工作中,可以说它无限拓展了我编程能力的边界,在某些场景下有五倍十倍的效率提升。

在这轮的AI浪潮里面,为什么AI能够火起来,我觉得本质上的推动力还是因为AI是实打实的生产力这方面的因素。

那么,作为一个程序员,怎样利用AI来为编程提效呢?期望的效果是什么呢?我用大白话总结为两个效果:

  1. 让程序员编码的速度更快,生产的代码质量更好。编程虽然是个性化的智力活动,但如果你仔细去拆解整个过程,实际上很多代码和过程是可以模块化的。比如,我们用代码是去实现一个简单的按钮点击,可能你按钮点击的效果和业务逻辑是特异性的,但是具体到怎么写一个按钮,怎么让按钮可以点击,怎么让按钮出不一样的效果,这些其实都是通用性的。有通用性就可以模板化,就可以总结出高质量的模板。AI在编码的过程中,能够根据编码的上下文,不断猜测程序员的编码意图,不断提供可能的“最佳实践”模板。程序员需要做的只是筛选和微调,这无疑可以极大提升编码的效率和质量。
  2. 让一个程序员可以做多个程序员的事情。在以往,培养一个高级程序员需要多久呢?不从学习某个领域的编程技能需要花费的时间来说,就从HR角度来说,我们一般看到什么高级程序员的工作年限要求,少说也要三五年起步吧?而且呢,虽然都说是程序员,但不同的编程领域的差异还是很大的,你很难要求一个前端程序员马上接手去做golang后端开发,甚至是做运维。一个程序员需要花费很大的时间才能投入到一个领域,这一般也意味着一个程序员在另一个领域没那么强,也就是说目前的程序员往往都有很强的边界性,精通全栈的工程师实际很少。但AI出现后,这种情况就不存在了。在AI的辅助下,一个程序员可以快速完成跨领域的开发。以往要做一个项目,可能最少需要招个四五个人的工程师团队负责前端后端运维测试,但有了AI,可能一两个工程师就够了,在AI的辅助下他们什么都能做。

那么,目前在编程领域的AI产品怎么实现这些事情呢?实际体验怎样?

在引入AI编程工具之前,我先调研了下市面上的产品,最出名的应该就是github的copilot,此外还有Codeium、Bito、Tabnine、CodeWhisperer、Ghostwriter、CodeGeex等等。产品很多,但这些产品我没有全部体验,为什么呢?第一个问题是安全性。总不能用了ai编码工具,把自己公司的代码暴露了吧?三星因为chatgpt泄露公司基本的事情才刚进制了员工使用chatgpt。这么一筛选,有明确声明不会上传并保留用户代码的产品就不多了。Copilot商业版有保证,个人版没声明。Codeium明确声明不会保留用户代码,也不会使用用户代码做优化训练。Bito和GodeGeex也有相关声明。至于其他的产品,我没有明确找到这方面的隐私声明(可能有,但我翻来翻去没看到)。所以我着重对比了Codeium、CodeGeex、Bito三个产品。

首先,在代码自动补全方面,Bito没有这方面的功能(现在不知道有没有,一个月前它才刚出来),Bito主要是靠问答和手动执行一些ai执行,比如选择代码后手动点解释义之类的。体验上比较差,而且中文支持不太好,经常胡说八道,试用了一天就放弃了(一个月过去了,好像能力又增强了,有时间可以再尝试一下)。

CodeGeex,本来我是最看好这个产品的,清华大学和智谱合作开发的开源项目。最诱人的就是可以私有部署,完全没有代码泄露的风险,只不过私有部署的硬件要求比较高,普通人玩不起。这个产品试用了几天,在代码自动补全方面勉勉强强,延迟比较大,经常补全提示跟不上我的编码速度,补全的质量也比较一般。最近还提供了beta版的对话问答模式,体验了一下,经常胡说八道,错误比较多,达不到生产力的要求。整体上比较看好这个项目,但我认为目前还达不到要求。

Codeium相对来说,就好很多了。代码自动补全方面比较智能,补全提示大概率能命中,延时也勉强还能接受。另外,它的对话问答模式挺超乎我的想象。在这一个月里面,我靠Codeium的对话问答模式,一个人完成了一个中等大小的python项目(我是android程序员,之前没怎么写过python的),又用了半天的时间搞定的docker镜像打包和跨机器部署(在这之前,我对docker仅限于执行run命令的菜鸟程度)。更惊奇的是什么呢?在多轮对话下来,它的记忆性还不错,甚至可以让它把对话的结论自动整理成文档。以前我整理开发文档少说也要一个多小时起步,它一分钟不到就完成了高质量的文档,非常高效,节省了我很多时间。除了编码之外,我一个前端工程师,靠它定位出了服务器的网络问题,在这之前运维看了两天也重装了服务器系统也没发现问题。这就很厉害了,有了它,我感觉我边界能力被无限拓宽了。当然,Codeium目前也不是完美的。第一,延迟虽然可以接受,但还可以更好。第二,它的对话模式虽然上下文的记忆算是比较长了,但也不是无限长,达到一定程度之后也是会丢三落四。

在总结下目前的产品,如果要达到能用好用的程度,有几点要求绕不开:

  1. 极低的延迟。代码补全提示的速度至少要能跟上程序员的思维速度。
  2. 代码提示的准确性和高质量。补全的代码要能符合上下文,并且质量要高,尽可能让程序员较少改动就能直接应用。
  3. 上下文记忆的长度还有待提高。商业的项目一般都比较大,目前的ai编码模型还远远达不到理解一个大项目的程度。

不管怎么说,当前的AI编码工具还是让人很震撼的。在震撼之余,我觉得这真的是一种颠覆性的技术。颠覆在哪里呢?

  1. 以后培养一个程序员到底应该培养他什么?花很多时间深入研究勤学苦练一门技术,可能没什么必要了。掌握一门编程语言,一种技术,可能只需要掌握基础原理,达到能判断ai的产出是否正确的程度就能投入生产了。节省下来的时间,你可以去学习更多的其他东西。培养程序员的视野广度要比深度重要得多,AI可以帮你撬动十倍百倍的能力。
  2. IT行业的人才体系可能要变天。在招聘的时候可能较少看到专向性的岗位,比如Android工程师、web前端工程师等等。未来的岗位可能会向综合性人才演化,ai型全栈工程师可能是IT人才市场的基石。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Jianan

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 © 2012-2023 Jianan 许可协议。转载请注明出处!