Github 王炸功能!Copilot 替代打工人編程?
工作經(jīng)驗??大廠生活??精選好文
大家好,我是皮湯。最近組里在討論一個有意思的工具 Github Copilot,據(jù)說可以解放打工人,自動寫代碼!我當(dāng)時就覺得很好奇,所以研究了一番,分享給大家??!
相信所有的打工人在寫代碼的時候都會遇到很多問題,這些問題也許是自己從來不了解的,也許是了解一點但是還不熟悉的,也許是之前了解的但是忘記了。

遇到上面的問題,相比大部分人的第一想法是:Google 和百度了!

比如我想搜索如何使用 Twitter 提供的 API 獲取一些有意思的推文來開發(fā)我的應(yīng)用。
而更深入一點,第二個想法可能就是:查文檔了。

比如通過 Svelte 的文檔了解如何編寫一個簡單的組件。
但是有些文檔經(jīng)常寫的很冗長,且沒有提供搜索,如果只是想簡單找到某個 API 的用法就會很困難;而好一點的文檔可能提供比較方便的搜索功能,這樣可以或多或少減少解決問題的時間。

比如 Vue 的文檔,提供方便的搜索功能。
上述方法我們一直都在使用,但是問題就是需要頻繁切換,來回查找,一般人寫代碼的時候可能需要專注思考,如果頻繁在搜索引擎頁面、文檔頁面與代碼編輯器進行切換,就會打斷思路。

上述的場景很熟悉對吧??? 是不是本來就不大的桌面,還窗口滿天飛。

基于上述痛點,全球最大的同性交友網(wǎng)站 Github 發(fā)布了 Github Copilot!一個全新 AI 代碼助手,在編輯器中寫代碼或編寫注釋描述代碼時,自動為你生成接下來需要編寫代碼的提示,讓你無需再進行各種搜索、查文檔的操作,所有的操作都在編輯器里完成!
先來一個直觀的例子了解一下 Github Pilot 有多強大吧。

上述代碼中寫了一段注釋,描述要寫一個判斷函數(shù),使用 Web 服務(wù)獲取一段文本,判斷這段文本的感情是積極的還是消極的,然后引入了 fetch 函數(shù)用于抓取本文內(nèi)容,寫了函數(shù)名給定了輸入和返回值的類型,然后突然 Github Copilot 就把接下來可能要寫的代碼給生成好了!Amazing!

可以看到生成的代碼不是胡亂而沒有邏輯的,它使用了 fetch 去抓取對應(yīng)的鏈接,然后使用 await 處理異步請求,拿到結(jié)果之后通過結(jié)果中的內(nèi)容判斷是否文本所帶的感情是積極的,更棒的是它還能自己給出要抓取的鏈接,都不需要自己去盲目的搜索 ??,高效!
上述代碼如果需要一個工程師直接寫的話,可能首先得了解 fetch 的用法,然后將用法復(fù)制過來使用,接著去百度、Google 去找一下那些 API 服務(wù)可以使用,然后了解這個 API 服務(wù)的返回體長什么樣子,才能寫出上面的代碼。
好家伙,CV 工程師直接下崗,產(chǎn)品經(jīng)理也能寫代碼了。

除了上面根據(jù)注釋自動生成代碼外,其實 Github Copilot 還有很多有意思的功能,接下來我們就來一一了解一下。
特性
去掉復(fù)雜??
當(dāng)你在寫一些重復(fù)代碼時,Github Copilot 會自動為你填充接下來你可能要寫的代碼:

來點測試????♂?
一段健壯的代碼需要完善的測試,但是編寫單元測試有時候是冗長無味的,但是 Github Pilot 能帶給你一些不一樣的體驗,只需要導(dǎo)入你的單元測試包,然后它就會為你寫的代碼生成對應(yīng)的測試代碼:

畫個圖吧???
只要你導(dǎo)入對應(yīng)的包,然后給定合理的命名,Github Copilot 就能寫出接下來你可能想寫的代碼,比如導(dǎo)入 D3,然后寫一個 drawScatterplot 變量,就能生成如下代碼:

除了 JS、Python,還有更多???
得益于 Github 為全球最大的代碼庫,包含各種各樣最全面、最新鮮的代碼,Github Copilot 能夠支持各種語言的生成,如 JS、Python、Ruby、TypeScript、Go 等等。

