未来五年内将不会有人类程序员。
这是最近 AI 圈新晋嘴炮哥,Stability AI 首席执行官伊玛德 · 莫斯塔克又一惊人言论。
此话一出,立刻引得一众科技圈大佬吐槽,直指大错特错。
ChatGPT 的出现催生出一批代码生成工具,AI 取代人类话题已久,但对 ” 程序员饭碗不保 ” 这种观点,反对之声并不少见。
最近,IEEE Spectrum 发布了一篇GPT 时代程序员生存指南。
文章从四个方面,表述在大模型为核心的编码时代,程序员如何不被替代,并认为现在还无法做到代码 100% 靠 AI 生成,具备编程素养的人类程序员依然很重要。接下来,就来具体看看这篇文章的主要观点。
基础是一切
尽管现在已经有很多基于 AI 的编码助手,可以帮助完成生成代码。
但编程的基本原则和前提仍然是理解。
Python 软件基金会研究员、软件公司 Explosion 联合创始人兼 CEO 伊内斯 · 蒙塔尼(Ines Montani)说:
AI 本质上是大模型的统计输出,程序员的工作不仅仅是编写多少行的代码这么简单。
当前,程序员仍然需要具备最基础的 ” 阅读、理解 ” 自己和他人代码的能力。比如,通过对代码进行分析和调试的能力,以及对问题解决和算法设计的理解,才能将所编写的代码融入到更大的系统中。
此外,事实证明,良好的软件工程实践比以前更有价值,包括规划系统设计和软件架构。
” 人类编码员仍然必须弄清楚一段代码的结构、组织代码的正确抽象以及不同界面的要求 “,MIT 计算机科学和人工智能实验室副总监兼首席运营官 Armando Solar-Lezama 说道。
通过理解问题、拆解问题、设计算法以及实施和测试解决方案,人类编程人员能够提供独特的洞察力和创造性解决方案,而这些是 AI 无法完全取代的。找到适合的工具
现在已经有大量工具被应用到编程领域,包括 GitHub Copilot、ChatGPT、Bard 等,但每个工具交互方式都有差异。
例如,GitHub Copilot 和其他 AI 编码助手可以增强编程过程,提供代码建议。
而 ChatGPT、Bard 这类则更像是一个对话式 AI 程序员,可以用来回答关于 API 的问题或生成代码片段。
此前 GitHub 曾采访了 500 名开发人员,其中 92% 的人表示在工作和私人时间都使用 AI 编码工具。
AI 是一个发展迅速的领域,保持开放的态度,持续尝试使用不同的 AI 工具。同时,要考虑适当的使用场景。生成式 AI 可以为学习新的编程语言或框架提供快捷途径,也可以更快地启动小型项目并创建原型。
而想要让对话式 AI 程序员发挥作用,就需要清楚了解 ” 如何与 AI 沟通 “。
提到沟通,这就涉及提示工程。
学会与 AI 沟通
对话式 AI 程序员,就像一个具备丰富知识但经验不多的实习生,需要引导。
OpenAI 创始人 Sam Altman 就直接表示:
能够出色编写 Prompt 跟 AI 对话,是一项高级技能。
让 AI 从头开始编写整个程序,不仅无法最大程度发挥 AI 的能力,还可能获得一些不相关的回复。这就需要将一个问题分解为多个步骤,并逐个解决每个步骤以解决整个问题的分而治之策略。
进一步拆解需求,让 AI 为每个任务编写特定的函数。
因此,了解 AI 和机器学习的基本概念,学习 LLM 工作原理及其优势和局限性也是很有必要的。
现在已经有很多关于 ” 提示工程 ” 的教程,之前 DeepLearning.ai 创始人吴恩达与 OpenAI 开发者 Iza Fulford 联手推出ChatGPT 提示工程。
另外,”ChatGPT 提示工程 ” 课程的讲师之一 “Iza Fulford”,此前还编撰了 OpenAI Cookbook(官方手册)。手册讲述了大量 GPT 相关的使用案例,能帮助快速上手并掌握 GPT 模型的开发与应用。
关于模型和机器学习基础知识的内容,可以看看 Jay Alammar 的Illustrated Transformer。
独立思考和批判思维
相关数据显示,目前 GitHub 平台上的所有代码,有 41% 都是在使用 CoPilot 辅助下生成的。
用大模型生成代码,效率很高,但也有一些问题。
首先,大模型会产生不准确、错误的代码。另外,也可能生成包含漏洞的代码。
此前,加拿大魁北克大学的四位研究人员就发现,ChatGPT 生成的代码往往存在严重的安全问题,而且它不会主动提醒用户这些问题,只有在用户询问时才会承认自己的错误。
其次,就是隐私问题。程序员在开发过程中输入的代码,平台是否会非法获取。虽然现在一些代码工具公司,比如 Tabnine 承诺企业版会严格保密业主隐私,但这一问题仍然不能忽视。
因此,在使用由大模型生成的代码时,我们需要保持批判性思维,仔细检查和验证结果,并对其进行评估。
每一个新的技术突破和重大的范式转变都带来了一系列新的可能性,人工智能也不例外。比如,2010 年云计算的兴起,人们担心传统 IT 可能不再重要,但实际情况却完全不同。
事实上对云技术相关职位的需求大幅增加,如云计算专家、云架构师和云工程师等。
程序员需要将 AI 作为一种工具,将其纳入他们的工作流程,并认识到这些工具的机遇和局限性,同时依靠自己的编码能力来保持活力。
IEEE 认为,现在就说程序员将被替代,还为时尚早。
参考链接:
[ 1 ] https://spectrum.ieee.org/ai-programming/
[ 2 ] https://www.educative.io/blog/will-ai-replace-software-developers/
[ 3 ] https://www.linkedin.com/pulse/we-asked-developers-driving-impact-age-ai-heres-what-said-github/?trk=organization_guest_main-feed-card_feed-article-content/