程序員用AI來寫AI代碼,「卷死」其他程序員?

用AI算法幫程序員寫AI算法?或許不少程序員「你已經是一個成熟的AI了,該學會自己補全代碼了」的心愿就要實現。

在今年6月份,GitHub與Open AI一同合作,推出了一款名為「GitHub Copilot」的AI工具,Copilot可以根據上下文自動補全代碼,包括文檔字符串、注釋、函數名稱、代碼,只要編程者給出一定提示,這款AI工具就可以補全出完整的函數。

GitHub Copilot官網
GitHub Copilot官網

令人震驚的是Copilot還在不斷進化。在近日舉行的GitHub Universe 2021開發者大會上,GitHub官方表示Copilot已開始支持Java、C、C++和C#等語言的多行代碼完成,並增加了Neovim和JetBrains IDE,包含開發者常用的IntelliJ IDEA、PyCharm等編輯器的支持。

Copilot運行範例;來源GitHub Copilot官網
Copilot運行範例;來源GitHub Copilot官網

GitHub表示,如今新寫的30%代碼都是在AI編程工具Copilot的幫助下完成的,Copilot真的如此強大嗎?在社交網絡中,已有不少早早拿到了Copilot試用資格的博主分享了他們使用Copilot的感受。

來源:微博截圖
來源:微博截圖

當然,除了認真寫Copilot使用體驗的博主,還有偷偷摸魚被抓個現着的程序員……

來源:微博截圖
來源:微博截圖

Copilot雖然強大,但就和大部分人工智能工具一樣,它仍是建立在OpenAI Codex算法的基礎上,需要通過海量的代碼來訓練其智能程度。這對同樣有着微軟血統的OpenAI以及Github來說不是問題,微軟在2018年斥資75億美元收購了全球約有5000萬用戶的代碼共享網站Github,這意味着Copilot所依託的Codex算法接受了數十億行公共代碼的訓練。

事實早在Copilot誕生之前,OpenAI就推出1750億參數的AI模型GPT-3,GPT-3耗費了千萬美元對人類的詩歌、小說、新聞等海量自然語言進行訓練(主要是英語),也因此GPT-3對自然語言具備了一定程度的理解能力。神經網絡之父Geoffrey Hinton在GPT-3出現后,曾這樣感慨:「生命、宇宙和萬物的答案,其實只是4.398萬億個參數而已。」

Codex就是基於GPT-3進行訓練,OpenAI 的聯合創始人兼首席技術官Greg Brockman曾表示Codex是 GPT-3 的後代。因此Codex也具備了將部分指令清晰的英語翻譯成代碼的能力,甚至有部分媒體宣傳Codex已經讓程序員門檻降低到了只要會英語就能寫代碼的地步。

在官方示例的Codex效果展示中,程序員只需要在編輯界面寫下「Make it be smallish」示例上圖中的大型飛船就會如下圖一般縮小,而在這個過程中程序員並不需要輸入一行代碼,Codex會自動編寫車程序。

如今,Codex經過無數代碼與金錢訓練出來的強大能力應用到了AI工具Copilot上,這雖然造就了Copilot神奇的代碼補全、給出函數建議等功能,但同時也使得Copilot陷入了系列輿論爭議風波。

當Copilot受到越來越多程序員的歡迎,GitHub的CEO Nat Friedman興奮地表示:「每天都有數百名GitHub的開發者在使用Copilot,如果預覽版進展順利的話,我們將計劃在未來某個時候將其擴展為付費產品。」

Nat Friedman的這番話讓Copilot一下沒那麼香了,這意味着經過GitHub和OpenAI的一波神操作后,收費的Copilot白嫖了全球最大的代碼共享網站GitHub5000萬用戶的知識成果用來商業化。這其中引起爭議的焦點就在於Copilot的版權存在開源代碼衍生品商業化GPL版權問題。GPL(General Public License)即通用公共許可證,是一系列自由軟件許可證的統稱,它可以用來保證用戶運行、研究、共享和修改軟件的自由。與此對應的是,任何複製、遷移GPL版權的衍生作品都必須遵循相同或等效的許可條款。

簡單來說就是,我是開源軟件、開源代碼你隨便用沒問題,但你只要用了就也得支持開源,其它任何人也可以免費使用你的代碼或軟件。Copilot引起GitHub社區人們公憤的關鍵就是其把開源代碼洗成商業產品,無視了早期促進程序語言世界豐富、開放的開源精神,已有不少程序員在社交媒體上公開表示未來將不再使用GitHub來託管自己的代碼。

GitHub官方則解釋Copilot「通常不會精確複製代碼塊」,也有人認為Copilot通過海量代碼AI訓練最後得出來的結果就如同人類一樣,人類前期也需要通過學習其他人的相關知識來內化成為自己的,很難把AI模型訓練出來的代碼簡單的理解為複製粘貼。

然而已有不少人否定了這個說法,在通過Copilot解決程序中的一些經典問題時,會發現Copilot幾乎一字不差的複製粘貼了GitHub上的某段經典代碼。這意味着在Copilot成為商業產品后,使用Copilot的用戶在把其代碼應用到自家產品時一不小心就會中招違反GPL協議,面臨被人起訴的風險,因此,已有一些科技公司已明確要求禁止員工使用Copilot。

Copilot在實際應用中面臨的問題不止如此,隨着程序員們對Copilot了解的逐步加深,他們發現Copilot並不完美,仍然存在着不少缺陷。Copilot背後的Codex既經過大量文本語言訓練,也吸收了網絡世界中魚龍混雜的海量代碼,因此Copilot輸出的部分代碼或許看出去沒有那麼美好,有着隱私泄露、安全風險等問題。B站大佬陳睿就躺槍了一次,雖然立刻有網友表示其中出生年月日信息有誤。

也有網友表示「Copilot 一時爽,調試火葬場」,因為想要清楚、清晰的描述出目標函數想要實現的功能並不簡單,同時在使用Copilot的過程中,需要不斷去回顧檢查AI生成的代碼是否正確,這反而容易干擾到編程時的原有思路。

來源:微博截圖
來源:微博截圖

目前,GitHub Copilot還處於未收取任何費用的申請試用階段,互聯網上關於它的爭論也還在繼續,隨着AI工具日益強大,人類將來面對的類似問題只會越來越多。


想在手機閱讀更多程式設計資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems