尚恩 发自 凹非寺量子位 | 公众号 QbitAI
未来五年内将不会有人类程序员。
这是最近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/