成為 Tab 工程師???
上述我們知道 Github Copilot 可以根據(jù)注釋生成代碼、自動填充重復(fù)代碼、為你的代碼生成測試,基本解決了你在寫代碼時可能需要的各種需要打開多個窗口的問題,這些特性降低了新人學(xué)習(xí)編程的,以及了解一個庫了,想學(xué)習(xí)新的語言和庫的門檻。
但是有時候 Github Copilot 第一次生成的代碼并不是你想要的,這個時候它也為你提供了可選項,你可以通過 option+] (在 Windows 上是 Alt )選擇下一個,option+[ 選擇前一個,Tab 來接受 Github Pilot 為你推薦的代碼。

所以說,CV 工程師轉(zhuǎn)崗成為 Tab 工程師了???

從此鍵盤只有 Tab??。
我能使用???
答案是可以,但是不能馬上使用。

因為 Github Pilot 強大的背后是使用了非常昂貴的硬件設(shè)備作為支撐,所以消耗巨大,所以目前只開放給少部分人使用,用于了解用戶如何使用它以及探索如何規(guī)模化商用的模式。

但是根據(jù)我和我周圍同事的經(jīng)驗,基本只要申請了都能通過使用,但是從申請到通過還有一段時間,大概需要 1-2 天。
如何申請?
訪問 https://copilot.github.com/ ,點擊注冊:

然后關(guān)聯(lián)你的 Github 賬號,進行申請,最后會收到這樣的提示:

上面提示已經(jīng)加入等待列表,等待正式的郵件通知就可以使用了。
如果你已經(jīng)申請通過了,那么接下來就需要在編輯器里面下載對應(yīng)的插件,目前 Github Copilot 只支持 VSCode、JetBrains 編輯器、Neovim,后續(xù)將會支持更多的編輯器,所以如果你想體驗功能,那么你需要下載對應(yīng)的編輯器。我們以 VSCode 為例,打開編輯器在擴展里面搜索 Github Copilot,或訪問 https://marketplace.visualstudio.com/items?itemName=GitHub.copilot 鏈接下載:

安裝完之后,當(dāng)你新建一個文件或打開一個文件編輯時,編輯器右下角會提示 Github Copilot 需要請求 Github 登錄授權(quán):

你只需要點擊登錄,然后在打開的 Github 授權(quán)網(wǎng)站使用你剛剛申請 Github Copilot 的 Github 賬號登錄進行授權(quán)即可。
好了,大功告成!接下來你就可以使用你熟悉的語言開始寫代碼了,然后享受 Github Copilot 夢幻般的代碼提示吧!偷偷的告訴你,我身邊的同事用了都說好 ??。

背后的原理
相信很多小伙伴看到這里都會很好奇,Github Copilot 這么智能,背后是如何實現(xiàn)的呢?
其實 Github Copilot 基于 OpenAI 提供的 CodeX AI 模型,使用大量的開源代碼與互聯(lián)網(wǎng)上的自然語言進行訓(xùn)練,使得它能夠比其他代碼助手更加的智能,能夠從你當(dāng)前正在編輯的文件中理解代碼和自然語言(如注釋)的上下文,然后根據(jù)訓(xùn)練所學(xué)的知識,給出它認為最合理的幾個答案(代碼)。
Github Copilot 給出代碼提示的大致的過程如下:

簡單剖析一下就是:
先使用 OpenAI 的模型 CodeX 提取公網(wǎng)代碼與互聯(lián)網(wǎng)的文本為語料進行訓(xùn)練 然后使用 Github Copilot 作為服務(wù)提供層 接著用戶將插件下載到編輯器,在寫代碼時激活 Github Copilot 服務(wù),將代碼上下文發(fā)給 Github Copilot 服務(wù),然后獲取代碼建議 用戶可以選擇自己想要的代碼選項,或?qū)ι傻拇a進行修改以滿足自己的需求,而這些選擇和修改記錄也會發(fā)送給 Github Copilot 服務(wù),以幫助 AI 模型變得更加智能

你需要注意的??
Github Copilot 雖然很強大,但是在使用時也會有一些問題需要注意?????♀?。
Github Copilot 會取代程序員嗎?
不會,Github Copilot 主要的作用是輔助程序員編碼,減少一些冗余的手工勞動,專注于有意思問題的解決,讓程序員更具有生產(chǎn)力。
Github Copilot 生成的代碼具有知識產(chǎn)權(quán)嗎?
沒有,你可以把 Github Copilot 作為一個編譯器或者更加底層的東西,它給你提供建議,幫助你寫更好的代碼,最后的代碼所有權(quán)歸你自己所有。
我能將 Github Copilot 生成的代碼用于生產(chǎn)環(huán)境嗎?
可以,但是建議你對待這些代碼就像是你寫的一樣,對其進行嚴格的測試、代碼審查,因為用于訓(xùn)練 AI 模型的語料可能是過時的、有問題的,雖然 Github Copilot 會對其進行不斷的迭代并設(shè)置一些規(guī)則確保有問題的、過時的代碼不會生成,但是也很難完全保證這些規(guī)則能覆蓋所有的情況。
Github Copilot 會獲取我的私人數(shù)據(jù)?侵犯我的隱私嗎?
不會,Github Copilot 目前只會分析你編輯文件內(nèi)容的上下文,同時設(shè)定了嚴格的私人信息的過濾規(guī)則,如將私人郵箱數(shù)據(jù)替換成通用的郵箱格式 [email protected] 等,而不會分析你電腦上其他的數(shù)據(jù),同時在給你推薦生成的代碼時,也會對代碼進行嚴格的過濾。
同時上傳的內(nèi)容也只會保存到 Github Copilot 的數(shù)據(jù)庫,不會開放給其他人使用。

以上就是關(guān)于 Github 王炸產(chǎn)品 Github Copilot 的相關(guān)介紹了,你對這個產(chǎn)品怎么看呢?歡迎關(guān)注我的公眾號 「全棧前端精選」進群交流????!
