【為什麼我們要挑選這篇文章】你是否寫程式也想要電腦自動補上後面程式碼?現在有個殺手級應用就可以做到如此,而且還支援高達 23 種程式語言,菜鳥、老手都適用!(責任編輯:陳伯安)
「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 jobs@fusionmedium.com」
本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處
作者:量子位/邊策 安妮
GPT-2,一個來自 OpenAI 的逆天程式語言模型,現在能用來補全程式碼了。
一位來自加拿大的大四學霸,開發了一款「Deep TabNine」程式碼補全工具,實現了這一大膽的想法。
它支持 23 種程式語言、5 種編輯器,使用簡單,效果驚艷。
不少使用過的網友說:TabNine 是他們用過的最好的程式碼補全工具,這是屬於工程師的殺手級應用。
在 VS Code 的擴展商店裡,TabNine 已經被下載 1.3 萬次,獲得全 5 星好評。
支援 23 種程式語言,依照 Coding 習慣給出建議
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),黏貼以下命令,然後按 Enter 完成安裝。
ext install TabNine.tabnine-vscode
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,按下 Enter 完成安裝。
其他編輯器的安裝方法就不一一贅述了,有需要的用戶可以參照文末的連結進行安裝。
一分鐘內省下一秒鐘,不滿意 30 天內能退款
項目超過 400kb 需要購買許可證:個人用戶 49 美元(約 1,470 台幣),商業用戶 99 美元(約 2,970 台幣)。
由於 Deep TabNine 用到機器學習補全程式碼,因此需要大量的算力(超過 100 億次浮點運算),在筆記本上運行模型,無法獲得低延遲的體驗。
因此,軟體開發者推出了 TabNine Cloud 雲服務器,用雲端 GPU 加速。付費用戶不需要再加錢即可使用。
所以聽起來很划算吧?
軟體開發者自己就說,這個價格其實不貴,有了 TabNine,一分鐘裡能幫你節省一秒,咱們再算算工程師的時薪,每個小時能節約 1.4 美元,不到一年時間就能回本了。
如果你對效果不滿意,TabNine 開發者還提供 30 天退款保證。
神器來自 OpenAI 的架構
TabNine 是在 GPT-2 的基礎上構建的,這是一種 Transformer 架構,原產自 OpenAI,是個「逆天」語言模型。
GPT-2 的參數高達 15 億個,數據量比一代擴大了 10 倍,使用了包含 800 萬個網頁的數據集,共有 40GB。
逆天之處就在於,GPT-2 寫起文章來毫無違和感,無需針對性訓練就能橫掃各種特定領域的語言建模任務,還具備閱讀理解、問答、生成文章摘要、翻譯等等能力。
AI 已被證明能自動化許多繁瑣的人類工作,甚至能應用在 coding 的世界。
面對 AI 構築的智慧未來,台灣怎麼抓住關鍵機會?8/10 跟著科技報橘一起 CONNECT 台灣 to the Future,破解 AI 未來地圖。
65 折佛心雙人套票開賣中,手刀搶票!
就 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 網站
Jackson GitHub
Jackson 履歷
(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈杀手级 AI 补代码工具问世,支持 23 种语言及 5 种主流编辑器,程序员沸腾了 〉,首圖來源:Pxhere, CC Licensed。)
延伸閱讀
史上最完整 PyTorch 資源來了!工程師不能錯過的中文教程、精選書單全在這
給自學機器學習的工程師:沒有學歷光環卻想找到工作,千萬注意履歷十大雷區!
工程師好用資源來了!超完整 Python 查詢表,程式碼複製貼上不用自己寫
AI 工程師最佳入門資源!史丹佛公布「自然語言理解」免費課程,新手們趕快存起來