前幾天給大家介紹過一款IDEA編碼自動註釋工具,可以幫助小夥伴們的程式設計效率,想必很多人已經下載使用了,還沒看過想了解下的小夥伴點這裡:IDEA編碼自動註釋工具,讓你的開發更有效率
然而此時此刻TJ君腦海中有一個大膽的想法,如果有一款工具,能反過來根據註釋自動給出程式設計程式碼,是不是程式猿們都會笑的合不攏嘴,爽歪歪?
別以為TJ君說的是天方夜譚,就在前不久的 GitHub Universe 2021開發者大會上,GitHub官方正式宣佈了一款名為 Copilot工具的更新。
說起Copilot這個名字,相信一直關注GitHub的小夥伴馬上腦海中會浮現出今年早些時候看到的新聞。
就在今年夏天,GitHub 官方和OpenAI聯合釋出了一款AI自動程式設計工具,其名字正是 GitHub Copilot 。就像前文TJ君想的那樣,透過Copilot,程式設計師只需輸入註釋,即可自動生成程式碼!
當時一時間在程式猿圈子裡還引起了不少的轟動,但更多的是對這個工具的疑問,還因此引發了一個快速平方根倒數演算法事件。
快速平方根倒數演算法,是當年紅極一時的雷神之錘3(Quake 3,也是TJ君當年的最愛之一)的開發者約翰·卡馬克用的一段程式碼。
卡馬克大神
這段使用多項式逼近計算平方根的程式碼,至今都沒什麼人能明白卡馬克的腦子是怎麼想出來的,以至於這段程式碼阿註釋直接是what the f***?很貼切了
而有開發者在Copilot釋出後不久就發現,只要輸入 快速平方根倒數演算法(Fast Inverse Square Root,當然是英文)作為註釋,Copilot 就會逐行逐字地重現了這段神奇的演算法,一字不差,甚至連那個誇張地註釋都沒變。
這下子彷彿在程式猿小夥伴中間投了顆原子彈,大家都在問難道Copilot只是把別人的程式碼拿來複制一下就是所謂地自動生成了?
那這之後各種版權問題咋搞,萬一用了Copilot生成一段程式碼卻被人起訴了怎麼辦?甚至有科技公司直接宣佈禁止旗下員工使用Copilot開發公司產品,就是為了減少不必要的麻煩。
一時間各種針對Copilot地非議愈演愈烈,甚至傳出了自動生成內容是某個公司大佬身份證這樣的訊息,當然後來被澄清是一個笑話。
但是GitHub並沒有退縮,認為Copilot並沒有簡單的抄襲其他人的內容,而是經過大量訓練的AI自動生成所需程式碼,和抄襲完全是兩回事。反正這件事情後來也麼了下文,當時Copilot也只支援 Visual Studio Code。
不過前幾天的這次更新之後,Copilot將全面支援Neovim 和 JetBrains IDE,包含開發者常用的 IntelliJ IDEA、PyCharm 等。同時增加了對 Java 中多行補全的支援,並計劃在未來幾個月內支援Python、Java、Type、Ruby 和 Go之外更多的語言,似乎真的是要大幹一場。
如果想用Copilot的話,需要將 IntelliJ IDEA 和 PyCharm 升級到 2021.2 或以上版本、Neovim 的版本則需要升級成 0.6 或以上版本,並且需要安裝 Node.js v12 或以上版本。
安裝重啟之後就可以在工具欄看到安裝好的Copilot
然後登陸GitHub賬號,同意相關條款
那說了那麼久,這款號稱可以自動編碼的外掛具體使用效果如何呢?就讓TJ君帶你領略一下或許是未來的編碼趨勢與潮流:
例如在專案裡新建了test類,Copilot馬上就會給一個建議生成的主體
此時只需要輕按一下tab鍵,就可以接受建議自動生成,無需手打這段程式碼。
同樣的如果輸入了一個函式標題,也會自動出現推薦的函式主體內容,一樣是用tab鍵接受。
當然,Copilot不止會給出單一的自動編碼推薦,使用者可以使用Alt+]或者Alt+[來逐個切換不同的推薦,就像逐個挑選一件件商品一般,選中之後輕按一下tab鍵使用即可。
而透過Alt+Enter可以直接開啟各種推薦的列表,便於查詢。
至於TJ君之前夢想的根據註釋自動生成程式碼,有一個前提就是必須輸入的註釋能讓機器看懂,也就是說,需要英文註釋。當輸入中文註釋,Copilot不一定看得懂含義,畢竟中文可是博大精深滴。。。
那如果小夥伴的英語水平不錯,Copilot還真的能節省不少時間,例如當用戶寫了如下一段關於給影象增加邊框的註釋:
// find all images without alternate text
// and give them a red border
void process() {
Copilot會自動生成相應的功能程式碼,感覺比自己寫的還順暢:
除了上述Alt+]、Alt+[、Alt+Enter,最常見的操作還包括使用Esc拒絕推薦和Alt + \觸發關聯建議。這裡TJ君提到的操作模式都是基於windows操作,如果使用MAC的小夥伴要注意將ALT鍵換成Option鍵就可以了。
TJ君覺得如果對於Copilot的使用熟練了並且對英文註釋的掌握沒有問題的話,Copilot真的能讓程式設計省時省力,省卻許多手打基礎程式碼的功夫,讓程式猿更多的精力花在整體架構設計或者邏輯實現上。不過到底怎麼樣,還是要用一用才知道,所以小夥伴們趕緊來獲取倉庫地址和外掛下載方法,趕緊試試吧!關注我,私信“copilot”,獲取倉庫地址!