Github Copilot 的優點和侷限性 - hrithwik

banq發表於2021-07-08

幾個月以來,我一直試圖在 GPT3 的幫助下生成程式碼,最近獲得了一個名為Github copilot 的更好產品。

Github Copilot 是一個 VS Code 擴充套件,它可以自動完成你的程式碼,還可以透過檢視你的註釋和函式名稱來合成程式碼。這是使用相同的模型構建的,並在數十億的公共程式碼上進行了訓練。
當我告訴我的朋友關於 Github Copilot 時,我得到的第一個問題是

它可以解決 DSA 問題並幫助我破解 FAANG xD 嗎?
這很有趣,但我想嘗試一下,結果令人興奮。AI 可以解決大部分 DSA 問題,我在這裡分享了一些結果 。
後來我嘗試在一些實際的開發工作中使用 github copilot,比如編寫電子郵件驗證,對 github 進行 api 呼叫,甚至構建一個簡單的電子郵件傳送客戶端。
現在我對Copilot擅長這個動作的侷限性和事情有了一些清晰的認識。
 

優點

  • 忘記語法?不用擔心。人工智慧支援你

在構建一個專案時,我忘記了傳送什麼響應的狀態程式碼,寫下關於它的評論給了我一個結果。此外,我寫了很長時間後的 python,有一次我忘記了slicing的語法,這也幫助了我。
  • 可以幫助您進行電子郵件驗證和 API 呼叫

生成 用於呼叫某些 API 的簡單函式並編寫一些正規表示式程式碼 而無需學習或依賴文件真的很容易。(初學者不推薦)。
  • 模板程式碼

它還可以幫助您獲得像 express 樣板程式碼一樣的東西,並且還幫助我編寫了一些 mongo 方案。

總的來說,我只是喜歡 Github Copilot 可以無縫地向您展示有關 vs 程式碼的建議。做得漂亮
 

缺點
用於第一代/測試版產品的 Github Copilot 太好了。但是網上有很多偏頗的文章,所以我也只是想展示另一面。

  • 不遵循最佳實踐

合成的程式碼並不總是遵循最佳實踐,或者沒有經過最佳化以將其用於後端開發。就像在 Javascript 中,它生成var和== 而不是const和===,這會導致不同的錯誤和陰影。
  • 版本衝突

某些生成的程式碼可能不適用於您的程式碼庫所在的版本,並可能導致衝突。此外,有時 AI 會發出很多不必要的程式碼。有經驗的開發者絕對可以解決這個問題,但是如果一個新手直接在 AI 的幫助下開始,他會花更多的時間在堆疊溢位上而不是編寫實際程式碼。
  • 奇怪的版權資訊

當我嘗試生成將連結串列轉換為樹的程式碼時,這就像一個著名的 DS 問題,我開始 AI 開始展示受版權保護的程式碼,它來自一個叫 Stephen 的人。
 

總結
如果您想建立諸如電子郵件驗證或使用者架構或 API 請求之類的功能,那就太好了,因為它有足夠的資料,但同樣,某些程式碼可能效率不高。它可以幫助您破解 DSA演算法問題?它可以幫助您根據需要提供積木。它會取代人類嗎?它是一個副駕駛,讓您的生活更輕鬆。您是能夠理解人類敘事和故事以從程式碼構建產品的飛行員。
在使用它編寫我的專案程式碼 2 個多小時後,我已經習慣了副駕駛,以至於沒有使用 github copilot 建議,我真的不知道我的程式碼接下來要寫什麼。我有點害怕,這是一個陷阱,使開發人員甚至懶惰。

相關文章