您的位置: 首頁 >科技 >

Google進入AI編碼自動完成競賽 適用于Python語言的Kite變得更加智能

2022-07-15 13:20:29 編輯:苗美苑 來源:
導(dǎo)讀 開發(fā)人員以謀生為目的進行編碼,這意味著大量時間在筆記本電腦上書寫。因此,當他們進行編碼時,他們可以從Google在Gmail中由AI生成的Smart

開發(fā)人員以謀生為目的進行編碼,這意味著大量時間在筆記本電腦上書寫。因此,當他們進行編碼時,他們可以從Google在Gmail中由AI生成的Smart Compose建議中受益。但是直到最近,開發(fā)人員還沒有很多智能自動完成選項。

然而,本月初,谷歌宣布其流行的Dart軟件開發(fā)套件的新版本將用于構(gòu)建智能手機應(yīng)用程序,該版本將隨附“ ML Complete”,該版本使用機器學(xué)習在Dart中提供代碼完成建議。

請參閱:如何建立成功的開發(fā)人員職業(yè)生涯(免費PDF)

這是Google交付給開發(fā)人員的第一個智能自動完成工具,但Kite是舊金山的一家初創(chuàng)公司,致力于為Python開發(fā)人員提供由AI驅(qū)動的代碼自動完成工具,多年來一直處于停滯狀態(tài)。

Kite剛剛 宣布推出Intelligent Snippets,該功能使開發(fā)人員能夠完成Python中由“令牌”組成的整個句子的等效內(nèi)容 ,由于 機器學(xué)習的發(fā)展,該語言已成為程序員必不可少的語言。

編程中令牌的口語等效詞是一個詞,現(xiàn)在Kite可以建議多個令牌,而用戶無需先手動定義句子的結(jié)構(gòu),這意味著它可以即時適應(yīng)開發(fā)人員的編碼風格。

但目前,僅適用于使用Python的開發(fā)人員才能通過最新版本的Kite for Python代碼編輯器(如Atom,PyCharm,Sublime Text,VS Code和Vim)使用Kite及其新的Intelligent Snippets功能。

風箏首席執(zhí)行官亞當·史密斯(Adam Smith)告訴ZDNet:“智能代碼段是用戶可以在其中填補空白的較大代碼段。”

該功能建立在Kite的主要前提之上,該前提是允許開發(fā)人員更快地鍵入內(nèi)容并避免需要在Web上查找參考文檔,從而幫助他們節(jié)省時間和精力。

在風箏目前擁有30,000名開發(fā)人員的用戶群中,史密斯說,歐洲編碼人員僅占其網(wǎng)絡(luò)訪問量的不到三分之一,該地區(qū)是僅次于美國的第二大用戶群體。

8月,歐洲大約3,000名Python開發(fā)人員開始使用Kite,這表明來自歐盟地區(qū)的開發(fā)人員的興趣日益濃厚。

Kite還獲得了著名的德國開發(fā)人員Joachim Ansorg的支持,Joachim Ansorg從捷克的JetBrains公司為集成化開發(fā)環(huán)境(IDE)構(gòu)建了PyCharm的Kite插件,背后是官方Android編程語言Kotlin。

智能片段旨在解決使用機器學(xué)習模型來預(yù)測涉及多個令牌的更復(fù)雜建議的局限性。

Smith解釋說:“智能片段基本上與編輯器一起使用,可以為您帶來完成內(nèi)空白的體驗。”

“我們最終要努力建立的是人類開發(fā)人員和編輯環(huán)境之間的交互,在這種環(huán)境中,共生關(guān)系盡可能地緊密。這是幫助我們的用戶獲得這些模型的智能的重要一步,”他說。史密斯

風箏有其局限性。TabNine是加拿大計算機科學(xué)專業(yè)學(xué)生Jacob Jackson的自動完成軟件,它通過使用自然語言處理采用了一種新穎的方法來應(yīng)對開發(fā)人員挑戰(zhàn),從而可以為包括Python,JavaScript,Java,C ++在內(nèi)的十幾種編程語言提供智能建議。 ,C和PHP。

