抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?

640?wx_fmt=jpeg


作者 |  James Vincent等

编译 | 夕颜

出品 | AI科技大本营(ID:rgznai100)

 

导读:在过去的一年中,AI 生成书面文字的能力大大提高。通过扫描庞大的文本数据集,机器学习软件可以生成从短篇小说到歌词的各种令人信服的样本。现在,一个名为 Deep TabNine 的新程序,可以将相同的技术应用于编码世界。这个程序一经F推出便好评如潮,大有抢了程序员饭碗的架势。这个程序是否真有这么好用?我们来一探究竟。


什么是Deep TabNine?


据外媒 The Verge 报道,Deep TabNine 是由滑铁卢大学的计算机科学本科生 Jacob Jackson 创建的编码自动完成器,程序员可以将它作为附件安装在他们选择的编辑器中,程序员写代码时,这个程序会给出下一行代码建议,每次提供一小段代码。你可以将它理解为 Gmail 的智能撰写功能用到了代码上。

 

据悉,Jacob 于 2018 年 2 月开始研究该软件的原始版本,在 11 月发布之前它叫做 TabNine。本月早些时候,他发布了一个更新版本,该版本使用由研究实验室 OpenAI 设计的深度学习文本生成算法模型 GPT-2 来改善能力。该模型使用 Transformer 架构,旨在解决自然语言处理中的问题,Deep TabNine 用这个架构来理解代码中的英语。例如,模型可以使用 if / else 语句来进行否定。在训练时,模型的目标是根据前面给定的 token 来预测下一个 token。

 

Deep TabNine 使用 GitHub 的近 200 万个文件进行了训练,它具有预先存在的知识,而不是仅仅从用户当前的项目中学习。此外,这个模型还引用以自然语言编写的文档来推断函数名称、参数和返回类型。它还能利用传统工具难以发现的小线索。例如,它可以理解 app.get_user() 的返回类型被假定为具有设置器方法的对象,且 app.get_users()的返回类型被假定为列表。


机器学习极大提高智能编码能力


Jacob 表示,这种软件虽然并不新鲜事物,但机器学习已经大大地改善了它的功能。“这对我来说是解决了一个问题。”

 

Deep TabNine 的更新版本让程序员们留下了深刻印象,他们在 Twitter 上称这个软件“惊人”、“让人疯狂”和“绝对令人兴奋”。

       640?wx_fmt=png       

用户 Franck Nijhof 是一位在闲暇时间从事开源家庭自动化软件工作的 IT 经理,他对 Deep TabNine 不仅感到惊讶 ,还觉得既兴奋又害怕。“我使用 Deep TabNine 的第一个小时内没有作用,因为我不停地被它惊讶到,脑子里一直不停地问它到底是怎么知道的?怎么做到的?” Nijhof 通过电子邮件告诉 The Verge。

 

这样的自动完成工具之前就有过,但 Nijhof 表示 Deep TabNine 的建议更准确。“我过去曾尝试过一些'通用'的智能编写程序,但它们很烦人而且没有帮助,”他说道,“TabNine 无疑是一个改变游戏规则的存在。”

 

特斯拉人工智能总监 Andrej Karpathy 也对这个程序赞不绝口:

       640?wx_fmt=png       

深度学习自动编码 https://t.co/WenacHVj7z 非常酷!很久以前我在做 char-rnn(字符级循环神经网络)时尝试过相关的想法,但当时它并不是很有用。随着新工具(GPT-2)的出现和更多的关注,它将会发挥更大的作用。

 -  Andrej Karpathy(@karpathy),2019年7月18日


机器学习预测让代码建议更优,支持22种语言


Jackson 表示,该软件之所以可以提供更好的建议,是因为它可以进行预测。大多数自动填充程序必须解析用户已编写的内容来提出建议,就像人使用数学公式中的步骤一样理顺代码。相比之下,Deep TabNine 依赖于机器学习的能力来查找数据中的统计模式以进行预测。

 

与文本生成算法在大量书籍、文章和电影脚本数据集上进行训练的方式相同,Deep TabNine 对来自编码库 GitHub 的 200 万个文件进行了训练。它在这些数据中找到模式,并用其在任意给定代码行中可能出现的内容给出建议,无论是变量名还是函数。

 

Jackson 说,使用深度学习创建自动编码软件有几个优点。首先,它可以轻松添加对新语言的支持。只需要将更多的训练数据放入 Deep TabNine 中,它就会挖出模式。这意味着,Deep TabNine 支持大约 22 种不同的编码语言,而大多数同类型产品只支持一种。

 

Deep TabNine 支持的编码语言完整列表如下:

 

