什麼!還能自動寫code?GitHub Copilot的體驗

Jason Z
jason-read-code
Published in
Jul 16, 2022

github Copilot 是之前聽說已久,現在終於開放的的寫 code 神器。

安裝與註冊還有收費方法在此就不贅述,和所有的套件安裝方法一樣,以下著重在使用的體驗分享

使用體驗

例如我用 Angular 寫了一個TODO list 的程式,我要寫右下角 “Clear completed” 的功能,要把已經完成的待辦事項清掉。

寫法不難,就是把待辦事項的陣列中,狀態已經完成的待辦事項過濾掉就好,於是我寫了一個 clearCompleted 的方法,剛寫完,Copilot就馬上幫我寫完細節的程式碼,只要按一個tab就輕鬆完成了。

過程中,寫完TODO list

再試一次,剛剛用Angular 寫,現在改用Vue 寫一次一摸一樣的東西,改計算未完成的待辦事項,Copilot 也是馬上幫我寫好,而且連typescript 的型別都幫我定義好了

AI 的建議到底準不準呢

根據官方的說法,AI 訓練資料的來源為在github上面公開的專案,他會分析大部分的人的寫法,並且給予建議。就我的使用上的體感來說,只要命名正確,Copilot給的建議大部分都是準的,只有極小部分有時候會出錯,或是他給的建議我不喜歡所以沒有採用

另外根據我的觀察,他也會分析本身專案的內容,依照專案的風格,給出符合專案風格的建議。例如像是我們團隊在寫前端專案的單元測試的時候,我們有規定每個測試都要分為三個步驟,分別是: arrangeactassert ,也就是安排環境變數、執行並且驗證測試結果。

基於上面三個步驟,我們在寫測試的時候,會寫上註解說明現在正在執行哪個步驟。

而 Copilot 很聰明地,在建議的時候,也會如法炮製,模仿專案風格自動加上這些註解,如果我沒說,其他人都以為這些測試是我自己寫的,不知道是 Copilot 自動幫我寫好的。

而這個寫法完全是正確的,我一個字都沒有修改,也正是我心裡想要的。

適合與不適合使用 github Copilot 的對象

不適合的對象

先說說不適合的對象,強烈不推薦初學者或是還在學習的人使用。或許有人覺得看到給的建議解答也能從中學習。但是我覺得就好像小時候在寫參考書直接翻到後面的解答頁面一樣。完全沒有思考過就得到一個很棒的答案不如自己慢慢寫,從錯誤中學習,即使方法再爛,都是自己的成長過程,才會真的記下來,才會有成長。

所以建議還在學習的人,不要使用這個,自己想絕對會比先看答案有效。

適合的對象

適合的對象就是每天靠寫程式工作、生活的人,使用之後,真的能省下很多時間。有時候還會從建議的寫法看到比自己原本心裡想的解法更好的辦法,也算是一種學習。

AI 會不會讓工程師失業呢

自從有了AI之後,就一直有AI未來將會取代某某行業,讓某某行業消失。現在也有了AI現在也會寫程式,讓工程師未來都會失業。如果要說,AI的確可以取代很多重複性質的工作,在這一方面AI的確可以做得比人類更快且還要更好。但是工程師的工作不只有寫程式。事實上寫程式的時間只佔工作時間很小的比例。大部分的時間都忙著協調、確認規格、規劃與發想,真的寫程式都是最後的步驟了。

所以未來不敢說,AI還很難讓工程師失業,反而可以讓工程師省下更多時間減少重複的工作,去專注在更有價值的生產力工作

此外,讓我想起以前在上形上學的時候,老師也提到AI會不會取代人類的問題,他說了一個很有趣的比喻,AI和人類的不同處在於,AI會蒐集過去的資料,分析比對之後,做出最佳的選擇,不會再犯第二次錯。而人類就算有歷史資料可以參考,總是不會從過去吸取錯誤,相似的歷史不斷在發生。經過計算之後,即使發現不可能成功,可能有去無回,還是會毅然決然地向前行,因為除了計算之外還有了情感。也就是因為這樣,電影才會令人感動,史詩才會令人歌頌。這個世界才會精采,這是AI無法取代的地方

--

--

Jason Z
jason-read-code

哲學系畢業的前端工程師,大部分時間都在搞鐵路系統,喜歡寫程式外,更喜歡鐵道,欣賞路上每個平凡的風景