自2022年末ChatGPT发布以来,人工智能(AI)正在深刻地改变软件开发的格局。从简单的代码补全到复杂的逻辑生成,AI正逐渐成为程序员不可或缺的助手。最近,OpenAI首席执行官山姆·奥特曼在其个人博客中发表的文章《智能时代》(The Intelligence Age)[1]更让我们深切体会到,超级智能似乎离我们越来越近了。
正如100年前的打孔卡编程方式与现今编程方式的天壤之别,如今的我们也难以完全预见超级AI时代的编程模式。尽管现阶段的大语言模型(如ChatGPT[2]、Claude[3]等)在AI辅助编程方面已经展现出强大的能力,并显著提升了开发效率,但它们仍面临诸多挑战。不过,与打孔卡时代的程序员相比,我们这一代程序员是幸运的,因为我们已经嗅到了超级AI的气息。
当前AI辅助编程的现状
目前,AI辅助编程主要有三种模式:
- IDE模式:通过使用工具(如Cursor[4]等)智能分析代码上下文,仅需简单的TAB键操作即可生成代码片段甚至是完整代码,显著提高编程效率。
- Prompt模式:开发者提供描述性的prompt,AI据此生成代码块,然后开发者将其整合到项目中。这种模式要求开发者对prompt撰写有较高的理解与能力。
- Agent模式:在这种模式下,AI作为自主的编程助手,理解开发者的意图并主动规划(强化学习增强的思维链等)和执行任务。开发者可以与AI对话,提出问题或请求功能,而AI则基于上下文自动生成代码、测试用例,甚至进行调试。Agent模式更接近于超级AI的初级模拟,试图通过自然语言交互与上下文理解,模拟人类思维,自主规划并处理复杂编程任务。
虽然IDE和Agent模式本质上都是Prompt模式的变种,但Agent模式更像是对超级AI的初级尝试,使开发者能够更专注于高层设计,将重复性任务交给AI处理。
不过,这三种模式都属于初级辅助模式,虽然已经能显著提升开发效率。这些模式的辅助效能还与多种因素相关,比如:
- 人类提示工程(Prompt engineering )[5]水平:开发者如何有效地与AI沟通需求,直接影响输出质量。
- AI对不同编程语言的掌握和擅长程度[6]这样语法复杂的语言,AI生成的代码可能更容易出现编译错误。相比之下,Go语言[7]生成的代码往往更容易直接运行。
- 编程任务的特性:不同类型的编程任务可能更适合不同的AI辅助方式。
注:随着AI在推理方面的提升(乃至形成独立的推理层),“过提示工程”可能不仅无法提高推理性能,还有可能妨碍模型工作[8]。也就是说对于推理能力越来越强的大模型,反倒是提示词越简洁越好,因为思维链都隐藏到了模型内部,如果再用思维链提示反而会适得其反。
当前AI的局限性与未来展望
当前的AI系统更像是一个知识数据库,主要基于已有的知识进行推理,与现实世界的互动能力仍然有限,如缺乏访问互联网和本地系统的能力。这种限制导致AI只能生成代码,却无法验证其逻辑是否正确或者能否编译运行。此外,AI与人类的交互手段仍相对初级,大多局限于文本、图片或语音的形式,这些方式在面对复杂需求时显得笨拙。
那么未来理想的AI辅助编程模式应该是什么样的呢?我认为应是端到端编程,即通过多种交互手段(自然语言、语音、图片以及将来的未知方式等)输入需求,AI直接输出已部署完毕且可正确运行的完整程序。在超级AI时代,这种编程模式将成为现实,届时AI与程序员的交互方式将迎来革命性变化。
我们可以将当前阶段称为"AI的过渡时代"。正如OpenAI的Sam Altman所预言那样,真正的智能时代可能还需要几千天才能到来。在这个超级AI出现的时代,端到端的编程模式可能才会真正实现。
根据Sequoia Capital的最新研究报告[9],AI技术正在从"快速思考"(System 1)向"慢速思考"(System 2)演进。System 1指的是快速、直觉性的反应,而System 2则涉及更深层次的推理和问题解决能力。这种演进正在推动一种新的"推理层"的发展,这可能是通向真正智能时代的关键一步:
图片
来自Sequoia Capital的最新研究报告
超级AI时代的编程模式可能包括:
- 脑机接口:通过思维直接传达编程意图。
- AR手势交互:在虚拟空间中操控代码组件,如钢铁侠电影中的场景。
- 多模态融合交互:结合语音、手势、眼动跟踪等多种方式。
- 自适应自然语言处理:AI能够理解和解析非结构化的自然语言,转换为代码逻辑。
这些技术的发展可能会让未来的编程体验更像是与高度智能的助手协作,而非单纯的工具使用。如今脑机接口、AR增强现界等技术也在快速演进,很可能与超级AI带来的智能时代同时到来。
程序员角色的转变
在超级AI时代,程序员的角色将发生显著的变化。程序员基本上不再编码,而是更多地转变为"系统架构师"、"AI协作者"和"创新推动者"。他们的工作会更多地涉及高层次的问题解决、创新思考和跨学科合作。技术知识仍然重要,但更重要的是理解业务需求、系统设计、伦理考量和用户体验等更广泛的技能。
Sequoia Capital的报告指出,随着AI技术的进步,软件开发正在从"软件即服务"(SaaS, Software as a Service)模式转向"服务即软件(Service as a Software"模式。这意味着AI应用不仅仅是提供软件工具,而是直接提供完整的服务解决方案。这种转变将极大地扩展AI应用的市场,从软件市场扩展到更广阔的服务市场:
图片
来自Sequoia Capital的最新研究报告
注:怎么理解“服务即软件”(Service as a Software)呢?想象一下,之前你的公司购买了一个人力资源管理的SaaS服务,这种购买仅仅让你能够使用其功能,但谁来操作这些功能呢?你的公司依然需要雇佣专门的HR人员来通过Web、GUI客户端或App进行管理。而“服务即软件”则将这两方面“打包”在一起。你无需再招聘专员来操作,只需提出你的需求即可。这种模式有点类似于现代的HR劳务外包,但不同的是,在智能时代,这种外包的真正执行者不再是“人”,而是AI应用和支持AI运行的算力。这样一来,你可以更高效地满足业务需求,而无需担心人力资源的管理和操作。
随着超级AI的出现,我们还可能会看到AI系统不仅能辅助编程,还能自主编写、维护和优化代码,即AI的自主性。然而,这种高度自治的系统也可能面临复杂的自我管理问题。
借鉴《黑客帝国》中的概念,未来的AI系统可能会像一个巨大的自维护程序,但仍需要"异常处理程序"来解决一些无法自动修复的关键问题。在这个场景中,人类程序员可能扮演类似"尼奥"的角色,成为系统无法自行解决问题时的最后求助对象。
这种人机协作模式可能类似于现代软件系统中的"live reload"概念:当AI遇到无法自动解决的问题时,它会寻求人类的帮助,重新加载并修复系统,从而保持整个生态系统的稳定运行。
小结
AI辅助编程技术正处于一个激动人心的过渡时期,距离完全自主的端到端编程还有一定距离。然而,随着技术进步和新型人机交互方式的到来,编程的本质将发生革命性的变化。未来的编程将是人类与AI共同塑造的领域,一个充满无限可能的智能时代。
参考资料
[1] 《智能时代》(The Intelligence Age): https://ia.samaltman.com/
[2] ChatGPT: https://chatgpt.com/
[3] Claude: https://claude.ai/
[4] Cursor: https://www.cursor.com/
[5] 提示工程(Prompt engineering ): https://en.wikipedia.org/wiki/Prompt_engineering
[6] AI对不同编程语言的掌握和擅长程度: https://mp.weixin.qq.com/s/K8pao4_-YU77j7Ld1p7VLQ
[7] Go语言: https://tonybai.com/tag/go
[8] “过提示工程”可能不仅无法提高推理性能,还有可能妨碍模型工作: https://openai.com/index/learning-to-reason-with-llms/
[9] Sequoia Capital的最新研究报告: https://www.sequoiacap.com/article/generative-ais-act-o1/