Python,JavaScript,Java,C ++,C,PHP,Go,C#,Ruby,Objective-C,Rust,Swift,TypeScript,Haskell,OCaml,Scala,Kotlin,Perl ,SQL,HTML,CSS,Bash

 

最重要的是,由于深度学习的分析能力,Deep TabNine 提出的建议整体上具有很高的质量。而且,因为软件不会查看用户自己写的代码来提出建议,所以它可以从编码的那一刻开始就起作用,而不用等着从用户编写的代码中寻找蛛丝马迹。


TABNINE并不完美:不擅长创造性代码


当然,这个软件也并非完美。它在提出建议时会出错,另外,它也不是对所有类型的编码都有用。Hacker News 和 r / program subreddit 的用户已经找到了它的各种优点和编程漏洞(但大多数倾向于正面评论)。

 

用户1:免费版本 200 KB 的限制对于实际代码库来说太低了,有考虑过提高限制吗?


Jacob Jackson 回复:可以试下付费版 30 天返款。所有版本的 TabNine 仍然适用于大于索引限制的项目。索引中将添加和删除文件,以确保索引文件与用户正在编辑的文件尽可能相关。

用户2:可以用,但不是很好用。对于你最喜欢的编辑器不支持或没有插件的语言来说,这是一个非常酷的技术,但是如果编辑器已经对语言有很好的支持(比如 VSCode for Typescript),它可能不会比连接自动完成的编辑器更好用。


用户3:添加 IntelliJ Idea 支持,我会买它:)

 

用户 4:支持 Emacs 后,我会买!

 

对于这个为程序员构建的编码工具的编辑器和工作流程精确度,大家也有很多看法。

 

Jackson 也坦承了 Deep TabNine 的一些缺点,如它更适合某些类型的编码。它在自动完成相对死记硬背的代码时效果最好,这种编程已经被做过数千次,只有很小的变化。但是,它并不擅长用户用于解决新问题的探索性代码。考虑到软件的智能来自数据中的模式,这并不奇怪。

        640?wx_fmt=png       

那么,它对于普通程序员真的有用吗?这取决于很多因素,比如他们使用的编程语言,他们想要实现的目标等。但 Jackson 表示,与其说是一个人类编码助手,它更像是一种更快的输入法(一种常见的被称为结对编程的做法)。

 

“想象一下,现在所有的程序员都在使用相当于手机的键盘打字,而使用 Deep TabNine 有点像转而去使用常规键盘,”他说道。这款软件可以提高用户输入信息的速度,并且可以提高工作效率,“因为你可以花更多时间考虑内容而不是细节。”但它不会按照你的方式编写代码,而你也确实需要要密切关注它的动向。


如何使用 Deep TabNine?


虽然集成深度学习模型具有多种优势,但使用它需要大量的算力。Jackson 明确提到,在笔记本电脑上运行无法实现 TabNine 用户习惯的低延迟。对此,他们提供了一种解决方案——TabNine Cloud(Beta)服务,该服务将使用户能够使用 TabNine 的服务器进行 GPU 加速自动完成。访问 TabNine Cloud,可以在此处免费注册:https://tabnine.com/beta_signup

 

但是,有许多人更愿意将代码保存在他们的机器上。为了确保代码的隐私性和安全性,TabNine 团队正在研究以下用例:

 

  • 他们承诺在未来推出尺寸减小的模型,个人开发者可以在笔记本电脑上运行,提供合理的延迟。

  • 企业可以选择模型许可,在自己的硬件上运行。他们还提供训练自定义模型,以了解企业代码库特有的独特模式和样式。


商业化前途未定


目前,Jackson 正在考虑下一步该用这款软件做些什么,以及是否值得商业化。他说,他本人目前在一家大型科技公司有一份全职工作,他还不想放弃,但来自各领域的人都对这款软件表示“非常感兴趣”。“我还没有真正决定我想用它做什么。”

 

目前,TabNine 的个人许可用费用为 49 美元,商业用途费用为 99 美元,个人必须注册 Deep TabNine 测试版才能访问新的深度学习功能。购买许可之后, TabNine 能够索引更多文件,给出更多相关建议。

 

     640?wx_fmt=png       

网站上写道:“TabNine 每分钟至少可以为你节省 1 秒钟。如果你认为你的时间价值超过 1.40 美元/小时,它将帮你在不到一年的时间内收回成本。“

 

他说,如果他能够使用开源软件创建这样的程序,那么 AI 辅助编码的未来就是一片光明。

 

“这是在这个领域工作的每个人的目标,告诉计算机你想要写什么样的代码,它就能帮你写,”他说道。“我们目前距离实现这个目前还很远,但我认为这种工具可以帮助你更方便地表达自己的想法。”

 

原文链接:

