从 ChatGPT 诞生至今,在程序员的圈子里,我们一直有两种讨论:
- 最开始所恐慌的:编程没有未来,ChatGPT 是不是要取代程序员。
- 编程的方式前所未有地发生了变化。
现如今,GitHub Copilot Chat 可以让开发者们直接在编辑器里收获类似于 ChatGPT 的体验,与 VS Code、Visual Studio 深度整合,可以给开发者提供深入的分析,甚至得到对于错误的修正建议。
由于我还没有 Copilot Chat(正在 waitlist 中……),在这里就先给大家直接展示下 GitHub Copilot 的作用。它会根据你的注释或者你写的方法名等直接帮你补全后续可能会写到的代码逻辑。有的时候你会惊叹——“对!我要的就是这个!”,而有的时候你可能会疯狂吐槽——“这写的都是什么玩意儿???”。
此处附上一个完全由 Copilot 生成的项目库,主要用于解析 Java Class 文件和生成结构图。
再比如对于 Android 开发者们来说,在 Google 的 Android Studio Hedgehog 里,已经有了一项名为「Studio Bot」的对话式编程助手,可以帮助 Android 开发者生成代码、查找相关资料,学习一些开发中的最佳实践并输出出来。比如在实际编程过程中,当你碰到在 Android 范畴内的任何问题,都可以抛给它,它会回答问题,或者是直接帮你生成代码,所生成的代码可以复制,也可以一键导入到你的项目中。
下面这张图展示的,就是向 Studio Bot 进行提问生成一段用于缩放 Android 摄像头返回的 NV21 数据的工具类的代码,Studio Bot 就能在数秒之间给你生成返回,论代码质量,属于看起来还可以的样子,但代码执行起来会比较耗时(这主要还是在于 Prompt 没有写到位)。
当然,在现阶段,可能还会生成一些错误的信息。所以 Google 官方特别提示,使用时需要开发者仔细地检查代码。并且,当前对我们还有点痛苦的是,它和 Bard 一样,依然不支持中文。
还有一款名为「Cursor」的开源编辑器,集成 GPT-4,可以帮助开发者重构、理解和优化代码,支持中文。
有两种模式,一种是生成代码,按快捷键 Command/Ctrl +K,会弹出一个 Prompt 的输入框,这时输入想让它生成的代码,便会直接生成代码。同时,它还可以做优化和 Bug Fix。另外一种是 Chat 模式,按 Command/Ctrl + L 会切换到聊天界面,操作上与 ChatGPT 和前面我们所提及的 Studio Bot 是类似的。
许多人调侃,CV 工程师正在向 KL 工程师发生转移。
综合当前的这些技术创新,我们能够看到的是:在当前阶段,AI 更进一步地成为了我们的编程助手。它在至少下面这三方面对程序员的影响是巨大的。
-
能够解决一些可能需要搜索、查看很多资料才能找到答案的问题。多年以来,我们编程的场景一直会使用到大量的搜索,遇事不决问搜索引擎、问 CSDN、Stack Overflow,但很可能花费了大量的时间和精力,却只能查找到相关的解决方案,要解决问题还需要大量的调试和修改。而让程序员特别头疼的还有,搜索到的文章可能有 90% 都是同质化的内容,能够解决问题的往往会是那 5%-10%。而 AI 编程助手则能够很快速,而且相对精确地给我们答案,甚至是一段可以直接解决问题的代码。
-
还有一些编程上的体力活,比如需要写一些逻辑不复杂但代码量相对较大的活,可以直接抛给 AI 编程助手,从而实现编程效率的极大提升。
-
在写代码时,有时还会遇到一些不太好下手的代码,可以直接给 AI,让它去实现一些逻辑,可能会帮助开发者找到新思路。
基于此,我最近一直在思考,编程的未来会是什么样的?这种革命性的变化是牵一发而动全身的,完全改变了过去几十年来的编程规则。
我们现在能够看到的是,搜索引擎正在发生巨变,Bing 搞上了 Bing AI,带动了 Bing 和 Edge 的增长。Google 在 Google I/O 2023 上,Bard 写的代码可以一键拖拽到 Colab 里直接运行,而 Google 也推出了由 PaLM 2 驱动的全新搜索引擎。
于是,“SEO is dead?”的讨论又出现了,这一次,好像确实如此……
将时间线放得更长一些,未来还需要编程吗?在 GPT-4 发布之时,OpenAI 总裁兼联合创始人 Greg Brockman 用笔和纸画了一个网站页面草图展示给 GPT-4,而 GPT-4 基于此仅用约 10 秒的时间就生成了网页代码,设计出了静态网页。当然,放在当前来讲,还比较偏于玩票展示的性质,但在变化已经如此迅猛的今天,未来又将发生怎样的改变?是不是会像《流浪地球 2》里,因为系统被黑,量子计算机能直接实时生成操作系统,重新获取控制权限,这些动作,只需要一条指令、几分钟时间……
各位开发者朋友们,你有着怎样的想法与思考?欢迎留言我们一起交流。
本文写于 2023 年 5 月 12 日夜,和师哥一起讨论共同而成,旁边还有安静假寐的 Java(喵~)。