这篇文章给大家聊聊关于乐谱软件源码分享下载网站大全,以及软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
撰文:Dluck
封面:Github官方博客
我们编程时写出的代码,在未编译前通常以纯文本格式存在。因此,实际上我们能使用任何文本编辑器来编写代码,包括系统自带的记事本。但是,好的工具能够让我们事半功倍。面对复杂的工作任务,我们需要IDE(集成开发环境)这样的生产力工具。IDE本质上就是更高级的文本编辑器,集成了许多人性化功能来提升效率,比如:自动补全变量,提示可能会用到的函数列表,语法高亮,显示语法错误等等。
IDE本身也在不断进化。我的第一门编程语言是Java,使用的是Eclipse,当时自动补全功能还比较简陋,局限于符号的提示与选单,我也没有对IDE究竟有多强大建立起概念。后来,开始学习开发框架后,我慢慢接触到JetBrains出品的IDEA。IDEA的提示更智能,例如:可以在数组后输入「.for」自动构成foreach循环,也可以使用快捷键自动生成Getter/Setter、构造函数、重载函数等等。毫无疑问,JetBrains系列产品为编码工作带来了更高的效率,提供了更加全面、智能的补全功能。
最近一段时间,AI技术的进步则让代码补全有了更上一层楼的机会。接下来,我们为大家介绍的GithubCopilot就是这样一款基于AI的代码补全工具。
GitHubCopilot是什么
GithubCopilot是GitHub和OpenAI合作开发的人工智能工具,可以在编辑代码时帮助你自动生成可能会需要的代码。
GitHubCopilot能够提取代码上下文,给出整行代码或整个函数的补全建议。它可以帮助我们完成下列任务:
将注释转化为代码;
自动填充重复代码;
编写测试;
快速发现解决问题的替代方法;
无需网络搜索即可快速探索新的API;
适应用户编写代码的方式,帮助用户更快地完成工作。
原理是什么?
我们先介绍一下GPT-3。GPT-3(GenerativePre-trainedTransformer3)是一个用于处理自然语言的AI模型,由OpenAI训练开发。GPT-3通过阅读几乎一切人类可阅读的内容来进行训练,理论上,它能够完成一切通过语言完成的工作,而且完成效果还非常接近人类。已经有实验证明GPT-3可用于撰写文章、回答问题、编写代码生成应用程序、设计表格、开发游戏、将文字描述便携为成型的网页等等。
而OpenAICodex则是基于GPT-3开发的一款针对编程所设计的AI模型。Codex从公共代码仓库学习人类编写的代码,其代码来源包括Github上的公共代码仓库。官网原文如下:
OpenAICodexisadescendantofGPT-3;itstrainingdatacontainsbothnaturallanguageandbillionsoflinesofsourcecodefrompubliclyavailablesources,includingcodeinpublicGitHubrepositories.(OpenAICodex是GPT-3的衍生项目;它的训练数据包括自然语言和数以亿计来自公开可用来源的源代码,其中包括Github公开仓库的代码。)
最后,GitHubCopilot则是使用了Codex进行研发的一款商业产品。Github将算法进行包装,做成了插件和网页,进行应用分发。现在GitHubCopilot支持在VisualStudioCode、VisualStudio、JetBrainsRider上通过插件形式集成进IDE,以便我们使用。
使用&体验
要想使用GitHubCopilot,首先需要注册一个Github账号。有了帐号后,按下面的步骤可以找到并启用GitHubCopilot:
1.找到设置页面:在任何页面的右上角,单击个人资料照片,然后单击“设置”。
2.找到GitHubCopilot设置页面:在边栏的「代码、规划和自动化」部分,单击「GitHubCopilot」。
3.启用GitHubCopilot:在GitHubCopilot设置页面上,单击「启用GitHubCopilot」。
4.选择付费方式(月付/年付):GitHubCopilot可以免费试用60个自然日,随后需要以$10/月的价格订阅。如果你是学生的话,可享受教育优惠,免费使用GitHubCopilot。
在RiderIDE进行设置
在偏好设置里安装GithubCopilotPlugin;
重启IDE;
登陆Github完成验证。
设置完成后,IDE提示可以使用「Tab」来自动补全代码,使用「?+]」或者「?+[」来选择其他候选的补全选项。
体验如何
在编写代码的过程中,GithubCopilot会自动提示可能的补全方案,此时按下「Tab」即可完成补全。
有时,AI并不会一次给出完整的提示代码,例如,图示的代码就并非一次性生成的,而是逐行自动补全,最终生成了一个可以实际使用的函数(甚至包括注释)。下图的例子在Unity3D中绘制了一条射线用于检测前方是否有物品,只有第一行注释是我写下的。
下面的例子很有趣:当我尝试把乐谱的音高编写成数组时,GithubCopilot也给出了他所理解的音乐:
在这样的例子中,对重复的流行乐片段,GithubCopilot有时可以给出不错的答案。比如预先输入《卡农》的重复性模进片段,GithubCopilot往往可以完全正确地补全乐谱。可见,在面临重复性较高的功能开发,或是使用一些常用的算法时,依靠AI补全是一个称得上非常可靠的选择。不过,如果需求非常复杂,大部分情况下,它并不能独立地给出完美的解决方案。GitHub团队在对一组Python函数进行基准性测试后发现尝试十次后,大约57%情况下可以给出正确的答案。部分情况下,GithubCopilot也会给出无法通过编译的代码。
GithubCopilot的不足之处
使用GithubCopilot很久后,Rediit大佬ColinEberhardt指出了几点不足:
GithubCopilot很多时候响应得不够快。虽然它已经快到秒出答案,但这对快速输出状态的程序员来说仍然是不够的。要么它的提示还没出现你就继续输入了,要么你会因为等它而暂时停下思路。
GithubCopilot总是会自动提示。这种提示和输入存在冲突:有时,当你需要等等看提示怎么说另一些时,会不断有内容弹出,接着消失。或许,自动模式并不是GithubCopilot的「最佳打开方式」?
GithubCopilot生成代码质量不足。它生成的代码可以满足大部分简单且重复的功能需求,但对于熟练的程序员,可能会额外浪费很多精力来校验它自动生成的代码是否正确。
GithubCopilot版权问题
许多人指出GithubCopilot会使用有版权的代码作为提示内容(参见JacobCrume的文章“GitHubCopilotisNowAvailableforAllandNotEveryoneLikesIt”)。少数派作者100gle在《GitHubCopilot:革命未竟,未来可期》中更是举出了很多例子。最为出名的莫过于,如果你在编辑器中输入Fastinversesquareroot,便会得到一段代码,它和当年《雷神之锤》使用的算法完全一致。
现代开源软件多使用GPL(GNUGeneralPublicLicense)协议,这个协议要求你也将代码开源,且使用GPL协议。而通过GithubCopilot补全时我们并不确定这段代码的作者为它指定的协议。开源许可证的主要作用是对软件的使用、复制、修改和再发布等进行限制。而显然使用AI补全显然会破坏这一点。
可以预见的是,同当今各种AI作画工具面对的种种争议一样,GithubCopilot也一定会因为版权问题,难以被大型企业所用,至少短期内如此。
使用建议
GithubCopilot能帮助初学者面对不那么熟悉的编程语言或开发框架时,快速学习常用的接口调用方式和简单的实现方案。这意味着我们可以不用为了某些基础问题反复翻找API手册,或体验CSDN这样的技术博客网站的层层传送门。
GithubCopilot可以帮助我们在不熟悉的领域快速上手,只需要一些注释便可快速生成部分业务逻辑,然后进行测试。当然,最终代码的可靠性还是需要开发者人为辨别和控制。
GithubCopilot可以在重复性劳动时显著提升效率。比如你需要写一大堆单元测试,它们无法靠复制/粘贴批量生成,同时有一些细微的逻辑变化需要处理。又或是你需要开发一些重复性功能,比如批量声明一些数据类型好几十次。这时GithubCopilot补全的代码往往很可靠。
总结
GithubCopilot或许并不能承载类似“AI即将取代程序员”的想象,但在当下,它无疑是程序员的好帮手。作为辅助,它提供的补全并没有智能到让完全不会编程的用户完成开发,但也并不只是简单的提示工具。合理运用GithubCopilot能够为开发者的学习成长带来很大帮助。
与此同时,它不可避免地存在一些缺陷,代码的版权问题也限制了它商业化的应用前景。不够熟练的程序员可能也会对它失望——就像它名字中的Copilot一样,GithubCopilot更接近优秀的副驾驶角色,但工作总归还是需要一位优秀的主驾驶领导。
最好的旅行靴已经送到我们手中,走出什么样的路还需要开发者自己去定夺。
*本文内容系作者独立观点,不代表indienova立场。未经授权允许,请勿转载。
关于乐谱软件源码分享下载网站大全,软件的介绍到此结束,希望对大家有所帮助。
