GitHub近日新发布了一款基于AI的结对编程工具,它可以与码农合作完成软件开发项目。码农在敲键盘时,它会建议相应的代码行或整个函数。
有必要解释一下,结对编程是一种常见的敏捷软件开发技术,两个(通常是人类)程序员在同一个屏幕前协同工作,轮流编写代码,并轮流查看合作伙伴的输出结果。
GitHub Copilot
这个新的GitHub工具名为Copilot,它使用上下文提示来建议新代码,如果用户不喜欢 Copilot给出的初始建议,可以浏览替代方案,或者手动编辑。Copilot还会不断学习,因此开发人员编写的代码、文档字符串、注释或函数名越多,Copilot应该会变得越智能化。
实际使用中的GitHub Copilot
Copilot可能有点像Gmail的智能撰写功能,它会建议电子邮件回复中的下一段文本。
AI助力
这实际上是基于AI自动完成代码,这不是什么全新的概念。Codota和Tabnine提供类似的工具已有一段时日,这两家公司实际上早在2019年(Codota融资1200万美元之前)合并了。上个月,两家公司最终敲定Tabnine作为主品牌名称。
更广泛地说,机器编程工具正在各个领域崭露头角。微软最近宣布了Power Apps(用于创建低代码商业应用程序的软件)的一项新功能,该功能充分利用OpenAI的GPT-3语言模型,帮助用户选择正确的公式。
与之相仿,新的GitHub Copilot功能也在很大程度上依赖与OpenAI的合作,而OpenAI是GitHub母公司微软去年投资10亿美元的AI研究公司。不过,据今天的GitHub博文介绍,Copilot使用一种名为OpenAI Codex的新AI系统,该系统被誉为“在代码生成方面的功能比GPT-3强大得多”。鉴于OpenAI Codex是用一个含有更多公共源代码的数据集加以训练的,它应该更了解开发人员如何编写代码并能够提出更准确的建议。
OpenAI Codex还用源代码和自然语言加以训练,这意味着它在组装代码时能够解释注释和逻辑。
实际使用中的GitHub Copilot(查找文件)
GitHub新的AI结对编程工具可以帮助富有经验的开发人员节省一些时间,但对于新接触某种特定语言或框架的码农来说,它可能特别卓有成效,因为GitHub Copilot使他们不必搜索网上其他地方以解决编程难题。
可用性
GitHub Copilot今天推出了技术预览版,作为微软的跨平台代码编辑器Visual Studio Code的一个扩展件来提供,可在本地或云端使用。虽然Copilot旨在与一系列广泛的语言和框架协同使用,但发布时它特别擅长兼容JavaScript、Python、Ruby、TypeScript和Go这几种语言。
值得注意的是,GitHub Copilot并非旨在代表开发人员编写代码,而是主要通过了解开发人员的意图来帮助他们编程。GitHub还不保证它生成的代码甚至可以运行,因为它并不测试代码。这意味着它可能无法正确编译。所以存在着一定的风险,不过眼下对于Copilot而言仍处于早期阶段。
几十年来,微软及其他机构的研究人员一直在努力教计算机编写代码。这个概念尚未进入主流,有时是由于编写代码的程序其用途还不够广泛。而GitHub Copilot工具是这个领域一个令人瞩目的举措,它依赖采用许多编程语言的大量代码和庞大的Azure云计算功能。