在過(guò)去的十五年中,GitHub 已經(jīng)成為編程領(lǐng)域中不可或缺的一部分。這個(gè)平臺(tái)于 2007 年推出,現(xiàn)在已經(jīng)有超過(guò) 1 億名開(kāi)發(fā)者使用它來(lái)進(jìn)行協(xié)作、跟蹤代碼變更和存儲(chǔ)代碼。
在 2018 年被微軟以 75 億美元收購(gòu)后,GitHub 正逐漸贏得另一個(gè)榮譽(yù):徹底改變編程方式。推動(dòng)這一變革的是一個(gè)名為 Copilot 的 AI 工具,它可以像 OpenAI 的 ChatGPT 生成十四行詩(shī)一樣輕松生成代碼。(實(shí)際上,Copilot 是由 OpenAI 的 Codex 驅(qū)動(dòng)的,Codex 是一個(gè)基于從互聯(lián)網(wǎng)上獲取的代碼進(jìn)行訓(xùn)練的大語(yǔ)言模型。)
通過(guò)簡(jiǎn)單地按下 Tab 鍵,使用 Copilot 的開(kāi)發(fā)者可以自動(dòng)完成一行代碼、生成代碼塊,甚至編寫(xiě)整個(gè)程序。據(jù) GitHub 表示,已經(jīng)有超過(guò) 1 萬(wàn)家公司(包括可口可樂(lè)、Airbnb 等公司)注冊(cè)了 Copilot 的企業(yè)版,而微軟自身有超過(guò) 3 萬(wàn)名員工定期使用 Copilot 來(lái)輔助編程。
最近,F(xiàn)reethink 采訪(fǎng)了 GitHub CEO Thomas Dohmke,以詳細(xì)了解 Copilot 將如何改變編程,以及基于 AI 開(kāi)發(fā)引發(fā)的關(guān)于創(chuàng)新的問(wèn)題。還談到了為什么用 Copilot 編程是如此有趣,AI 將如何改變我們的學(xué)習(xí)方式,以及 Copilot 是否能解決那些仍在主機(jī)上運(yùn)行 COBOL 的銀行的問(wèn)題。
下面內(nèi)容是采訪(fǎng)精簡(jiǎn)版。
Freethink:你認(rèn)為在編程的性質(zhì)方面會(huì)出現(xiàn)哪些變化?軟件開(kāi)發(fā)是否仍然會(huì)是專(zhuān)業(yè)的領(lǐng)域?或者你是否認(rèn)為基于 AI 的無(wú)代碼開(kāi)發(fā)將變得更加普遍,以至于作為軟件工程師的定義會(huì)有所不同?
Thomas Dohmke:我認(rèn)為系統(tǒng)思維 —— 理解軟件的復(fù)雜性并將一個(gè)大問(wèn)題、挑戰(zhàn)或新特性分解為小問(wèn)題 —— 將起到越來(lái)越重要的作用。
我們從打孔卡發(fā)展到了幾百行、幾千行、甚至可能是數(shù)萬(wàn)行乃至數(shù)十萬(wàn)行代碼。因此,作為開(kāi)發(fā)者,我們需要能夠管理這些解決大型復(fù)雜問(wèn)題的龐大系統(tǒng)。你需要將它們拆分成小的構(gòu)建模塊。
開(kāi)發(fā)者的技能將在于找出 “我需要拆分到什么程度,才能利用 AI 為我合成代碼?” 至少在可預(yù)見(jiàn)的未來(lái),我們?nèi)匀恍枰獙彶樗性创a,了解其功能,并進(jìn)行安全審查、合規(guī)審查,以查看是否存在代碼注入等問(wèn)題,即有人試圖向代碼庫(kù)注入有害代碼。
開(kāi)發(fā)者仍然是專(zhuān)家,他們了解代碼并判斷 AI 合成的代碼是否真正符合開(kāi)發(fā)者的意圖。在未來(lái)的十年里,這可能會(huì)發(fā)生轉(zhuǎn)變 —— 我們自己編寫(xiě)的代碼與合成代碼的比例會(huì)有多大。但我不認(rèn)為我們離一切都是無(wú)代碼開(kāi)發(fā)的階段已經(jīng)很接近了。
Freethink:因?yàn)橛辛?Copilot,你觀察到程序員的日常工作方式發(fā)生了哪些變化?
Dohmke:如今,程序員實(shí)際上并不會(huì)花太多時(shí)間來(lái)編寫(xiě)代碼 —— 他們每天編寫(xiě)代碼的時(shí)間通常只有兩到四個(gè)小時(shí)。其余的時(shí)間他們會(huì)進(jìn)行其他工作,比如參加站立會(huì)議、查看崩潰報(bào)告(或者也許是應(yīng)用商店的評(píng)論中有用戶(hù)反饋最新版本出現(xiàn)了問(wèn)題,而你甚至無(wú)法復(fù)現(xiàn)這個(gè)錯(cuò)誤)。
有了 Copilot,如果你每天只有兩到四個(gè)小時(shí)用于寫(xiě)代碼,你可以更好地利用這段時(shí)間。你可以將這段時(shí)間用于保持專(zhuān)注、完成工作并享受其中的樂(lè)趣。
雖然分心的事情并沒(méi)有減少 —— 無(wú)論是 Slack、Twitter、手機(jī)還是 WhatsApp 消息,這些都不會(huì)消失。但是你可以更好地利用創(chuàng)造性的時(shí)間,將注意力集中在問(wèn)題上。因?yàn)槿绻悴恍枰l繁地從編輯器切換到其他內(nèi)容,你也會(huì)減少分心的觸發(fā)因素。因此,我們觀察到人們更能保持專(zhuān)注。
Freethink:你自己在寫(xiě)代碼的過(guò)程中發(fā)生了什么變化?我不知道你現(xiàn)在能夠投入多少時(shí)間來(lái)寫(xiě)代碼,但我非常想知道由于出現(xiàn)了 Copilot,你自己寫(xiě)代碼過(guò)程有什么變化。
Dohmke:對(duì)我來(lái)說(shuō),大部分是一些業(yè)余項(xiàng)目。但我首先想到的是:Copilot 帶回了樂(lè)趣。通常情況下,會(huì)有很多干擾和其他事情需要處理。周末 —— 我們遠(yuǎn)離工作的時(shí)間 —— 在某種程度上是一個(gè)關(guān)于注意力持續(xù)時(shí)間的競(jìng)爭(zhēng):你是想出去散步呢?還是想組裝一些樂(lè)高積木?還是想寫(xiě)代碼?
當(dāng)我有一個(gè)小時(shí)用于寫(xiě)代碼時(shí),Copilot 帶回了樂(lè)趣,帶回了創(chuàng)造力。它恢復(fù)了流暢感,因?yàn)槟悴槐夭粩嘣诰庉嬈鳌g覽器、搜索引擎以及像 Stack Overflow 或 GitHub 這樣的工具之間切換,去尋找那三行代碼 —— 我不知道,可能是為了讓你正在構(gòu)建的 iPhone 應(yīng)用程序擁有圓角。
因此,我認(rèn)為它帶回了那種 “我正在構(gòu)建自己的重大創(chuàng)意” 的感覺(jué),那種感覺(jué)會(huì)在我有一個(gè)小時(shí)或兩個(gè)小時(shí)的周日早晨時(shí)出現(xiàn),此時(shí)其他事情還沒(méi)有優(yōu)先權(quán)。
Freethink:如果你在創(chuàng)建你的第一家初創(chuàng)公司時(shí)有像 Copilot 這樣的工具可供使用,你認(rèn)為你作為創(chuàng)始人的經(jīng)驗(yàn)會(huì)有何不同?
Dohmke:我認(rèn)為這將讓我的生活變得更輕松。作為一家小型初創(chuàng)公司的創(chuàng)始人,你必須快速行動(dòng),因?yàn)檫@是生存的唯一途徑。因此,如果有一種工具可以幫助你保持工作流程,讓你快速創(chuàng)建原型、預(yù)覽產(chǎn)品,并最終找到產(chǎn)品市場(chǎng)適配點(diǎn),那將極大地增強(qiáng)你的能力。
我與許多初創(chuàng)公司進(jìn)行過(guò)交流,我也是幾個(gè)初創(chuàng)公司的天使投資人,他們都在使用 Copilot,因?yàn)樗麄兠靼?,即使只是提?20-25% 的生產(chǎn)力,也可能決定他們的生存。
Freethink:我很好奇你收集了哪些數(shù)據(jù) —— 無(wú)論是軼事還是更正式的 —— 關(guān)于 Copilot 如何改變 GitHub 和微軟自己的程序員的工作方式。
Dohmke:我們?cè)?2020 年 8 月開(kāi)始研發(fā) Copilot,然后在 2021 年初向約 250 名 GitHub 員工或 “Hubbers” 首次提供了內(nèi)部預(yù)覽版本,得到的反饋令人震驚。人們非常興奮,他們告訴我們,他們?cè)僖矡o(wú)法在沒(méi)有 Copilot 的情況下寫(xiě)代碼了。
我們測(cè)量了凈推薦值(Net Promoter Score,NPS)[注:用戶(hù)滿(mǎn)意度的一種衡量指標(biāo)],范圍從 - 100 到 + 100。在我們的 250 名測(cè)試人員中,得到的結(jié)果是 + 73。我們從未在對(duì)開(kāi)發(fā)環(huán)境進(jìn)行的其他任何更改中看到過(guò)這樣的數(shù)字。通常情況下,開(kāi)發(fā)人員會(huì)說(shuō):“別動(dòng)我的系統(tǒng),我知道自己在做什么,Thomas,為什么要引入新工具呢?”
我們團(tuán)隊(duì)收到了極為積極的反饋,而且初期使用 Copilot 的人數(shù)保持得非常高,這個(gè)留存率比我們開(kāi)發(fā)的其他任何產(chǎn)品都要高。通常情況下,當(dāng)我們?cè)诠緝?nèi)部推出一個(gè)新功能時(shí),每個(gè)人在第一天都很興奮,但到了第三天,大家就又回到了之前的習(xí)慣。但對(duì)于 Copilot,無(wú)論是在 GitHub 內(nèi)部、微軟內(nèi)部還是我們的客戶(hù)中,我們都沒(méi)有看到這種情況發(fā)生。
Freethink:你是否有關(guān)于在 GitHub 上更廣泛的開(kāi)發(fā)者社區(qū)如何使用 Copilot,以及它對(duì)他們的生產(chǎn)力產(chǎn)生了什么影響的具體數(shù)據(jù)或數(shù)字?
Dohmke:當(dāng)用戶(hù)使用 Copilot 時(shí),我們會(huì)追蹤他們按下 Tab 鍵的頻率以及在文件中由 Copilot 編寫(xiě)的代碼量。目前這個(gè)數(shù)字的平均值是 46%—— 在啟用 Copilot 的文件中,平均約有一半的代碼是由 Copilot 編寫(xiě)的。僅僅這一事實(shí)就令人難以置信。
我們?nèi)昵伴_(kāi)始開(kāi)發(fā) Copilot,推出預(yù)覽版的時(shí)間已經(jīng)接近兩年了。自從推出以來(lái),這個(gè)數(shù)字一直穩(wěn)步上升。很快,80% 的代碼將由 Copilot 編寫(xiě)。但這并不意味著,正如我們之前討論的那樣,開(kāi)發(fā)人員將被取代。這意味著開(kāi)發(fā)人員有更多的時(shí)間來(lái)專(zhuān)注于他們自己編寫(xiě)的那 20% 的代碼。
當(dāng)你使用 Copilot 時(shí),你的編程風(fēng)格會(huì)發(fā)生變化,因?yàn)槟銜?huì)更加明確。你會(huì)編寫(xiě)代碼注釋?zhuān)赡苓€會(huì)提供一些示例。當(dāng)你編寫(xiě)一個(gè)帶有輸入和輸出的函數(shù)時(shí),通過(guò)提供示例輸入和輸出,Copilot 會(huì) “理解” 你想要做什么,并將其作為額外的上下文來(lái)生成代碼。
實(shí)際上,我們從對(duì) 2,000 名開(kāi)發(fā)人員進(jìn)行的定量調(diào)查中了解到了他們對(duì)使用 Copilot 的感受。其中 75% 的開(kāi)發(fā)者表示他們感到更加滿(mǎn)足。他們告訴我們,使用 Copilot 在完成工作時(shí)需要的心智負(fù)擔(dān)更小。他們?cè)诰帉?xiě)作為開(kāi)發(fā)者常常必須完成的樣板代碼上花費(fèi)的時(shí)間更少。
我們還進(jìn)行了一項(xiàng)定性研究,其中我們讓 50 名開(kāi)發(fā)者使用 Copilot,同時(shí)有大約 50 名沒(méi)有使用 Copilot 的開(kāi)發(fā)者作為對(duì)照組,然后要求他們構(gòu)建一個(gè) Web 服務(wù)器。使用 Copilot 的組別比對(duì)照組快了 55%,這將改變整個(gè)行業(yè)。
不僅速度更快,他們還具有更高的成功率:78% 對(duì)比 70%。
Freethink:Copilot 對(duì)未來(lái)程序員的開(kāi)發(fā)將產(chǎn)生什么影響?在學(xué)習(xí)編程的過(guò)程中存在一種緊張感,一方面我們對(duì)某些看似簡(jiǎn)單的事情感到沮喪,但通過(guò)反復(fù)實(shí)踐,最終可以更深入地理解整個(gè)過(guò)程。我很好奇像 Copilot 這樣的工具對(duì)于正在學(xué)習(xí)冒泡排序的高中生會(huì)有什么影響,他們只需按下 Tab 鍵,代碼就會(huì)自動(dòng)生成,而無(wú)需從頭開(kāi)始編寫(xiě)。
Dohmke:我認(rèn)為我們的學(xué)習(xí)方式將發(fā)生徹底改變,學(xué)校教育方式也將發(fā)生巨大變革。
我們將更少關(guān)注記憶具體知識(shí),如 1845 年的總統(tǒng)是誰(shuí),而更多關(guān)注學(xué)習(xí)方法。教師將扮演更像是教練的角色,幫助學(xué)生以自己的步調(diào)和方式利用技術(shù)探索各種主題。對(duì)于軟件開(kāi)發(fā)方面的孩子們來(lái)說(shuō),這將帶來(lái)極大的便利。
在美國(guó),我們很容易忽略一點(diǎn),即編程中最常用的語(yǔ)言是英語(yǔ)。在美國(guó)成長(zhǎng)的孩子可能比在巴西、中國(guó)或德國(guó)成長(zhǎng)的孩子更容易理解英語(yǔ)。這對(duì)孩子們來(lái)說(shuō)將是一種解放,因?yàn)樗麄兛梢杂米约旱哪刚Z(yǔ)向像 Copilot 這樣的 AI 助手提問(wèn)。Copilot 能夠理解多種語(yǔ)言,并將代碼合成為學(xué)生正在學(xué)習(xí)的編程語(yǔ)言,這樣學(xué)生就能用自己的語(yǔ)言進(jìn)行交流和提問(wèn)。
我認(rèn)為知識(shí)的重要性將減弱,而理解思維、探索內(nèi)容的能力將變得更為關(guān)鍵。教師將與學(xué)生合作培養(yǎng)這些能力。學(xué)生們需要判斷 AI 提供的答案是否確實(shí)適用于他們解決的問(wèn)題,而不是僅僅接受模型生成的結(jié)果。
Freethink:在我看來(lái),無(wú)論你選擇的是醫(yī)學(xué)還是計(jì)算機(jī)科學(xué),要進(jìn)行高級(jí)推理,你都必須具備一定的內(nèi)容知識(shí)。
Dohmke:如果你使用 Copilot,你會(huì)相對(duì)快速地發(fā)現(xiàn)你仍然需要具備這個(gè)基礎(chǔ)知識(shí),無(wú)法繞過(guò)它。你可以向 ChatGPT 或 Copilot 提問(wèn) “如何構(gòu)建 GitHub”,它會(huì)給出一個(gè)非常抽象的答案。
你必須具備能力去思考:“好的,現(xiàn)在我該如何將這個(gè)非常龐大的問(wèn)題分解成小問(wèn)題?” 而要做到這一點(diǎn),你必須理解什么是數(shù)據(jù)庫(kù)、什么是虛擬機(jī)、什么是容器。你必須在計(jì)算機(jī)科學(xué)領(lǐng)域掌握這些概念,才能讓 AI 解答你的問(wèn)題。
老師們,如果回到學(xué)校的例子,他們會(huì)立即發(fā)現(xiàn)這一點(diǎn)。如果學(xué)生試圖通過(guò)作弊來(lái)完成家庭作業(yè),他們不僅需要提供答案,還需要展示他們的解題過(guò)程。就像數(shù)學(xué)課一樣:展示你使用 Copilot 構(gòu)建項(xiàng)目的過(guò)程。
另外,每個(gè)軟件項(xiàng)目都是獨(dú)特的,構(gòu)建超市的銷(xiāo)售系統(tǒng)與構(gòu)建在每個(gè)個(gè)體設(shè)備上運(yùn)行并可能有 1 億用戶(hù)的 iPhone 應(yīng)用程序之間存在很大差異。你仍然需要學(xué)習(xí)這些概念以及如何解決這些問(wèn)題。我認(rèn)為這對(duì)我們作為人類(lèi)來(lái)說(shuō)是一項(xiàng)更有用的技能,而不僅僅是了解編程語(yǔ)言的所有細(xì)節(jié)。
Freethink:作為一個(gè)一直非常支持開(kāi)源的人,你認(rèn)為開(kāi)源在這里扮演著什么樣的角色?
Dohmke:開(kāi)源將在 Copilot 的發(fā)展中起到基礎(chǔ)性的作用。OpenAI 提供給 Copilot 的模型是基于互聯(lián)網(wǎng)上的開(kāi)放數(shù)據(jù)進(jìn)行訓(xùn)練的。這些數(shù)據(jù)不僅包括源代碼,還包括各種其他文檔。這使得 Copilot 不僅能夠理解編程語(yǔ)言,還能理解人類(lèi)語(yǔ)言。開(kāi)源為這些模型的訓(xùn)練提供了數(shù)據(jù)集。
我們現(xiàn)在已經(jīng)看到了許多開(kāi)源的大語(yǔ)言模型。其中很多實(shí)際上托管在 GitHub 上,這讓我們非常興奮!GitHub 在過(guò)去 15 年中一直支持開(kāi)源生態(tài)系統(tǒng)?;旧希覀兊乃泄δ芏紝?duì)開(kāi)源項(xiàng)目免費(fèi)開(kāi)放,我們希望繼續(xù)支持這個(gè)生態(tài)系統(tǒng)。我們一直在為開(kāi)源開(kāi)發(fā)者的權(quán)益而奮斗,因?yàn)槲覀兿嘈砰_(kāi)源對(duì)于實(shí)現(xiàn)人類(lèi)進(jìn)步至關(guān)重要。
開(kāi)源所帶來(lái)的協(xié)作模式可能是目前存在的最無(wú)國(guó)界、無(wú)障礙的協(xié)作模式:來(lái)自許多國(guó)家的開(kāi)發(fā)者相互合作,不關(guān)心我們?cè)谶@個(gè)地球上所面臨的各種沖突。
通常情況是,當(dāng)你收到一個(gè)拉取請(qǐng)求時(shí),你不知道對(duì)方是誰(shuí),他們的職位是什么,他們一直在做什么工作,是否接受過(guò)大學(xué)教育等等。這些并不重要。我認(rèn)為,如果你想要向 Linux 內(nèi)核貢獻(xiàn)代碼,沒(méi)人會(huì)問(wèn)你:“你是否有適當(dāng)?shù)慕逃尘昂臀迥甑墓ぷ鹘?jīng)驗(yàn)?” 這不是開(kāi)源協(xié)作的工作方式。
在 GitHub,這是我們所接納的,并將始終接納的一部分,作為我們授權(quán)和支持開(kāi)源開(kāi)發(fā)者的使命。我認(rèn)為大語(yǔ)言模型將扮演重要角色,并有助于我們共同加速進(jìn)步。
Freethink:你認(rèn)為 Copilot 在開(kāi)發(fā)新編程語(yǔ)言方面可能扮演何種角色?編程語(yǔ)言的受歡迎程度會(huì)有起伏,我很好奇 Copilot 可能對(duì)此產(chǎn)生何種影響。
Dohmke:你提到了編程語(yǔ)言的興起和消退,我認(rèn)為說(shuō)得對(duì)。但它們永遠(yuǎn)不會(huì)完全過(guò)時(shí)。最常見(jiàn)的例子是銀行和金融服務(wù)機(jī)構(gòu),它們?nèi)栽谥鳈C(jī)上運(yùn)行 COBOL 語(yǔ)言。而且不僅僅是某個(gè)地方的銀行,我在世界各地的任何一個(gè)國(guó)家與任何一家銀行交流,他們依然在主機(jī)上運(yùn)行 COBOL。
這是一個(gè)問(wèn)題,因?yàn)榫帉?xiě) COBOL 語(yǔ)言的人們?cè)?60 年代都已經(jīng)退休了,他們不再需要為銀行維護(hù)那些代碼。Copilot 將在幫助公司現(xiàn)代化其代碼庫(kù)方面發(fā)揮作用,并且它將通過(guò)多種方式實(shí)現(xiàn)這一目標(biāo)。
首先,Copilot 可以向現(xiàn)在需要負(fù)責(zé)維護(hù)遺留代碼的開(kāi)發(fā)人員解釋代碼。你可以突出顯示代碼并詢(xún)問(wèn):“向我解釋一下這段代碼?!?一旦你獲得解釋?zhuān)銓?shí)際上可以利用解釋和代碼生成針對(duì)該代碼的測(cè)試用例。下一個(gè)合乎邏輯的步驟是,在與 “飛行員”(開(kāi)發(fā)人員)進(jìn)行迭代過(guò)程中,利用 AI 將所有代碼重寫(xiě)為 Python。因?yàn)槟闵闪藴y(cè)試和解釋 —— 這兩者在 60 年代可能都不存在,很多代碼也沒(méi)有文檔 —— 所以你能夠?qū)⒛切├吓f的代碼轉(zhuǎn)換為新的代碼庫(kù)。
我們都在努力解決技術(shù)債務(wù),不僅是前一代開(kāi)發(fā)者的,也包括我們自己六個(gè)月前的代碼庫(kù)。大多數(shù)開(kāi)發(fā)人員,無(wú)論他們六個(gè)月前寫(xiě)了什么代碼,當(dāng)他們現(xiàn)在看到它時(shí),會(huì)說(shuō):“現(xiàn)在我能比六個(gè)月前做得更好?!?我們將看到更多的迭代,希望我們背負(fù)的包袱更少。
我認(rèn)為另一種方式是,學(xué)習(xí)編程會(huì)變得更容易,而編程語(yǔ)言本身可能會(huì)趨向更人性化。不再需要編寫(xiě)大量的代碼,而是可以寫(xiě)很多注釋?zhuān)缓笥赡P秃铣善溆嗟拇a。這些注釋可以是德語(yǔ)、巴西葡萄牙語(yǔ),實(shí)際上幾乎任何語(yǔ)言都可以被這些模型理解,用于合成代碼。
最后,我們還有一個(gè)名為 Copilot Voice 的預(yù)覽產(chǎn)品,它可以幫助你用聲音寫(xiě)代碼,而不是用手—— 這將使殘障人士也能夠參與,因?yàn)樗麄兛赡軣o(wú)法整天打字,例如由于重復(fù)性勞損傷害。
Freethink:當(dāng)我教高中學(xué)生編程時(shí),他們最難理解的是編程語(yǔ)言與自然語(yǔ)言的不同之處。讓他們感到沮喪的是計(jì)算機(jī)會(huì)完全按照你告訴它的方式行動(dòng),就像一個(gè)讓人討厭的兄弟姐妹,總是做明顯錯(cuò)誤的事情,然后說(shuō):“技術(shù)上你說(shuō)的就是這個(gè)?!?有了像 Copilot 這樣的工具,你認(rèn)為編程會(huì)趨向融合,更類(lèi)似我們?nèi)伺c人之間的交流嗎?
Dohmke:我認(rèn)為你已經(jīng)可以看到這種趨勢(shì)。當(dāng)你使用這些聊天代理時(shí),它們不僅知道你剛剛輸入的句子,還知道先前對(duì)話(huà)的上下文。對(duì)于 Copilot Chat 來(lái)說(shuō),它甚至知道你編輯器中的內(nèi)容,不僅僅是你打開(kāi)的文件,還包括相鄰的標(biāo)簽頁(yè)和調(diào)試器。將來(lái),它們可能會(huì)擁有整個(gè)代碼庫(kù)或文件夾的上下文作為參考。
現(xiàn)在,你已經(jīng)可以編寫(xiě)一個(gè) HTML 文件 —— 一個(gè)網(wǎng)頁(yè),當(dāng)你寫(xiě)代碼時(shí),借助 Copilot 的幫助,你可以說(shuō):“讓這段文字變粗體。” 或者,“將這個(gè)區(qū)域居中顯示在頁(yè)面上?!?然后它會(huì)向你展示如何實(shí)現(xiàn),并消除了我們過(guò)去對(duì)計(jì)算機(jī)是否能理解我們意圖的沮喪感覺(jué)?,F(xiàn)在,它真的可以理解了。
就在最近的一次會(huì)議上,我通過(guò) Copilot 演示構(gòu)建了一個(gè)貪吃蛇游戲。我說(shuō):“讓游戲更漂亮”,它就輸出了樣式表。我從未提到要樣式表,甚至沒(méi)有給出 HTML 或 CSS 的概念。它通過(guò)理解我想要實(shí)現(xiàn)的目標(biāo)上下文,自行找到了解決方案。
我認(rèn)為與 Copilot 互動(dòng)的最佳時(shí)刻之一是,你可以告訴它某個(gè)地方出錯(cuò)了。你可以直接說(shuō):“這不是我要找的”,或者 “這個(gè)不起作用”。
然后它會(huì)說(shuō):“哦,抱歉了。這是另一個(gè)你可以嘗試的方法?!?它具有交互式模式,你不需要精確知道編程語(yǔ)言的語(yǔ)法,也不需要知道解決該問(wèn)題所需的具體知識(shí)。你可以探索并自己找到解決方案。
Freethink:據(jù)我所知,Copilot 是建立在 OpenAI 的 Codex 之上的,Codex 可以看作是對(duì)過(guò)去代碼的一種快照,涵蓋了 2021 年之前的代碼。我不知道是否有計(jì)劃將 Copilot 連接到互聯(lián)網(wǎng),以便進(jìn)行更頻繁的更新,但我很好奇,不再頻繁編寫(xiě)樣板代碼是否會(huì)導(dǎo)致一些潛在的損失。當(dāng)你必須深入細(xì)節(jié)時(shí),也許有 10 萬(wàn)人中的一人最終會(huì)想出更好的解決方案。然后,這個(gè)解決方案就會(huì)在開(kāi)發(fā)者社區(qū)中傳播開(kāi)來(lái)。如果人們只是向 Copilot 詢(xún)問(wèn)基于昨天的代碼的最佳解決方案,你認(rèn)為創(chuàng)新本身會(huì)如何改變?
Dohmke:首先要考慮的是,大語(yǔ)言模型并不具備存儲(chǔ)代碼片段的庫(kù)。它們是由數(shù)十億個(gè)參數(shù)組成的神經(jīng)網(wǎng)絡(luò),用于預(yù)測(cè)某種概率。對(duì)于語(yǔ)言模型來(lái)說(shuō),這個(gè)概率是下一個(gè)單詞;而對(duì)于擴(kuò)散模型來(lái)說(shuō),它是將噪聲轉(zhuǎn)化為圖像的方法。
以視覺(jué)模型為例,盡管它們只是在現(xiàn)有藝術(shù)作品上進(jìn)行訓(xùn)練,但它們可以生成全新的、以前不存在的藝術(shù)作品類(lèi)別。比如,你可以要求它渲染以法國(guó)印象派的方式繪制的今天紐約的天際線(xiàn)。這樣,它就會(huì)根據(jù)你的提示生成一張以莫奈或其他法國(guó)印象派畫(huà)家的風(fēng)格繪制的當(dāng)代紐約天際線(xiàn)的圖像。
訓(xùn)練集中并沒(méi)有真正看起來(lái)像這樣的圖像,而是根據(jù)你的提示和噪聲生成的。
我認(rèn)為語(yǔ)言模型也是如此。它們可以生成全新的文本和代碼,這些以前從未存在過(guò)的內(nèi)容。因此,它們可以與開(kāi)發(fā)者合作,實(shí)際上推動(dòng)創(chuàng)新并產(chǎn)生新的算法或代碼。但正如你從 “Copilot” 這個(gè)詞可以推斷出的,我們認(rèn)為在這個(gè)創(chuàng)新過(guò)程中,人類(lèi) “飛行員”(開(kāi)發(fā)人員)需要與 Copilot 進(jìn)行迭代合作。
-
AI
+關(guān)注
關(guān)注
87文章
31743瀏覽量
270528 -
代碼
+關(guān)注
關(guān)注
30文章
4838瀏覽量
69141 -
GitHub
+關(guān)注
關(guān)注
3文章
474瀏覽量
16625
原文標(biāo)題:GitHub CEO:未來(lái)80%的代碼將由Copilot編寫(xiě)
文章出處:【微信號(hào):玩轉(zhuǎn)VS Code,微信公眾號(hào):玩轉(zhuǎn)VS Code】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論