杰克遜(Jackson)在Open AI的GPT-2上構(gòu)建了TabNine,該GPT-2用于預(yù)測人類口語中的單詞,但TabNine用來根據(jù)先前的令牌來預(yù)測開發(fā)人員鍵入的下一個令牌。

杰克遜的方法是否是制勝法尚待觀察,但目前看來,它比風箏提供了更大的靈活性。

史密斯說:“我們處于1995年或1994年的網(wǎng)絡(luò)搜索階段?,F(xiàn)在還處于初期階段。目前尚不清楚哪種技術(shù)或哪種方法最終會獲勝。”

“對于TabNine與Kite而言,這是一組非常有趣的取舍,” Smith說。“ TabNine不使用任何語義信息。這意味著他們的模型不了解或不使用您正在使用的代碼的更深層次的結(jié)構(gòu)。它學(xué)習了其中的一些元素,但是非常有限。”

Smith指出,自然語言與代碼之間的主要區(qū)別之一是,在自然語言中,上下文是本地定義的。

因此,如果一個人說諸如“ that”,“ where”或“ herself”之類的代詞,則該模型可以查看其前面所說的單詞,以了解說話者所指的是什么。但是,要使模型從編程語言中了解功能,就需要訪問非本地信息。

如果您今天必須選擇一種語言,Python絕對不是支持錯誤的語言,但是Kite需要構(gòu)建一個全新的引擎來支持Java或JavaScript。

Smith說:“與我們迄今為止使用的模型(用戶程序分析引擎)相比,使用GPT-2的權(quán)衡之一是它不是自然地跨語言的。” “您幾乎需要為要支持的每種語言使用不同的引擎。”

TabNine的杰克遜(Jackson)認為,在兩種方法之間進行取舍是有缺陷的,因為這不是“或非”選擇。

“這里存在錯誤二分法的危險:將深層模型與語義方法進行比較時,很容易忘記您可以同時使用兩者。確實,這是啟用語義完成功能時TabNine所做的事情:它使用語義完成程序進行過濾深層模型的結(jié)果。”杰克遜在一封電子郵件中告訴ZDNet。

“在我看來,這不是哪種方法更好的問題,而是'如何將這些方法一起使用來互相補充?”。

開發(fā)人員擁有的另一個AI自動完成選項是Visual Studio中的Microsoft IntelliCode。Smith承認Microsoft的方法“易于構(gòu)建,易于實現(xiàn)且非??焖?rdquo;,但他指出,它缺乏多令牌完成功能,并且考慮到“很少上下文”。

他談到微軟的IntelliCode時說:“您不必擔心性能,也不必將代碼發(fā)送到服務(wù)器進行處理。”

這是TabNine和Kite最初都必須解決的一個主要優(yōu)勢,這使他們倆都作為基于云的服務(wù)啟動,以利用與高端筆記本電腦相比更大的計算能力。

但是,從今年開始, TabNine和Kite現(xiàn)在提供本地運行的系統(tǒng),因此開發(fā)人員無需將其私有源代碼發(fā)送到云中。

至于史密斯為何選擇Python而不是JavaScript或Java的原因,CEO表示這是一個務(wù)實的決定:動態(tài)類型的語言(如Python和JavaScript)比靜態(tài)類型的語言(如Java或C#)更難分析。另外,Python工具的發(fā)展也不盡人意,因此使其成為更容易的目標。

Smith指出:“即使在今天,JavaScript和Python的開發(fā)環(huán)境對于Java或C#仍然沒有真正的優(yōu)勢。”

至于選擇Python而不是JavaScript,Smith認為JavaScript是一個更困難的目標,因為從瀏覽器版本到服務(wù)器版本(例如React和Node.js),JavaScript有很多不同的風格。

“如果我們想支持JavaScript,要做到這將需要更多的工程工作,尤其是在我們只是想盡快迭代的早期,所以我們喜歡Python的較低表面積。史密斯說:“在某種程度上,Python取得了非常成功,這是一種幸運。”


免責聲明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!

精彩推薦

圖文推薦

點擊排行

2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082   備案號:閩ICP備19027007號-6

本站除標明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。