GitHub Copilot === ###### tags: `coding` > [name=Marsgoat] [time= Nov 15, 2021] 如題,這次要分享的是[GitHub Copilot](https://copilot.github.com/),簡單說就是AI會幫你寫程式!!! > Copilot已於8/22開始收費了QAQ > [name=Marsgoat] [time= Aug 23, 2022] 看起來是只要給明確定義的function名稱,他就會自動幫你生成程式碼,有興趣的可以點上面連結去看詳細的介紹,比較可惜的是他現在還沒有完全開放給所有人使用,必須去申請排隊,然後等待通知,其實我也不知道會不會有,因為我根本還沒有收到信,所以等收到信之後考慮再來詳細寫一篇。 看到這應該很多人覺得我這篇是在寫心酸的,等等!先別急著關掉,下滑有驚喜啊! ![](https://i.imgur.com/RAnijuL.png) 雖然我沒有但是強者我主管有! 這篇要感謝哲仰大神,少數可以優先嚐鮮的人天選之人! 以下測試都是一中之光哲仰幫忙做的,感恩哲仰讚嘆哲仰! 一開始得先在vs code中裝這個套件,但是你得登入github才有辦法裝,所以我現在也還是裝不了。 ![](https://i.imgur.com/TGHjAnu.png) ## JavaScript測試 裝完後就可以開始來玩了,這邊哲仰先測試JavaScript,看起來是只要打上function名稱,他就可以開始把剩下的程式碼補完。 首先我們打上`getBlackStonesFromSgf`如同字面上意思,目標就是要從sgf檔中取出黑棋。 直接上影片! {%youtube 0XgUsWZYa1A %} WTF!!!!簡直太狂了,他還會自己用`loadSgf`跟`sgfToArray`這兩個function... 這兩個function就如同字面上的意思,一個是用來取出sgf的資訊、一個是用來把sgf棋子轉成array的形式。 ![](https://i.imgur.com/ogOCG7B.png) 他還判斷出了X就代表著黑棋,太神了... 就是`let sgf = loadSgf(sgf)`這邊有點錯誤就是了,不過因為我們也沒給input,基本上他的邏輯都是對的,而且還知道要用什麼function來處理sgf檔,我的天,這真的嚇壞我了。 ## python測試 這邊測試的code承接上一篇[旋轉棋盤](https://hackmd.io/@Marsgoat/rotate),就是直接把上一篇的所有function都丟進去同個檔案中開始測試,大家可以開啟上一篇自己對比一下。 一開始就直接放大招,先把本來的`rotate_move`給刪掉,然後交給copilot來自己寫。 ![](https://i.imgur.com/5FWZluF.png) 簡潔明瞭!太神了吧,我好慚愧,我怎麼可以這麼爛,慚愧到已經在想我可以轉行做什麼了。 但是此時哲仰發現不太對,因為其實我這個function應該要叫做`rotate_moves`,如果只是`rotate_move`不應該是這樣吧,而且他怎麼會知道我們是想要轉90度阿? 於是哲仰就換了一個名稱重新再試一次 ![](https://i.imgur.com/XhQJeeN.png) 等等...這根本是在抄我的code吧,寫得跟我一樣爛,我標記棋子使用M單純只是move的縮寫,毫無意義,他也用M這絕對是抄我的code,copilot你這個抄襲仔,要抄也不抄好一點的。 我的變數名稱都是隨心所欲流,只要自己看得懂就好,這點常常被哲仰嘴,跟我共事果然是很困擾呢XDD,現在我都會先問過他,哲仰根本是取名專家。 再換一個名稱再試一次! ![](https://i.imgur.com/ShRV155.png) 這次就很強了,雖然還是錯的,不是所有棋子都是黑棋啊,應該要一個B一個W才對,還是我的`get_sgf_moves`寫得太爛了?但是他居然自己判讀出了sgf的格式,然後把棋子拼裝回去,真的是有點厲害。 最後跟js一樣也來個取棋子吧,這次換取白棋。 ![](https://i.imgur.com/osrZjEb.png) 簡潔明瞭,可惜是錯的,`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命名跟數量多寡也是有點關係,如果是那種小功能都寫得很完善的檔案應該會更好用才對,未來我也可以裝的時候我再來寫一些玩具跟大家詳細分享吧~ [回小羊筆記首頁](https://hackmd.io/@Marsgoat/note)