天生性人工智能捉住了大众的想象力,并开始了新的科技淘金热。虽然人们一贯关注产生自然措辞散文和视觉艺术的人工智能工具,但在科技界,人工智能对其编码能力越来越感兴趣。您可以向AI谈天机器人描述您想要的程序,它会在几秒钟内将可实行代码返回给您,这既会吸引普通程序员,也会让普通程序员感到不安。
人工智能驱动编程的前景导致了对软件行业未来的一些相称宏伟的预测,特殊是来自高管高管、顾问和关注他们的专家。但是,每天利用人工智能工具的程序员和经理呢?我们讯问了少数利用天生人工智能编程的人,到目前为止,它对他们来说是如何运作的。我们理解到,人工智能确实正在改变人们的事情办法——但机器不会很快取代人类编码器。
人工智能如何帮助程序员
与我们交谈的开拓职员最常用的两种天生性人工智能工具是ChatGPT(OpenAI广为人知的人工智能谈天机器人)和GitHub Copilot,后者集成到Visual Studio和其他IDE(集成开拓环境)。虽然这两个工具都可以基于自然措辞查询天生代码,但Copilot及其实验性继任者Copilot X可以超越对话模型一步,作为一种增强的IDE自动完成工具,可以预测开拓职员正在做什么。
Croquet.io的联合创始人兼首席架构师Vanessa Freudenberg表示,她在Visual Studio Code的日常编码中利用GitHub Copilot。她阐明了它是如何运作的。
如果我写一行:
let x = this.leftMargin + this.width / 2;
它将自动建议下一行:
let y = this.topMargin + this.height / 2;
它知道它须要将“宽度”和“左”更换为“高度”和“顶部”。这节省了我很多打字的韶光。
NetBeez的联合创始人兼首席技能官Panickos Neophytou表示,他每次编码时都利用Copilot X和ChatGPT。他描述了利用这些工具超越自动完成的两种不同方法。第一个是系统性的。他说,描述一个定义非常明确的函数,包括特定的输入、预期输出示例以及所涉及的数据模型,个中包括具有隐式关联的数据库表。“人工智能常日可以推断出这些关联。哀求它以特定措辞和特定办法履行它。项目管理工具中定义的“任务”该当被定义为这种提示。
Neophytou还认为,更随意和对话的技能可以产生良好的效果。在这种模式下,他说:“在实行任务时,你会问一些关于如何做某些事情的问题。这就像有一位履历丰富的工程师在你身边回答你的问题,并辅导你完成任务。”
无论你利用什么技能,学习精确提示人工智能都是一门艺术。软件供应商CodeSee的创始人兼首席实行官Shanea Leven说,我利用思想链提示来确保我得到精确的动词来开始和完善我的提示。选择精确的动词和描述性对付创造一个好的提示真的很主要。(正由于这个缘故原由,Prompt工程正在成为一门热门学科。)
人工智能的编码上风
我们交谈的开拓职员供应了各种用例,个中人工智能工具帮助他们完成事情。这便是脱颖而出的。
从代码天生文档
软件文档是一种相称构造化的格式,这是人工智能发达发展的领域。网络咨询公司Love2Dev的创始人Chris Love说,我喜好利用ChatGPT的东西是在我的代码中编写文档[或]评论。“用手做须要很多韶光。但是,一旦我有一个完全的函数,我可以给它这个功能,并在一两秒钟内写出代价不错的文档。我喜好那个!
”
从文档中天生代码
人工智能还可以根据评论或文档天生代码。Croquet.io的Freudenberg给出了一个Copilot仅从一个评论行天生代码的大略示例,个中以下注释:
// get file name from our url
产生了这个输出:
let fileName = window.location.pathname.split("/").pop();
她说,我可能会以不同的办法写这篇文章——我是一个普通话女孩——但这是一个完备大略且可以说更易读的办理方案,以是我会接管它。这不仅节省了大量韶光,有时它还教会了我我可能没有创造自己的针言。
办理问题的办理方案
开拓职员知道,编程的一部分正在不断重塑轮子。处理一个你认识的某个地方已经办理的问题可能会令人沮丧。软件开拓公司Rise8的工程实践卖力人Jeff Wills认为这是一个适宜人工智能声援的领域。“假设我提出了一种打算球体上两点之间间隔的方法,”他阐明道。副驾驶将自动出去,找到Haversine算法并天生所有代码。
Wills创造,在AI天生代码的替代方案是向他的运用程序添加一个大型库的情形下,这个用例特殊方便。他阐明说,说我不想把全体几何库带入我的代码,并膨胀代码库。“我真的只须要那个算法。我可能会自己写并包括它——或者利用ChatGPT或Copilot来帮助我制作它。这便是现在人工智能的面包和黄油。”
更新或清理代码
Love2Dev的Chris Love创造ChatGPT对付更新他已经编写的代码特殊有用。他说,我已经办理了更新我没有更新的旧Node.js模块的问题,只是由于键入代码所需的韶光比它的代价要长。“我探求的最常见的情形是将旧的基于promise的函数转换为利用async/await。后者是一个更清晰的语法,但当我编写模块时并不那么常见。我还让它利用更当代的语法,如解构和将变量声明从var转换为const和let。”
更快的编码(大概)
与我们交谈的许多开拓职员表示,与Copilot或ChatGPT互助让他们以为可以更快地完成事情,只管他们承认他们不一定能量化这一点。Love说,我认为它终极会帮助我更快地编写更好的代码。很难说快多少百分比,但对我来说是有形的。
Rise8的遗嘱说,我以为我可以更快地通过可能的办理方案进行遍默。“从理论上讲,这该当会加快我的速率——但大概我正在探求更多可能的办理方案!
因此,大概我没有及时得到回报,而是在质量上得到回报,由于我能够更多地进行几次再三的回报。”
牢记安全
任何用于编写代码的新技能都不可避免地会以难以预测的办法向恶意行为者打开攻击面,天生性人工智能也不例外。在最近的一个例子中,安全研究职员创造,ChatGPT幻觉可能包括不存在的npm软件包——攻击者可能会预测这些软件包名称,创建它们,并用恶意代码添补它们。
DeepIdea Lab的创始人Surya Sanchez表示,打击此类攻击的方法是“在本地运行代码,识别缺点,并理解人工智能天生的代码指的是不存在的软件包。在这种情形下,我们手动重写代码,供应更清晰的解释,以专注于特定部分,而不是全体代码。”桑切斯还建议您“避免共享秘密或API密钥,由于人工智能可能会被第三方审查。我们希望确保与生产干系的敏感信息保持安全。”
在某些方面,人工智能确当前局限性至少目前是内置的安全功能。Love说,在我看来,令牌或提示/相应大小限定可以让你当心恶意代码。它迫使你小块地查看所有内容。
学校和事情中的人工智能工具
作为一名在阿姆斯特丹大学与打算机编程学生一起事情的西席,Max van der Broek对崭露锋芒的程序员如何思考人工智能有着某种独特的视角。他最近进行了一项调查,创造他项目中超过一半的学生正在利用ChatGPT进行编码。(这比那些用它来写作业的人的百分比要高。)调查的一个有趣的结果是,学生想要利用ChatGPT的辅导方针,并创造当前的政策既不清楚又过于严格:他们希望许可一些用场,但不是全部。范德布罗克说,我可以想象,在你学习根本知识的第一年利用天生性人工智能是非法的,在往后的几年,当你创建更大、更繁芜的项目时,它作为副驾驶是许可的,”范德尔布罗克说,并补充说,“我们现在拥有的最佳实践明年肯定会过期。”
事情场所的开拓职员也想知道他们如何以及何时在事情中利用人工智能,因此经理们必须开始弄清楚规则——由于很可能他们中的一些人已经在这样做了。在Rise8上,Wills说,利用人工智能既是自上而下的征象,也是自下而上的征象。Wills说,我们的创始人Brian Kroger非常感兴趣。“他喜好理解最新的技能,以是他在我们的工程渠道中提出问题,让我们思考这个问题。但与此同时,当ChatGPT真正爆炸时,人们立即作为早期采取者涌现,并开始利用该资源来查看它产生了什么,以及他们如何将其整合到他们的日常事情流程中。”
Wills还表示,Rise8有预算资金,开拓职员可以用它来支付他们认为有帮助的工具。许多人选择为访问ChatGPT-4付费,他说,这比免费的ChatGPT-3.5能产生更好的结果。
未来会若何?
天生人工智能所引发的最大焦虑之一,便是其可能取代包括编程在内的数十种看似难以自动化的人类事情。只管未来难以预测,但与我们互换的开拓职员和经理大多对此持保留态度。Brain Jar的Surowski表示:“人工智能能够编写大段代码,这确实令人印象深刻。但它无法将代码转化为插件、进行测试并办理问题,这正是开拓职员的事情。我们的角色远不止于代码编写者,事实上,这只是我们事情中的一小部分,却是人工智能目前唯一能供应帮助的部分。”
总体而言,CodeSee的Leven认为,确实会有公司选择缩减其工程团队规模,但“具有前瞻性和一流水平的公司不会这样做。他们将保持自己的竞争力,以超越对手并赢得市场份额。这样的公司仍旧须要精良的开拓职员,由于现实是,人工智能目前还无法进行推理、权衡繁芜成分或处理任何非线性或繁芜问题。因此,除非你正在构建大略的东西,否则它的帮助是有限的。我们已经看到,同时利用人类和人工智能的公司取得了最佳成果。”
编译:卢敏
参考链接:https://www.infoworld.com/article/3700771/coding-with-ai-developer-tips-and-best-practices.html