大家好,我是良許。
這幾天,GitHub 上有個很火的外掛在抖音刷屏了——Copilot。
這個神器有啥用呢?簡單來講,它就是一款由人工智慧打造的程式設計輔助工具。
我們來看看它有啥用。
首先就是程式碼補全功能,你只要給出函式名和引數,Copilot 就會自動幫你補全程式碼。
第二個功能,就是它可以根據註釋來寫程式碼。也就是說,你只要把註釋寫好,它就會自動幫你生成對應的程式碼,嚇人吧~
除此之外,它還可以自動生成重複性程式碼、自動生成測試程式碼,同時也可以生成多套程式碼方案供你選擇。
目前支援多種開發語言,包括 Python, JavaScript, TypeScript, Ruby, Java, Go等等,支援VS Code,Neovim,JetBrains 等 IDE。
目前還沒有完全開放,處於邀請制狀態。前幾天我看到了這個外掛並申請了,但是目前還沒透過,所以想看演示的話大家可以上 B 站,很多大佬做了測評。
看到這個外掛這麼強大的功能,很多程式設計師已經嚇傻了,這麼強大,AI 都已經可以幫你寫程式碼了,程式設計師是不是要下崗了?
但在我看來,這個外掛目前還只是個高階的玩具而已。
1. 只是幫你百度一下
這個外掛的本質是利用人工智慧,透過開源社群裡的大量程式碼進行訓練,從而實現自動寫程式碼的效果。
所以,對於通用性的程式碼,它的生成準確性還是比較高的。
比如,我們在寫兩個日期之間的天數,你寫來寫去,無非就是這樣寫(以 Python 為例):
def days(str1,str2):
date1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d")
date2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d")
num=(date1-date2).days
return num
這種程式碼說白了其實沒有多少創造性,寫熟練了可能根本都不需要經過大腦,都形成肌肉記憶了,無非就是函式名、變數不太一樣,其餘的幾乎都一樣。
類似的,我們還有一些演算法(比如氣泡排序)、工具(比如雜湊校驗),其實也都是重複性非常高的程式碼,它也可以幫你完成得很好。
重複性的工作,都有可能被替代的。
在這種情況下,Copilot 的作用就相當於幫你百度一下,然後再幫你 CV 一下。如果沒有這個外掛,我們一樣也能做,只是花點時間而已。
2. 業務程式碼質量不高
Copilot 自己也承認,他們會嘗試瞭解程式設計師的意圖,並「儘可能」生成最好的程式碼,但生成的程式碼並不總是有效,有時甚至還沒有意義。
畢竟訓練集來自公共程式碼,良莠不齊,甚至完全沒有意義。
這點在 B 站大神的測試下也得到了印證,有時候確實也生成了一堆不知所云的程式碼。
畢竟,我們的業務需求一直都是複雜多變的,有時我們自己都不太能實現一些功能需求,還指望機器幫你寫?別太幻想了!
而且,它自動補全業務程式碼的前提是,你已經需要有一定的程式碼量供它參考,它才可以去猜測你接下來準備寫什麼。
也就是說,你還是需要寫一些程式碼,有這些程式碼了它才會寫得更準確一些。而且你提供的程式碼量越少,它的推薦就越不準確。
也有人說了,它會根據註釋寫程式碼啊。但是,實際上,註釋你都寫好了,你自己其實也已經差不多把程式碼都寫好了。
再說了,程式設計師都知道,讀別人的程式碼是一件很痛苦的事情,Copilot 幫你寫好了程式碼,你敢直接就用嗎?你閱讀並理解它的程式碼的時間,也許自己早就寫完了。
所以,你說它會完全幫你寫程式碼嗎?肯定不行,至少目前不會。就算能幫你寫部分業務程式碼,也不一定寫得好。
3. 有一定的安全問題
Copilot 它的原理就是利用大量的程式碼進行訓練,樣本越多自然就越準確。
那麼問題來了,他們自己宣稱這些樣本是來自開源的社群,但你使用了它們的外掛,你敢保證你寫的程式碼不會成為他們的樣本?
而且,如果它們生成的程式碼不合你的要求,你手動修改了,它更加理解了你的意圖,這對 Copilot 的訓練簡直是神助啊,他們難道真的不會考慮利用一下使用者的免費勞動力?
凡是使用第三方外掛,而且還是不開源的,誰都無法保證你的資料是否真的沒有被洩漏出去。
自己練習的程式碼肯定是無所謂了,但是如果涉及到公司的商業機密,那就可能會有法律問題了。
而且,更可怕的是,Copilot 生成的程式碼,有 0.1% 的機率會原封不動複製訓練集的樣本。如果這些樣本沒版權也沒事,但要是有版權,有可能也會吃官司。
之前已有新聞報導過,Copilot 原樣複製了經典射擊遊戲《雷神之錘》裡的程式碼,而這些程式碼是受法律保護的,使用者也因此受到了一些麻煩。
所以,現在不少公司已經明確規定,禁止使用 Copilot 外掛!
4. 照相機的出現不會讓畫家下崗
照相機被發明出來的時候,曾經一度也有人開始唱衰畫家這樣的崗位。但時過境遷,這麼多年過去了,畫家的崗位消失了嗎?不僅沒消失,反而現在技術精湛的畫家身價一漲再漲。
相機,只是把畫家的一部分重複性工作取代了,比如畫肖像、風景,等等。它只會機械地,一比一還原現實。而現在的畫家,更多是作為藝術創作,這部分相機短時間內是無法取代的。
(現在也有 AI 藝術創作,但還很難說取代)
Copilot 何其不是這樣的存在呢?我大膽預測,Copilot 只會取代部分基礎的、重複性的程式設計工作,說它會讓程式設計師下崗,我覺得這肯定是天大的笑話。
相機再智慧,你也需要具備一定的美術、審美基礎,才能拍出好看的照片。
同樣的,Copilot 幫你寫了一堆程式碼,你如果沒有一定的程式設計基礎的話,你連改都不會改。
5. 展望
我還是那句話,Copilot 的出現不會讓程式設計師下崗,只會取代部分工作而已。
工具的出現只是會讓我們從重複性的勞動中解放出來,從而讓我們的大腦有更多時間思考。但思考和創作本身,很難被取代。
我個人是非常歡迎 Copilot 這樣的工具出現,可以讓我們減少很多不必要的工作。
作為程式設計師都知道,我們每天都需要花費很多時間在百度/谷歌上面,並且各種搬運輪子。這種工作就是機械的重複性工作,如果能有工具讓我們從這樣的工作中解放出來,肯定會為我們節約很多時間。
而且,Copilot 這個單詞本身也明確了自己的定位,那就是「副駕駛」,人家已經很明確自己的位置,根本就沒想著成為主駕駛。
所以,Copilot的出現,大家不要如臨大敵,而是要合理利用工具,善於利用工具,讓工具真正為我們所服務。