殺手級AI補代碼工具問世,支持23種語言及5種主流編輯器

五嘎子 5年前發布 | 2K 次閱讀 AI

  GPT-2,一個來自 OpenAI 的逆天語言模型,現在能用來補全代碼了。

  一位來自加拿大的大四學霸,開發了一款”Deep TabNine“代碼補全工具,實現了這一大膽的想法。

  它支持 23 種編程語言、5 種編輯器,使用簡單,效果驚艷。

  不少使用過的網友說:TabNine 是他們用過的最好的代碼補全工具,這是屬于程序員的殺手級應用

  在 VS Code 的擴展商店里,TabNine 已經被下載 1.3 萬次,獲得全 5 星好評。

  支持 23 種編程語言

  Deep TabNine 支持Java

  Python

  C++

  Haskell

  不同于各種其他代碼補全插件,Deep TabNine 是根據程序員過去的習慣自動補全,并在后面給出幾種選項的概率。

  如果有類似代碼出現在之前的項目里,TabNine 還會在補全候選框中直接給出地址,方便用戶點擊進去查閱。

  除以上幾種語言之外,Deep TabNine 還支持JavaScriptCPHPGoC#RubyObjective-CRustSwiftTypeScriptOCamlScalaKotlinPerlSQLHTMLCSSBash

  主流編程語言幾乎都囊括在內。

  支持 5 種編輯器

  TabNine 支持 VS Code、Sublime Text、Atom、Emacs、Vim 五種代碼編輯器。

  對于使用 VS Code 和 Sublime 來說,安裝 TabNine 非常方便,用自帶的擴展包管理工具即可。

  VS Code 用戶按下 Ctrl+P(Mac 用戶按下?+P),粘貼以下命令,然后按回車鍵完成安裝。

  Sublime 用戶安裝分為兩步:

  1、按下 Ctrl+Shift+P(Mac 用戶:?+Shift+P),選擇 Install Package Control;

  2、再次按下 Ctrl+Shift+P(Mac 用戶:?+Shift+P),選擇 Package Control:Install Package,然后選擇 TabNine 來安裝。

  Vim 使用 Vundle 插件管理器進行安裝:

  1、添加 Plugin ‘zxqfl/tabnine-vim’到 .vimrc;

  2、輸入:PluginInstall,按下回車完成安裝。

  其他編輯器的安裝方法就不一一贅述了,有需要的用戶可以參照文末的鏈接進行安裝。

  項目超過 400kb 需要購買許可證:個人用戶 49 美元,商業用戶 99 美元。

  由于 Deep TabNine 用到機器學習補全代碼,因此需要大量的算力(超過 100 億次浮點運算),在筆記本上運行模型,無法獲得低延遲的體驗。

  因此,軟件開發者推出了 TabNine Cloud 云服務器,用云端 GPU 加速。付費用戶不需要再加錢即可使用。

  所以聽起來很劃算吧?

  軟件開發者自己就說,這個價格其實不貴,有了 TabNine,一分鐘就里能幫你節省一秒,咱們再算算程序員的時薪,每個小時能節約 1.4 美元,不到一年時間就能回本了。

  如果你對效果不滿意,TabNine 開發者還提供 30 天退款保證。

  怎么做到的?

  TabNine 是在 GPT-2 的基礎上構建的,這是一種 Transformer 架構,原產自 OpenAI,是個“逆天”語言模型。

  GPT-2 的參數高達 15 億個,數據量比一代擴大了 10 倍,使用了包含 800 萬個網頁的數據集,共有 40GB。

  逆天之處就在于,GPT-2 寫起文章來毫無違和感,無需針對性訓練就能橫掃各種特定領域的語言建模任務,還具備閱讀理解、問答、生成文章摘要、翻譯等等能力。

  就 GPT-2 而言,它的訓練目標很簡單:根據所有給定文本中前面的單詞,預測下一個單詞。雖然本來是解決 NLP 問題,看似與寫代碼沒什么關聯,但建模代碼也算是用一種獨有的方式在理解英文

  比如,可以讓模型用 if/else 語句否定單詞:

  項目主頁顯示,在大約經過 GitHub 中 200 萬個文件訓練后,TabNine 具備了自動補全代碼的能力。

  在訓練這個模型期間,模型學習了例如動態類型語言中的類型推斷等復雜行為,用這樣的訓練方式預測 token。

  作者表示,TabNine 可以很好利用傳統代碼補全工具難以獲取的瑣碎細節。

  例如,假設 app.get_user ()的返回類型是一個帶有 setter 方法的對象,而 app.get_users ()的返回類型是一個列表,兩個名稱之間只有細微的差別:

  這個模型還能以自然語言編寫的文檔來推斷函數名稱、參數和返回類型:

  Deep TabNine 加入了之前用戶強烈要求加入的功能:用預先存在的知識,解決在創建新項目時的代碼補全問題。

  例如,它知道當一個類擴展 React.Component 時,它的構造函數通常會調用一個名為 props 的參數,并且通常在其內部用 this.state 賦值:

  Deep TabNine 甚至可以做不可能的事情,并記住 C++ 可變參數轉發語法:

  “殺手級應用”

  TabNine 問世后,不斷收獲好評,甚至還有程序員激動得爆粗口:

臥槽,這種軟件多來點就好了。(Fuck yeah. This is the sort of software I want to see more often: TabNine )

  有網友表示, 沒有它都不知道該怎么面對寫代碼這件事了。

  還有人稱之為開發者應用中的第一個“殺手級應用程序”:

  “令人印象深刻”、“感到神奇”“太酷了”……推特上的評價,頗有電視廣告上“用了都說好”的畫風。

  在各大科技論壇上,也有網友提出了建議和改進的方向。

  有用戶反映,也有美中不足的地方,比如這個工具會干擾自動括號完成。

  作者表示,TabNine 還在不斷更新完善中,正在改進這些 bug。

  大四學霸的第一桶金

  想不到吧,這款好評如潮的代碼工具,出自一名大四學生之手。

  Jacob Jackson,加拿大人,目前在滑鐵盧大學主修計算機科學與組合優化專業,輔修數學。大四在讀,今年 8 月份畢業。

  Jackson 此前在 Reddit 上發帖稱,這是自己在大學階段開發的第一款商業軟件產品。

  別人的大學,別人的第一桶金~

  但 Jackson 并非無名之輩,年少有為,曾在 2014 和 2015連續兩年獲得 IOI 金牌

  因此,大學一入學,便成為加拿大 Michael and Ophelia Lazaridis Olympiad Scholarship 獎學金的獲得者,免除了 8 個學期學費書費和生活費。

  除了自動補全代碼的 TabNine,Jackson 還開發了很多有意思的應用,比如一個名為 jellies 的益智游戲,和使用蒙特卡羅樹搜索的國際象棋引擎 Sashimi 等。

  傳送門

  TabNine 網站:

  https://tabnine.com/blog/deep

  Jackson GitHub 主頁:

  https://github.com/zxqfl

  Jackson 簡歷:

  http://jacobj.ca/resume.html

  —

 

 本文由用戶 五嘎子 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  轉載自:https://mp.weixin.qq.com/s/y7MZijv44mVqEWtTzHg4nw