8

小試 Github Copilot

 2 years ago
source link: https://blog.darkthread.net/blog/github-copilot/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

小試 Github Copilot

2022-04-06 12:09 AM 0 4,426

這陣子接連看過 VS2022 的 IntelliCode 與 VSCode 外掛 Tabnine,都是靠 AI 幫忙你寫程式的好幫手。而這個領域名聲最響亮的,非 Github Copilot 莫屬。而 Github Copilot 3/29 剛發佈 VS2022 擴充套件,Github Copilot 目前在 Technical Preview 階段,要使用需提申請排隊等核准,現在幾乎是隨申請秒核准,談不上超級期待,我還是小試了一下。

Github Copilot 與 IntelliCode 與 Tabnine 不同,需依賴雲端服務運行,程式碼會送到雲端分析產生建議,對一些企業機構來說,可能會有產生資訊外流的疑慮。為此,在跳出同意授權時,這次我沒有「同意啦,哪次不同意」,特別讀了聲明:(大家有認真看過 Github Copilot 聲明嗎?)

歸納以下結論:

  • Github Copilot 會蒐集哪些資料? 目標在蒐集 Copilot 效能、使用功能、建議接受/拒絕/修改的狀況 ,作為日後改良優化的參考。蒐集內容將包含「程式檔片段」(source code snippets)、程式建議內容、開發者對建議的修改、Repository URL、檔案路徑,並會分享給 Github、微軟及 OpenAI 相關人員。所蒐集的資訊會視為機密資料,並限定相關人員才能存取,若要撤銷授權 Github 使用你的個人資訊可連絡 Github。
  • 蒐集的資料如何被保護以及使用? 加密後安全地儲放在 Github 系統裡,存取將被嚴格管控,以記名方式限定下列人員存取 1) Github Copilot 團隊及 Github 平台健康團隊的 Github 員工及僱員、2) Azure/Github Copliot 團隊的員工及僱員、3) 參與 Github Copliot 的 OpenAI 員工。

我覺得可以用 Gmail/Dropbox/Google Drive/One Drive/LINE 的角度看待。其中難免會有較機密內容,但我們仍視它們為安全的私密空間。如果是 Side Project 或開源專案,應該沒什麼好擔心;但對企業組織這又另當別論,大家就自行斟酌吧。

回到神奇海螺 Github Copilot 上,我在 VS2022 安裝並啟用了 Github Copilot,開啟專案簡單小試。

Copilot 跟 IntelliCode/Tabnine 最大的不同在於,它不需太多前後文程式碼,單憑註解就能猜出你想做什麼:

或是靠著 MVC Action 中有個 IFormFile 猜你是不是要讀取檔案:

提供建議時,一次一行,若修改為不同的寫法,後面能調整因應提供不同建議:

不過,偶爾會有出鎚的時侯,像是提示無法編譯的程式碼:

簡單試用後的感想,跟事前預期差不多,並沒有太興奮,不至跪著讚嘆「爽,以後動嘴就能寫程式了」或是憂心「慘了,飯碗要被 AI 搶走了」。

別誤會,Github Copilot 聰慧過人,大部分時間能依情境提供有效建議(從註解或函數宣告猜到你想寫的功能很神),遇到原來不會寫的程式可省下可觀 Google 爬文時間,能很快協助你生出可執行且結果正確的程式;即便心中已有定見,它的精準提示也能省掉打字時間。

但這跟我個人的習慣不一樣,遇到未知問題我喜歡花點時間找資料,找到可能解法,比較優劣及適用情境再決定用哪一種,過程還會接觸額外相關知識,增廣見識。寫程式全靠 AI 直接講答案,問題固然很快解掉,但也喪失了主動蒐集資料、廣泛了解議題、比較優劣、識別應用情境的練習機會,開發經驗與知識難以成長,不就活生生是被戲稱「不懂原理,只會從 Stackoverlow 複製貼上的軟體工程師」。若 AI 有一天真的會取代程式設計師的工作,最先失業的肯定是靠 AI 提詞才會寫 Code 的那一群。

因此我對 AI 輔助寫程式的期待,只要省去沒營養打字工夫就好,至於該用什麼 API、什麼方式實現,還是回歸人腦來主導,以系統化學習的知識為基礎,依專案環境條件琢磨拍板,才稱得上最佳化。無腦地讓 AI 抓著手一句一句寫完,不查資料,不看文件,感覺很不踏實。

如果要說善用 Gituhb Copilot,我不期待不動腦放手讓它幫忙寫完程式,但它跳出的程式建議代表「Github 上大家慣用的主流做法」,有滿滿關鍵字可用來尋找參考資料,深入探索議題,順便搞清楚易犯錯誤及適用情境,讓你加快知識累積。像是有個身經百戰但不如你了解專案環境的老司機,跟你一起 Pair Programming,他的建議字字珠璣,卻未必完全適合當下情境,但他身上絕對有你學不完的好東西。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK