Github 王炸功能!Copilot 替代打工人編程?

大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信?ruochuan12?參與,已進行三個月了,大家一起交流學習,共同進步。

大家好,我是皮湯。最近組里在討論一個有意思的工具 Github Copilot,據說可以解放打工人,自動寫代碼!我當時就覺得很好奇,所以研究了一番,分享給大家😋!

相信所有的打工人在寫代碼的時候都會遇到很多問題,這些問題也許是自己從來不了解的,也許是了解一點但是還不熟悉的,也許是之前了解的但是忘記了。

01a15f9c6503340b561f03b1d6fb2deb.png

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

667c0d8fa664e85e1e928bf0edccbba2.png

比如我想搜索如何使用 Twitter 提供的 API 獲取一些有意思的推文來開發我的應用。

而更深入一點,第二個想法可能就是:查文檔了。

bace5186db16442f54aa65c55a4744f8.png

比如通過 Svelte 的文檔了解如何編寫一個簡單的組件。

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

25b36c1930402ab63e57b533493aaed7.png

比如 Vue 的文檔,提供方便的搜索功能。

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

e1f64b40719051144b1847519c3e173b.png

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

db63ebe2297664074bdb42bbeda91ace.png

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

先來一個直觀的例子了解一下 Github Pilot 有多強大吧。

def7b9559561e4953e36985227fcfd99.gif

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

734dd316a3e429b47f21fcd8262b4a16.png

可以看到生成的代碼不是胡亂而沒有邏輯的,它使用了 fetch 去抓取對應的鏈接,然后使用 await 處理異步請求,拿到結果之后通過結果中的內容判斷是否文本所帶的感情是積極的,更棒的是它還能自己給出要抓取的鏈接,都不需要自己去盲目的搜索 🧐,高效!

上述代碼如果需要一個工程師直接寫的話,可能首先得了解 fetch 的用法,然后將用法復制過來使用,接著去百度、Google 去找一下那些 API 服務可以使用,然后了解這個 API 服務的返回體長什么樣子,才能寫出上面的代碼。

好家伙,CV 工程師直接下崗,產品經理也能寫代碼了。

54bc5533793c8944006726d85eb40d5a.png

除了上面根據注釋自動生成代碼外,其實 Github Copilot 還有很多有意思的功能,接下來我們就來一一了解一下。

特性

去掉復雜🌟

當你在寫一些重復代碼時,Github Copilot 會自動為你填充接下來你可能要寫的代碼:

d1df8759125a0c2a7a1f78ced23c1507.gif

來點測試🏋??♂?

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

c32e598a6030bd4b92974a6d2156b16f.gif

畫個圖吧🌈?

只要你導入對應的包,然后給定合理的命名,Github Copilot 就能寫出接下來你可能想寫的代碼,比如導入 D3,然后寫一個 drawScatterplot 變量,就能生成如下代碼:

34fa082aa408bce61b012cdec3823c3a.gif

除了 JS、Python,還有更多?🎉

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

f208d915976ba54f01a96fe11add2387.gif

成為 Tab 工程師?😼

上述我們知道 Github Copilot 可以根據注釋生成代碼、自動填充重復代碼、為你的代碼生成測試,基本解決了你在寫代碼時可能需要的各種需要打開多個窗口的問題,這些特性降低了新人學習編程的,以及了解一個庫了,想學習新的語言和庫的門檻。

但是有時候 Github Copilot 第一次生成的代碼并不是你想要的,這個時候它也為你提供了可選項,你可以通過 option+] (在 Windows 上是 Alt )選擇下一個,option+[ 選擇前一個,Tab 來接受 Github Pilot 為你推薦的代碼。

98ecf68743935be210fec110d3fa4e08.gif

所以說,CV 工程師轉崗成為 Tab 工程師了🐴?

3ecb39cbdab87776da7e8ab75bae8e41.png

從此鍵盤只有 Tab🌚。

我能使用🐴?

答案是可以,但是不能馬上使用。

300213515a236e093820d467674d7b6e.png

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

8ed8af9ee8c901ec3480506b24406ae1.png

但是根據我和我周圍同事的經驗,基本只要申請了都能通過使用,但是從申請到通過還有一段時間,大概需要 1-2 天。

如何申請?

訪問 https://copilot.github.com/ ,點擊注冊:

cb7b21394195f01b8daf3108ed34d05c.png

然后關聯你的 Github 賬號,進行申請,最后會收到這樣的提示:

8b9ea4ec38e68aec3ab89c092ffa3240.png

上面提示已經加入等待列表,等待正式的郵件通知就可以使用了。

如果你已經申請通過了,那么接下來就需要在編輯器里面下載對應的插件,目前 Github Copilot 只支持 VSCode、JetBrains 編輯器、Neovim,后續將會支持更多的編輯器,所以如果你想體驗功能,那么你需要下載對應的編輯器。我們以 VSCode 為例,打開編輯器在擴展里面搜索 Github Copilot,或訪問 https://marketplace.visualstudio.com/items?itemName=GitHub.copilot 鏈接下載:

be3547298ee467aac3a7c29a72117cad.png

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

e8726e5fc6a7fb4a45a962e100d06aab.png

你只需要點擊登錄,然后在打開的 Github 授權網站使用你剛剛申請 Github Copilot 的 Github 賬號登錄進行授權即可。

好了,大功告成!接下來你就可以使用你熟悉的語言開始寫代碼了,然后享受 Github Copilot 夢幻般的代碼提示吧!偷偷的告訴你,我身邊的同事用了都說好 🤪。

d2f4879dd8578d8f06de270aa27a035f.png

背后的原理

相信很多小伙伴看到這里都會很好奇,Github Copilot 這么智能,背后是如何實現的呢?

其實 Github Copilot 基于 OpenAI 提供的 CodeX AI 模型,使用大量的開源代碼與互聯網上的自然語言進行訓練,使得它能夠比其他代碼助手更加的智能,能夠從你當前正在編輯的文件中理解代碼和自然語言(如注釋)的上下文,然后根據訓練所學的知識,給出它認為最合理的幾個答案(代碼)。

Github Copilot 給出代碼提示的大致的過程如下:

0325e4b4fd159becd74121dfda754a91.png

簡單剖析一下就是:

  1. 先使用 OpenAI 的模型 CodeX 提取公網代碼與互聯網的文本為語料進行訓練

  2. 然后使用 Github Copilot 作為服務提供層

  3. 接著用戶將插件下載到編輯器,在寫代碼時激活 Github Copilot 服務,將代碼上下文發給 Github Copilot 服務,然后獲取代碼建議

  4. 用戶可以選擇自己想要的代碼選項,或對生成的代碼進行修改以滿足自己的需求,而這些選擇和修改記錄也會發送給 Github Copilot 服務,以幫助 AI 模型變得更加智能

b639343d79969967a564886815750bda.png

你需要注意的📢

Github Copilot 雖然很強大,但是在使用時也會有一些問題需要注意🙋🏻?♀?。

Github Copilot 會取代程序員嗎?

不會,Github Copilot 主要的作用是輔助程序員編碼,減少一些冗余的手工勞動,專注于有意思問題的解決,讓程序員更具有生產力。

Github Copilot 生成的代碼具有知識產權嗎?

沒有,你可以把 Github Copilot 作為一個編譯器或者更加底層的東西,它給你提供建議,幫助你寫更好的代碼,最后的代碼所有權歸你自己所有。

我能將 Github Copilot 生成的代碼用于生產環境嗎?

可以,但是建議你對待這些代碼就像是你寫的一樣,對其進行嚴格的測試、代碼審查,因為用于訓練 AI 模型的語料可能是過時的、有問題的,雖然 Github Copilot 會對其進行不斷的迭代并設置一些規則確保有問題的、過時的代碼不會生成,但是也很難完全保證這些規則能覆蓋所有的情況。

Github Copilot 會獲取我的私人數據?侵犯我的隱私嗎?

不會,Github Copilot 目前只會分析你編輯文件內容的上下文,同時設定了嚴格的私人信息的過濾規則,如將私人郵箱數據替換成通用的郵箱格式 xxxxx@qq.com 等,而不會分析你電腦上其他的數據,同時在給你推薦生成的代碼時,也會對代碼進行嚴格的過濾。

同時上傳的內容也只會保存到 Github Copilot 的數據庫,不會開放給其他人使用。

e0f989b53a150ae39fbd05b3bf6758f3.png

以上就是關于 Github 王炸產品 Github Copilot 的相關介紹了,你對這個產品怎么看呢?


最近組建了一個江西人的前端交流群,如果你是江西人可以加我微信?ruochuan12?私信 江西?拉你進群。

推薦閱讀

1個月,200+人,一起讀了4周源碼
我歷時3年才寫了10余篇源碼文章,但收獲了100w+閱讀

老姚淺談:怎么學JavaScript?

我在阿里招前端,該怎么幫你(可進面試群)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275246.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275246.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275246.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ux和ui_糟糕的UI與UX番茄醬模因

ux和uiAt face value, this meme appears to be a quick and easy tool for educating the general public about what the differences are between UI and UX. You might look at the attractive glass bottle labeled “UI” and understand that UI might have to do more …

Linux中的wheel用戶組是什么?

在Linux中wheel組就類似于一個管理員的組。 通常在Linux下,即使我們有系統管理員root的權限,也不推薦用root用戶登錄。一般情況下用普通用戶登錄就可以了,在需要root權限執行一些操作時,再su登錄成為root用戶。但是,任…

ElementUI 組件庫 md-loader 的解析和優化

大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信 ruochuan12 參與,已進行三個月了,大家一起交流學習,共同進步。背景相信很多同學在學習 webpack 的時候,對 loader 的概念應該有所了解&…

一個html5流星雨源碼

流星會隨著鼠標的方向劃過&#xff0c;按緊鼠標左鍵可以增長流星的尾巴。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang"zh-CN"> <head> <title>流星雨<…

csdn 用戶 螞蟻翹大象_用戶界面設計師房間里的大象

csdn 用戶 螞蟻翹大象Once upon a time, an educated eye detected a new trend in UI designs, particularly, in Dribbble. It was a conceptual proposition, not an actual design for a customer or an app. Trying to explain the characteristics of this new trend, a …

面試官問發布訂閱模式是在問什么?

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12 參與&#xff0c;已進行了三個多月&#xff0c;大家一起交流學習&#xff0c;共同進步。本文來自 simonezhou 小姐姐投稿的第八期筆記。面試官常問發布訂閱、觀察者模式&#…

linux服務器內存、根目錄使用率、某進程的監控告警腳本

腳本內容如下 #!/bin/bash#磁盤超過百分之80發送郵件告警DISK_USEDdf -T |sed -n "2p" |awk {print ($4/$3)*100}DISK_percentage80if [ expr "$DISK_USED > $DISK_percentage" ]thenecho "$HOSTNAME服務器當前硬盤使用率為$DISK_USED%" | ma…

figma下載_不用擔心Figma中的間距

figma下載重點 (Top highlight)I spend way too much time caring about spacing when designing interfaces and building design systems. You are probably no stranger to the constant 1 px and 8 px nudging, continuous checking of the bottom or in-between space for…

【建議收藏】面試官賊喜歡問的 32+ vue 修飾符,你掌握幾種啦?

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12 參與&#xff0c;已進行了三個多月&#xff0c;大家一起交流學習&#xff0c;共同進步。前言vue簡潔好用體現在很多個地方&#xff0c;比如其內置了32修飾符&#xff0c;可以很…

知識管理系統Data Solution研發日記之一 場景設計與需求列出

在平時開發的過程中&#xff0c;經常會查找一些資料&#xff0c;從網上下載一些網頁&#xff0c;壓縮格式文件到自己的電腦中&#xff0c;然后閱讀。程序有別于其他行業的一個特征是&#xff0c;所有的資料&#xff0c;數據&#xff0c;壓縮文件&#xff0c;只用于產生可以工作…

系列TCP/IP協議-動態IP選路協議(008)

一、引言 前一章已經說過了IP數據包是如何分發的。為啥這一章還要說這個問題&#xff1f;在網絡很小、只有單個連接點、沒有多余的路由的時候&#xff0c;使用靜態選路是可以的。但是一旦網絡變大一點就會出現各種問題。在大網絡中的網絡選路將在該節說明。 ??動態選路協議用…

shields 徽標_我們如何準確地記住著名徽標的特征和顏色?

shields 徽標The logos of global corporations like Apple, Starbucks, Adidas, and IKEA are designed to create instant brand associations in the minds of billions who see them every day. But how accurately can we remember the features and colors of these famo…

面了三次字節,他的一些感悟

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12 參與&#xff0c;已進行了三個多月&#xff0c;大家一起交流學習&#xff0c;共同進步。今天分享一篇小K投稿的字節面試記錄&#xff0c;這是他第三次面字節了&#xff0c;之前…

JavaScript數組內置排序函數

javascript內置的sort函數是多種排序算法的集合 JavaScript實現多維數組、對象數組排序&#xff0c;其實用的就是原生的sort()方法&#xff0c;用于對數組的元素進行排序。 sort() 方法用于對數組的元素進行排序。語法如下&#xff1a; ArrayObject.sort(order); 測試A&#xf…

解決Wireshark安裝Npcap組件失敗

2019獨角獸企業重金招聘Python工程師標準>>> 解決Wireshark安裝Npcap組件失敗 從Wireshark 3.0開始&#xff0c;Npcap取代Winpcap組件&#xff0c;成為Wireshark默認的網卡核心驅動。由于該組件屬于驅動程序&#xff0c;所以安裝時候容易被殺毒/防火墻軟件攔截&…

adobe清理工具_Adobe終于通過其新的漸變工具實現了這一點-UX評論

adobe清理工具的Photoshop (Photoshop) UX:用戶體驗&#xff1a; At first glance, the UX looks okay; it’s pretty clear. The user gets to know how to use this tool right away. The color palette is located above, and the gradient down below. The diamond betwee…

GMF學習系列(二) 一些知識點(續2)

8.插件的國際化&#xff0c;可以參考nwpu.cdcsp.sbpel.diagram.part中messages.java的做法。 9.Text自動提示功能 import org.eclipse.jface.bindings.keys.KeyStroke; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.fieldassist.AutoCompleteField; im…

新手向:前端程序員必學基本技能——調試JS代碼

1前言大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12 參與&#xff0c;已進行三個月了&#xff0c;大家一起交流學習&#xff0c;共同進步。想學源碼&#xff0c;極力推薦之前我寫的《學習源碼整體架構系列》 包含jQuery、un…

iOS開發ApplePay的介紹與實現

1、Apple Pay的介紹 Apple Pay官方1.1 Apple Pay概念 Apple Pay&#xff0c;簡單來說, 就是一種移動支付方式。通過Touch ID/ Passcode&#xff0c;用戶可使用存儲在iPhone 6, 6p等之后的新設備上的信用卡和借記卡支付證書來授權支付&#xff1b; 它是蘋果公司在2014蘋果秋季新…

mes建設指南_給予和接受建設性批評的設計師指南

mes建設指南Constructive criticism, or more plainly, feedback, plays a crucial role in a designer’s job. Design is an iterative process, so we are often either asking for feedback on our own work or dishing it out to a fellow designer.建設性的批評&#xff…