程序員沸騰了!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還支持JavaScript、C、PHP、Go、C#、Ruby、Objective-C、Rust、Swift、TypeScript、OCaml、Scala、Kotlin、Perl、SQL、HTML、CSS和Bash。
主流編程語言幾乎都囊括在內。
支持5種編輯器
TabNine支持VS Code、Sublime Text、Atom、Emacs、Vim五種代碼編輯器。
對於使用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:編程派 |