或许AI到达“终极智能”时,普通人就不用学代码了。不过现阶段或很长的一段时间内这还是不可能的。目前AI编程还是以辅助编程为主,普通人可以借助AI实现一些简单的编程。
其实这个问题可以扩大到AI编程的出现对编程行业或程序员职业影响的问题。就这个问题我们先来看看几们大佬们的观点:
百度-李彦宏
2024《对话·开年说》系列中,百度公司创始人、董事长李彦宏在节目中表示“以后不会存在程序员这种职业了”
360-周鸿祎
在《对话》现场,360创始人兼董事长周鸿祎对李彦宏的观点提出反对意见“我不同意这个观点”。
英伟达-黄仁勋
黄仁勋认为,即便是在人工智能(AI)革命刚刚起步的今天,编程已不再是一项关键技能。
可以看到大佬们对AI与编程的影响这个问题的回答,虽然有差异,但我们不难看出AI在影响着编程这个职业或者行业。或许随着技术的发展与成熟,最终AI可以完全的代替人类。当然这个时间可能是一万年或许会更长或者更短。
之前也有读过阮一峰大佬《未来世界的幸存者》, 2018年7月发表的“技术的边界”中有写到:
“人工智能领域有一个概念,叫做“终极智能”。意思是,当机器的智能达到这种程度时,就不需要人类再做发明创造了,因为机器自己就会发明创造。”
我们来看看现阶段AI能给我们编程带来些什么?
一、专业性AI编程插件的能力
自从GPT带动全球AI热潮,AI席卷着各行各业。而在编程界也发生了巨大的变化,最出名的莫过于OpenAI与GitHub联合开发的Github Copilot。Github Copilot带动了一大堆AI编程工具的出现。
当然除了Github Copilot之外还有很多优秀的AI编程插件,我们来具体看一看:
p.s.以上的下载量与评分均只是plugins.jetbrains的marketplace数据,发布的时长也不相同,数据仅供参考。
基本AI编程工具的功能都差不多:
- 代码补全:根据当前代码上下文自动补全代码。
- 根据注释生成代码:根据注释描述生成相应的代码。
- 方法和函数生成:根据方法名或函数名自动生成该方法或函数的代码。
- 生成测试代码:生成测试代码。
- ....
这里选择豆包MarsCode来展示AI编程插件的功能:
MarsCode 是豆包旗下的智能编程助手,提供以智能代码补全为代表的核心能力,支持主流编程语言及 IDE,能在编码过程中提供单行或整个函数的建议,同时支持在用户编码过程中提供代码解释、单测生成、问题修复、技术问答等辅助功能,提升编码效率与质量。
安装方式
JetBrains与 Visual Studio Code都可以安装,比如下面就是Visual Studio Code中编程助手的安装,在市场搜索后进行安装。
安装好后就可以看到AI功能界面
主要功能
- 行级/函数级实时补全、注释生成代码
在编码过程中提供单行或多行的代码推荐,并支持通过注释生成代码片段,提升代码编写速度。
我只写了注释,回车后代码就自动会生成
- 代码解释
精确解释项目代码,帮助开发人员快速熟悉项目。
生成代码注释
- 单元测试生成
为选中函数生成单测,提升单测覆盖率,提升代码质量。
- 智能修复
一键修改代码bug,提升代码修复效率。
当运行程序出现bug后,“AI Fix”图标会自动出现,点击后会可以通过AI生成相应的解决方案,解决方案里也会有相应的按钮半自动化的处理,非常的方便。
- AI 智能问答
针对研发领域定向优化问答质量,提供更精准的问答结果。
1 通用性AI产品的编程能力
目前市面上能实现编程的AI产品非常多,基本上AI产品都会带编程的能力,比如chatgpt、文心一言、通义千问、豆包等
下面我们用chatgpt4o与kimi的对比,来了解通用性AI产品的编程能力
2 生成手机正则代码
- KIMI
这里是KIMI生成的代码,
把代码贴到IDE中是可以直接执行的
- chatgpt4o
和KIMI类似生成相应的正则代码,不过chatgpt默认会生成不同国家的手机号格式的正则
当然这只是比较简单的正则表达式。不过这种情况下就不需要我们去学习复杂的正则表达试的语法了,直接拿过来用就可以了。
再如core表达式也是类似的,比如:每周一晚上10执行一次的core表达式
就需要我们专门去学习core表达式的语法了
3 不同语言代码转换
我们现在让AI把上面的python代码转换成javascript代码
- KIMI
- chatgpt
这次两者是完全相同的,在IDE里也是可以执行的
4 生成PDF电子签名
让AI生成PDF电子签名的代码
- kimi
给chatgpt以下需求:请写出itextpdf5实现pdf电子签名的代码
生成的代码直接放到IDE里还是不能直接使用的
可以看到是缺少import,kimi生成的代码中import并不完整,先把缺少的import先引入
引入后还是有多处错误
1)函数参数类型不正确
2)变量没定义
3)无对象枚举
- chatgpt
给chatgpt相同的需求
把生成后的代码拷贝到IDE中,可以看到依赖已经下载好了,程序还是会报错
发现是import引用缺失,增加相应的import。
然后还是会发现PdfSignatureAppearance是没有WINCER_SIGNED枚举。一般来说就是引用的版本不对,说明itext生成的代码依赖与代码是不对称的。
虽然chatgpt4o生成的效果好一点,但还是不能直接使用。但大体上还是能知道实现PDF电子签名的技术实现,微调后还是可以使用。还是得完全懂代码的人才能正直使用起来。
总结
AI辅助编程给我们带来了一次变革,但目前或者很长一段时间内它的作用还是辅助的。并没有达到能代替程序员的能力。
像生成代码、代码注释、单元测试、bug自动修复等功能对编程的助力是非常大的。
我是栈江湖,如果你喜欢此文章,不要忘记点赞+关注!