让程序员保持领先于生成式人工智能的4个技巧。
神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。
编者按:AI会取代人类程序员吗?对于程序开发人员而言,不应将AI视为竞争者,而应该将其作为助手。本文来自编译,希望对您有所启发。
人工智能,尤其是由大型语言模型(LLM)驱动的生成式人工智能,可能会颠覆许多程序员的生计。但一些专家认为,人工智能不会取代人类程序员,至少不会立即取代。
加州大学戴维斯分校生物医学工程博士、医疗人工智能研究中心MedARC首席执行官塔尼什克-马修-亚伯拉罕(Tanishq Mathew Abraham)说:“你不得不担心使用人工智能的人会取代你。”
那么,在以大型语言模型为中心的编码时代即将到来之际,软件开发人员如何才能让自己变得更有用、更有意义呢?这里有一些提示和技巧,可以帮助程序员在生成式人工智能世界中生存和发展。
▋1.坚持基本原则和最佳实践
虽然无数基于人工智能的编码助手可以帮助代码生成,但编程的基本要素依然存在:阅读和推理自己和他人代码的能力,以及让自己编写的代码融入一个更大的系统的能力。
哈佛大学约翰·A·保尔森(John a.Paulson)工程与应用科学学院从事人机交互与编程语言交叉研究的博士生普里扬·维斯林格姆(Priyan Vaithilingam)表示:“我相信人工智能可以极大地提高软件开发人员的生产力,但软件工程不仅仅是生成代码,还包括从激发用户需求到调试、测试等等更多内容。”
最不可或缺的编程技能之一仍然是人类程序员的专长:解决问题。分析问题并找到最佳的解决方案,仍然是人类程序员的核心竞争力。
Python软件基金会研究员、软件公司Explosion联合创始人兼CEO Ines Montani表示,编程有其创造性的一面,很多处理问题的技巧比实际的语言或工具更重要,“不要陷入将自己与人工智能相比较的陷阱,因为人工智能或多或少是一个大型模型的统计输出。开发人员所做的工作与模型输出的结果是有区别的,作为一名开发人员,不仅仅是写几行代码那么简单。”
此外,有效率的软件工程实践比以往会更加有价值。这些实践包括规划系统设计和软件架构,可以给基于AI的工具提供良好的环境,更有效地预测接下来需要完成那些代码。
麻省理工学院计算机科学与人工智能实验室副主任兼首席运营官阿曼多-索拉-莱萨马(Armando Solar-Lezama)是该实验室计算机辅助编程小组的负责人,他谈道:“人类程序员必须弄清楚一段代码的结构、组织代码的方式,以及满足不同的要求。所有这些都是软件工程实践的核心,而且未来很长一段时间内都不会消失。”
▋2.找到适合自己的工具
找到适合自己的AI编程工具非常重要。每种工具都有自己的交互方式,将每种工具融入开发工作流程也有不同的方法,无论是自动创建单元测试、生成测试数据还是编写文档,都是如此。
例如,GitHub Copilot和其他人工智能编码助手可以增强编程能力,在开发者写程序的时候提供建议。而ChatGPT和Google的Bard更像是对话式的AI程序员,可用于回答有关API的问题或生成代码片段。
想要找到适合自己的工具,关键就在于尝试。对于开发者来说,应该广泛试用AI工具,体会不同工具的工作原理,评估输出的质量,同时对其它工具保持开放的态度。亚伯拉罕说:"人工智能是一个飞速发展的领域,你不能只选择一种工具,然后一辈子都用它。你需要快速适应新的工具。”
还要考虑适当的使用案例。生成式人工智能工具可以为学习新的编程语言或框架提供一条捷径,也是启动小型项目和创建原型的快捷方式。
▋3.清晰准确的对话至关重要
在用AI工具辅助编程的时候,开发人员应该详细、清晰、严谨地输入需求,把这个不断调整输出内容的过程视为一种迭代。亚伯拉罕建议写一条注释,解释你想要的代码,这样助手就更容易生成符合你要求的相关建议。
对于会话式人工智能程序员来说,程序员需要知道构建提示语的最佳方式。亚伯拉罕建议的一种方法是思维链提示。这涉及到一种“分而治之”的策略,即把问题分解成多个步骤,然后逐一解决,最终解决整个问题。“要求模型在特定时间做太多事情会导致一团乱麻,更可取的方式是一步一步来,从生成一个个代码块开始,"他说。
例如,与其要求人工智能程序员从头开始编写整个程序,不如考虑一下程序要完成的不同任务,并进一步划分这些任务,要求模型为每项任务编写特定的代码。
亚伯拉罕说:"把AI编程工具当作一个实习生,他可能在知识层面差不了太多,但在经验层面还有不少欠缺。”
此外,精确度和清晰度对于快速实现需求至关重要。亚伯拉罕说:"你需要非常清楚地询问模型你想要什么,非常准确地说明你要求它做什么,并确保你在一步步跟进整个落实的过程。”
学习人工智能和机器学习的基本概念,以及了解大型语言模型的工作原理和优缺点也很有价值。你不需要深入研究,但掌握一些常识可以为你提供有关结果的重要背景信息。
为了帮助开发者快速入门,亚伯拉罕推荐了OpenAI的Cookbook,其中包含有关提示库和工具、提示指南和视频课程的部分,而Vaithilingam则建议阅读Illustrated Transformer,以了解有关模型和机器学习基础知识的更多信息。
为了帮助你入门,Abraham推荐OpenAI Cookbook,其中有提示库和工具、提示指南和视频课程等部分,而维斯林格姆则建议阅读《图解转换器》,了解更多有关模型和机器学习的基础知识。
▋4.保持批判态度并了解工具的风险
开发人员应该对大型语言模型的输出持辩证的态度,首当其冲的就是幻觉问题。显然,一味听信AI编程工具的输出结果总有一次会捅大篓子。维斯林格姆说:“盲目使用人工智能生成的代码很容易陷入调试的怪圈,而且很难发现细微的错误。”
维斯林格姆说道,"这就是为什么检查生成的代码至关重要,尽管这增加了一个额外的步骤,但对工作效率的提高可能弊大于利。”但亚伯拉罕认为,"在某些情况下,验证代码比从头开始编写代码要容易得多,而且先生成代码,然后进行验证,再将其纳入现有的代码库中,是一种更快捷的方法。”
在检查的过程中,开发人员可以按以下这几个问题来审视初步的输出结果:该模型是根据哪些数据进行训练的?有哪些内容被过滤掉了,且没有包含在该数据中?训练数据的时间有多长,模型训练时使用的编程语言、软件包或库的版本是什么?这些问题的答案可能会影响结果并提供更多相关信息。
版权是另一个需要考虑的因素。原创性非常重要,开发人员应该在检查AI输出的结果时关注有没有哪部分是专用代码。还一个更大的问题是安全性,因为这些模型可能会生成包含bug的代码。维斯林格姆认为,这就需要输出审查,以及测试管道等方式来进行妥善解决。
阿曼多-索拉-莱萨马说:"经验丰富的软件工程师能够带来的好处之一是,他们可以快速识别出常见的bug,以及代码中薄弱的部分。这种直觉就来自实践。”
程序员要想在生成式人工智能世界中生存下去,就需要将人工智能作为一种工具来接受,并将其融入到工作流程中,同时认识到这些工具的机遇和局限性,毕竟它仍然要依靠人类的编码能力来发展壮大。
本文来源:36氪
文章转载于其他网络,如有侵权请联系我们及时删除!