https://www.theverge.com/2019/7/24/20708542/coding-autocompleter-deep-tabnine-ai-deep-learning-smart-compose

https://hub.packtpub.com/introducing-deep-tabnine-a-language-agnostic-autocompleter-based-on-openais-gpt-2/


(*本文为 AI科技大本营编译文章,转载请联系微信 1092722531)


精彩推荐



640?wx_fmt=png


“只讲技术,拒绝空谈”2019 AI开发者大会将于9月6日-7日在北京举行,这一届AI开发者大会有哪些亮点?一线公司的大牛们都在关注什么?AI行业的风向是什么?2019 AI开发者大会,倾听大牛分享,聚焦技术实践,和万千开发者共成长。目前,大会早鸟票抢购中~扫码购票,领先一步!


640?wx_fmt=png


推荐阅读

  • 博士毕业最高201万!华为顶级薪酬招“天才少年”

  • 单v100 GPU,4小时搜索到一个鲁棒的网络结构

  • 别再说学不会:超棒的Numpy可视化学习教程来了!

  • 再不要这样起变量名了!

  • 17 岁成为 iOS 越狱之父,25 岁造出无人车,黑客传奇!

  • 刚刚!为吊打谷歌,微软砸10亿美元布局AI,网友炸了!发帖上热门……

  • 华为,百度豪投,这类程序员要再次上榜了!

  • 百度入局, 一文读懂年交易过4亿「超级链」究竟是什么?

  • 云计算将会让数据中心消失?


640?wx_fmt=png 你点的每个“在看”,我都认真当成了喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50025.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刘强东的代码水平如何?网友:当年一晚赚5万

作为京东集团大佬,刘强东备受关注。互联网界的大佬,很多都是程序员出身,或者会写代码,就像雷军、马化腾、李彦宏、周鸿祎等,几乎都是编程高手。于是有人问道,刘强东的代码水平如何? 关于这个问题&#xff…

【我惊呆了】Chatgpt比程序员还懂代码

Chatgpt竟然比程序员还懂代码?这个AI让我惊呆了 你有没有遇到过这样的情况:你在写代码的时候,突然发现一个bug,但是你怎么也找不出原因,只能无奈地看着程序崩溃。你想要求助,但是同事都很忙,网上…

刘强东不学编程,今天很可能没有京东......一位码农的发家致富史

公元前216年,16岁的项羽随叔父离开老家宿迁,踏上了西楚霸王之路。2200多年后,“大强子”带着村里人为他凑的500块钱和76个茶叶蛋,离开老家宿迁,来到了中国人民大学社会学院。他跟朋友说:我就是想当官&#…

afl-fuzz.c 源码全分析

afl-fuzz.c 源码全分析 picasso big sb 这是整个 afl 项目的核心,本文根据 clion 调试的执行顺序进行分析。 首先使用 afl-gcc 编译并插桩程序: afl-gcc -g test1.c -o afl-test然后设置 afl-fuzz 的参数,fuzz_in 和 fuzz_out 是新建的&a…

C++高级编程-高级特性

临时总结&#xff1a; <utility> std::move 获得右值引用 奇形怪状的函数 1.传统函数 void f&#xff08;int a&#xff09;{}2.<functional> bind bind( F&& f, Args&&... args ); 参数 f - 可调用 (Callable) 对象&#xff08;函数对象、指向函…

Vue——May(1)

VUE 一、vue基础1.1 引用1.2 基础应用1.3 模板语法1.4 数据处理1.5 el与 .$mount1.6 data的函数式写法1.7 架构模型——MVVM模型1.8 数据代理Object.defineproperty1.9 理解数据代理1.10 事件处理1.10.1 参数1.10.2 this1.10.3 简写1.10.4 传参 1.11 事件修饰符1.12 键盘事件1.…

三次输错密码后,系统是怎么做到不让我继续尝试的?

故事背景&#x1f34a; 忘记密码这件事&#xff0c;相信绝大多数人都遇到过&#xff0c;输一次错一次&#xff0c;错到几次以上&#xff0c;就不允许你继续尝试了。 但当你尝试重置密码&#xff0c;又发现新密码不能和原密码重复&#xff1a; 相信此刻心情只能用一张图形容&a…

chatgpt赋能Python-python_b怎么用

Python在SEO中的应用 介绍 Python是一种高级编程语言&#xff0c;具有清晰简洁的语法和强大的功能。它的应用场景非常广泛&#xff0c;除了在工业、科学、金融等领域中得到广泛应用&#xff0c;还可以在SEO中发挥重要作用。 SEO意为搜索引擎优化&#xff0c;是指通过优化网站…

【AI面试】hard label与soft label,Label Smoothing Loss 和 Smooth L1 Loss

