當前位置:
首頁 > 知識 > 程序員沸騰了!AI代碼補全工具問世,支持23種語言及5種主流編輯器

程序員沸騰了!AI代碼補全工具問世,支持23種語言及5種主流編輯器

文 | 邊策 安妮

出處 | 量子位

推薦 | 編程派公眾號(ID:codingpy)

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 CodeSublime TextAtomEmacsVim五種代碼編輯器。

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

VS Code

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

Sublime

Sublime用戶安裝分為兩步:

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

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

Vim

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

回復下方「關鍵詞」,獲取優質資源

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 編程派 的精彩文章:

pandas 庫作者手把手教你 Python 數據分析
寫了三年代碼,還是不懂 Python 世界的規則

TAG:編程派 |