Skip to content

GitHub Copilot

2021/11/15

如題,這次要分享的是GitHub Copilot,簡單說就是 AI 會幫你寫程式!!!

Copilot 已於 8/22 開始收費了 QAQ
2022/8/23

看起來是只要給明確定義的 function 名稱,他就會自動幫你生成程式碼,有興趣的可以點上面連結去看詳細的介紹,比較可惜的是他現在還沒有完全開放給所有人使用,必須去申請排隊,然後等待通知,其實我也不知道會不會有,因為我根本還沒有收到信,所以等收到信之後考慮再來詳細寫一篇。
看到這應該很多人覺得我這篇是在寫心酸的,等等!先別急著關掉,下滑有驚喜啊!

雖然我沒有但是強者我主管有!
這篇要感謝哲仰大神,少數可以優先嚐鮮的人天選之人!
以下測試都是一中之光哲仰幫忙做的,感恩哲仰讚嘆哲仰!

一開始得先在 vs code 中裝這個套件,但是你得登入 github 才有辦法裝,所以我現在也還是裝不了。

JavaScript 測試

裝完後就可以開始來玩了,這邊哲仰先測試 JavaScript,看起來是只要打上 function 名稱,他就可以開始把剩下的程式碼補完。
首先我們打上getBlackStonesFromSgf如同字面上意思,目標就是要從 sgf 檔中取出黑棋。
直接上影片!

WTF!!!!簡直太狂了,他還會自己用loadSgfsgfToArray這兩個 function...
這兩個 function 就如同字面上的意思,一個是用來取出 sgf 的資訊、一個是用來把 sgf 棋子轉成 array 的形式。

他還判斷出了 X 就代表著黑棋,太神了...
就是let sgf = loadSgf(sgf)這邊有點錯誤就是了,不過因為我們也沒給 input,基本上他的邏輯都是對的,而且還知道要用什麼 function 來處理 sgf 檔,我的天,這真的嚇壞我了。

Python 測試

這邊測試的 code 承接上一篇旋轉棋盤,就是直接把上一篇的所有 function 都丟進去同個檔案中開始測試,大家可以開啟上一篇自己對比一下。
一開始就直接放大招,先把本來的rotate_move給刪掉,然後交給 copilot 來自己寫。

簡潔明瞭!太神了吧,我好慚愧,我怎麼可以這麼爛,慚愧到已經在想我可以轉行做什麼了。
但是此時哲仰發現不太對,因為其實我這個 function 應該要叫做rotate_moves,如果只是rotate_move不應該是這樣吧,而且他怎麼會知道我們是想要轉 90 度阿?

於是哲仰就換了一個名稱重新再試一次

等等...這根本是在抄我的 code 吧,寫得跟我一樣爛,我標記棋子使用 M 單純只是 move 的縮寫,毫無意義,他也用 M 這絕對是抄我的 code,copilot 你這個抄襲仔,要抄也不抄好一點的。
我的變數名稱都是隨心所欲流,只要自己看得懂就好,這點常常被哲仰嘴,跟我共事果然是很困擾呢 XDD,現在我都會先問過他,哲仰根本是取名專家。

再換一個名稱再試一次!

這次就很強了,雖然還是錯的,不是所有棋子都是黑棋啊,應該要一個 B 一個 W 才對,還是我的get_sgf_moves寫得太爛了?但是他居然自己判讀出了 sgf 的格式,然後把棋子拼裝回去,真的是有點厲害。

最後跟 js 一樣也來個取棋子吧,這次換取白棋。

簡潔明瞭,可惜是錯的,if x [0] == 0這邊應該是if x [0] == W才對,而且其實我的get_sgf_moves已經把 B 跟 W 還有中括弧給拿掉了,所以這樣改也是沒用的,但是他能寫成這樣我已經很驚訝了。

心得

整體來說邏輯上都沒有什麼大問題,真的很強,這邊是測試一些算是很少見的功能,copilot 居然還能生出有模有樣的 code 來,而且像是getWhiteMoves這樣寫他居然就能猜到意思,這真的是非常令我驚訝,看了一下介紹好像多寫一些註解的話效果還會更好的樣子,如果是很常見的邏輯或是演算法他都是輕輕鬆鬆搞定的,雖然應該都是抄別人的 code 來給你,但這樣讓你連 google 的時間都省下來了,他還會根據你整份 code 幫你寫好,需要修改的地方也不會太多,甚至可能直接就能用了,先不考慮資安問題,這讓我這個 cv 工程師(不要誤會,不是 computer vision,而是 ctrl+c、ctrl+v)情何以堪,未來最先被淘汰的貌似就是我了 QQ,他寫得又快又好,到底要我幹麻?感受到科技進步的同時,也感受到自己的不足,真的是既期待又害怕受傷害 XDD
感覺跟整份 code 的 function 命名跟數量多寡也是有點關係,如果是那種小功能都寫得很完善的檔案應該會更好用才對,未來我也可以裝的時候我再來寫一些玩具跟大家詳細分享吧~

回到目錄