从代码推荐到代码智能——CodeIntelligence领域任务介绍

新知榜官方账号

2023-07-06 07:08:46

从代码推荐到代码智能——CodeIntelligence领域任务介绍

本文为系列文章,主要介绍代码智能(CodeIntelligence)领域涉及的众多有趣的任务(Task),会从这些任务的简介、历史和现状等维度展开介绍,希望让大家对于代码智能有一个深切的认识。而本文从一个最常用、开发者们最喜欢的功能--代码推荐开始,希望能够慢慢揭开代码智能神秘的面纱。

代码推荐(CodeCompletion)让我们从一个动图开始。可以看到,有了智能代码推荐的加持,我们的开发的效率和编程的幸福感得到了极大的提升。

那么代码推荐是什么呢?我们都用过输入法,输入中文时,大部分的输入法都会根据已输入的字符联想出可能的词组或者句子,这能很大程度提高我们输入的速度。那么代码推荐也是类似的,为了让开发者不再需要一个字母一个字母的敲击,“偷懒”的人们开发出了各种好用的提示工具,这些工具都在一定程度上帮助程序员们更好的编程。在使用了具备代码提示能力的编辑器之后,只能说再也回不去NotePad类似的文本编辑器了。

代码推荐也叫代码提示,同时也有很多类似的叫法,比如IntelliSense(智能感知)、IntelliCode、Autocomplete、CodeCompletion、CodeSnippets(代码片段)、CodeSuggestion、CodePrediction、CodeHinting。不管叫什么,描述的都是在编程时提供代码提示的能力,此处不用纠结。

代码推荐的历史第一次关于代码推荐的研究是在1957年,初次提出了拼写检查(Spell-Check)。之后到了1971年,RalphGorin开发了第一个拼写检查的应用--SPELL,不仅能够根据字母进行提示,并且能够纠正简单的字母错位的拼写错误。另一个不得不提的代码推荐的实现是微软的IntelliSense,这项能力被应用于VisualStudio中,它提供了很丰富的代码提示能力,包括类型、变量、函数,代码片段、关键字等。到了2017年,微软的另一个项目--IntelliCode使用机器学习作为代码推荐的底层支持,其也被默认集成到了VsCode编辑器中。另一个需要提一下的是SQLServerManagementStudio自带的SQL语法的智能提示,可以提示出常用的关键字以及包含的库、表和字段等。

代码推荐的现状当前的代码提示可谓到了百家争鸣的时代了,并且它已经当作是编辑器或者IDE的必备核心能力,而且代码提示的好坏直接决定它是否是一个好用的编辑器。目前学界也有很多相关的研究,包括使用各种算法进行训练的模型和算法。常见的有统计算法和一些自然语言模型。当前比较热门的模型算是OpenAI提供的GPT模型了,它从第一个版本到现在的GPT-3,每次发布都会引发热烈的讨论。而Tabnine(一个非常受欢迎的代码提示工具),就是基于GPT-2模型,提供了智能并且个性化的代码推荐能力,它能够根据个人的编程习惯推荐出非常个性化的代码,可以说是非常好用了。另一个不得不提的就是当前饱受争议的GitHubCopilot了,它使用了GPT-3模型,使用了10亿多行开源的代码进行训练,并且提供了不错的推荐效果,但因为有时候提示的代码直接是开源存在的代码,被指抄袭,目前已经有很多开发者发起了抵制copilot的运动,至于后续还不得而知。

代码推荐的未来有人说,有了智能代码推荐,后续程序员就要被下岗了。这句话当作笑话来听就好,千万别当前。虽然说目前的代码推荐能力确实帮开发者节省了很多的时间,但是还远远未达到完全替代程序员的程度。类比于自动驾驶的分级,我觉得代码推荐最多也就达到L1的程度,也就是“有时能够辅助驾驶员完成某些驾驶任务”。不过,未来可期,就像目前图像转代码已经可以根据设计稿来生成大部分静态代码了,我相信代码推荐也会越来越智能,让程序员简单机械的重复,从而花时间去编写“艺术”。

本页网址:https://www.xinzhibang.net/article_detail-6250.html

寻求报道,请 点击这里 微信扫码咨询

相关工具

相关文章