往期文章: AI/CV面试,直达目录汇总【AI面试】NMS 与 Soft NMS 的辨析【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化在一次询问chatGPT时候,在他的回答中,由smooth L1联想提到了Label Smoothing Loss 。我把问题贴到下面,和chatGPT的回答,供你参考。不…

2023 海外工具站 3 月复盘

3 月的碎碎念&#xff0c;大致总结了商业人生、付费软件、创业方向选择、创业感性还是理性、如何解决复杂问题及如何成长这几个方面的内容。 商业人生 商业人生需要试错能力和快速信息收集与验证校准&#xff1b; 商业逻辑需要试错能力&#xff0c;收集各种渠道信息后整理决…

零入门kubernetes网络实战-33->基于nat+brigde+veth pair形成的跨主机的内网通信方案

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本文主要使用的技术是 nat技术Linux虚拟网桥虚拟网络设备veth pair来实现跨主机网桥的通信 1、测试环境介绍 两台centos虚拟机 # 查看操作系统版本 cat …

ai写作生成器有哪些?试试这几款工具吧

近年来&#xff0c;随着ai技术的飞速发展&#xff0c;越来越多的人开始意识到ai文本生成器的重要性和实用性。这种文本生成器可以帮助我们快速生成各种类型的文章&#xff0c;如报告、评论、新闻、邮件等&#xff0c;它的应用范围已经非常广泛了。不仅如此&#xff0c;随着机器…

公募基金投资者盈利洞察报告

导读&#xff1a; 近一年市场表现不佳&#xff0c;购买成长型风格基金的基民承受一定亏损&#xff0c;但是投资价值型基金的基民逆势取得正收益&#xff0c;均衡型基金基民也有所亏损&#xff0c;但幅度较小。近三年、近五年的时间维度里&#xff0c;成长型及均衡型基金的投资者…

2023年直播电商618创新趋势研究

导读&#xff1a; 竞争激烈的618已经落下帷幕&#xff0c;作为一年中重要的大促节点之一&#xff0c;618的发展变迁在一定程度上反映了电商行业兴起与成长的过程&#xff0c;见证着中国消费市场的日益繁荣。 从直播电商平台的崛起&#xff0c;到双11、618等年度购物节的涌现&am…

chatgpt赋能python:Python画在一张图上的SEO

Python画在一张图上的SEO 在SEO优化中&#xff0c;数据可视化是非常有效的工具。而Python作为数据可视化的利器&#xff0c;在实现数据的可视化方面也是非常得心应手的。在这篇文章中&#xff0c;我们将会介绍Python如何能够绘制多个图形在一张图片上&#xff0c;从而达到我们…

chatgpt赋能python:python绘图的优势与不足

python绘图的优势与不足 Python是一门高效的编程语言&#xff0c;近年来&#xff0c;Python在科学计算和数据可视化方面表现出色&#xff0c;成为绘制图形的首选语言之一。本文将介绍使用Python绘图的优势和不足&#xff0c;并重点介绍几种常用的Python绘图库。 优势 简单易…

chatgpt赋能python:Python散点图的颜色设置

Python散点图的颜色设置 什么是散点图&#xff1f; 散点图是一种数据可视化的图表类型。它用于观察两个变量之间的关系。通常&#xff0c;x轴表示一个变量&#xff0c;y轴表示另一个变量。每个点表示一个数据点&#xff0c;它在x和y轴上分别具有对应的值。我们可以通过比较散…

chatgpt赋能python:Python怎么画图形:从入门到精通

Python怎么画图形&#xff1a;从入门到精通 简介&#xff1a; Python 作为一种高级编程语言&#xff0c;在数据分析与可视化方面被广泛应用。在数据分析过程中&#xff0c;图形可视化是十分重要的一部分&#xff0c;因此也需要掌握可视化的技巧和方法。 基础知识 在 Python…

chatgpt赋能Python-python画笔的尺寸

介绍 Python是一种流行的编程语言&#xff0c;广泛应用于各种应用程序&#xff0c;包括可视化和图形应用。其中一个强大的库是matplotlib&#xff0c;它允许用户创建各种图形&#xff0c;例如线图、散点图和条形图。在matplotlib中&#xff0c;设置画笔尺寸是一个重要的概念&a…

chatgpt赋能python:Python画布调用方法介绍

Python画布调用方法介绍 Python的画布是绘制图形的工具之一&#xff0c;其灵活的调用方法可以让我们以多种方式绘制各种图形。本文将介绍Python画布的调用方法&#xff0c;包括Canvas、Tkinter以及Matplotlib。 1. Canvas Canvas是Python Tkinter中用于绘制图形的功能模块&a…