2016-2022 All Rights Reserved.平安財(cái)經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082 備案號(hào):閩ICP備19027007號(hào)-6
本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。
開發(fā)人員以謀生為目的進(jìn)行編碼,這意味著大量時(shí)間在筆記本電腦上書寫。因此,當(dāng)他們進(jìn)行編碼時(shí),他們可以從Google在Gmail中由AI生成的Smart Compose建議中受益。但是直到最近,開發(fā)人員還沒有很多智能自動(dòng)完成選項(xiàng)。
然而,本月初,谷歌宣布其流行的Dart軟件開發(fā)套件的新版本將用于構(gòu)建智能手機(jī)應(yīng)用程序,該版本將隨附“ ML Complete”,該版本使用機(jī)器學(xué)習(xí)在Dart中提供代碼完成建議。
請(qǐng)參閱:如何建立成功的開發(fā)人員職業(yè)生涯(免費(fèi)PDF)
這是Google交付給開發(fā)人員的第一個(gè)智能自動(dòng)完成工具,但Kite是舊金山的一家初創(chuàng)公司,致力于為Python開發(fā)人員提供由AI驅(qū)動(dòng)的代碼自動(dòng)完成工具,多年來一直處于停滯狀態(tài)。
Kite剛剛 宣布推出Intelligent Snippets,該功能使開發(fā)人員能夠完成Python中由“令牌”組成的整個(gè)句子的等效內(nèi)容 ,由于 機(jī)器學(xué)習(xí)的發(fā)展,該語言已成為程序員必不可少的語言。
編程中令牌的口語等效詞是一個(gè)詞,現(xiàn)在Kite可以建議多個(gè)令牌,而用戶無需先手動(dòng)定義句子的結(jié)構(gòu),這意味著它可以即時(shí)適應(yīng)開發(fā)人員的編碼風(fēng)格。
但目前,僅適用于使用Python的開發(fā)人員才能通過最新版本的Kite for Python代碼編輯器(如Atom,PyCharm,Sublime Text,VS Code和Vim)使用Kite及其新的Intelligent Snippets功能。
風(fēng)箏首席執(zhí)行官亞當(dāng)·史密斯(Adam Smith)告訴ZDNet:“智能代碼段是用戶可以在其中填補(bǔ)空白的較大代碼段。”
該功能建立在Kite的主要前提之上,該前提是允許開發(fā)人員更快地鍵入內(nèi)容并避免需要在Web上查找參考文檔,從而幫助他們節(jié)省時(shí)間和精力。
在風(fēng)箏目前擁有30,000名開發(fā)人員的用戶群中,史密斯說,歐洲編碼人員僅占其網(wǎng)絡(luò)訪問量的不到三分之一,該地區(qū)是僅次于美國(guó)的第二大用戶群體。
8月,歐洲大約3,000名Python開發(fā)人員開始使用Kite,這表明來自歐盟地區(qū)的開發(fā)人員的興趣日益濃厚。
Kite還獲得了著名的德國(guó)開發(fā)人員Joachim Ansorg的支持,Joachim Ansorg從捷克的JetBrains公司為集成化開發(fā)環(huán)境(IDE)構(gòu)建了PyCharm的Kite插件,背后是官方Android編程語言Kotlin。
智能片段旨在解決使用機(jī)器學(xué)習(xí)模型來預(yù)測(cè)涉及多個(gè)令牌的更復(fù)雜建議的局限性。
Smith解釋說:“智能片段基本上與編輯器一起使用,可以為您帶來完成內(nèi)空白的體驗(yàn)。”
“我們最終要努力建立的是人類開發(fā)人員和編輯環(huán)境之間的交互,在這種環(huán)境中,共生關(guān)系盡可能地緊密。這是幫助我們的用戶獲得這些模型的智能的重要一步,”他說。史密斯
風(fēng)箏有其局限性。TabNine是加拿大計(jì)算機(jī)科學(xué)專業(yè)學(xué)生Jacob Jackson的自動(dòng)完成軟件,它通過使用自然語言處理采用了一種新穎的方法來應(yīng)對(duì)開發(fā)人員挑戰(zhàn),從而可以為包括Python,JavaScript,Java,C ++在內(nèi)的十幾種編程語言提供智能建議。 ,C和PHP。
杰克遜(Jackson)在Open AI的GPT-2上構(gòu)建了TabNine,該GPT-2用于預(yù)測(cè)人類口語中的單詞,但TabNine用來根據(jù)先前的令牌來預(yù)測(cè)開發(fā)人員鍵入的下一個(gè)令牌。
杰克遜的方法是否是制勝法尚待觀察,但目前看來,它比風(fēng)箏提供了更大的靈活性。
史密斯說:“我們處于1995年或1994年的網(wǎng)絡(luò)搜索階段?,F(xiàn)在還處于初期階段。目前尚不清楚哪種技術(shù)或哪種方法最終會(huì)獲勝。”
“對(duì)于TabNine與Kite而言,這是一組非常有趣的取舍,” Smith說。“ TabNine不使用任何語義信息。這意味著他們的模型不了解或不使用您正在使用的代碼的更深層次的結(jié)構(gòu)。它學(xué)習(xí)了其中的一些元素,但是非常有限。”
Smith指出,自然語言與代碼之間的主要區(qū)別之一是,在自然語言中,上下文是本地定義的。
因此,如果一個(gè)人說諸如“ that”,“ where”或“ herself”之類的代詞,則該模型可以查看其前面所說的單詞,以了解說話者所指的是什么。但是,要使模型從編程語言中了解功能,就需要訪問非本地信息。
如果您今天必須選擇一種語言,Python絕對(duì)不是支持錯(cuò)誤的語言,但是Kite需要構(gòu)建一個(gè)全新的引擎來支持Java或JavaScript。
Smith說:“與我們迄今為止使用的模型(用戶程序分析引擎)相比,使用GPT-2的權(quán)衡之一是它不是自然地跨語言的。” “您幾乎需要為要支持的每種語言使用不同的引擎。”
TabNine的杰克遜(Jackson)認(rèn)為,在兩種方法之間進(jìn)行取舍是有缺陷的,因?yàn)檫@不是“或非”選擇。
“這里存在錯(cuò)誤二分法的危險(xiǎn):將深層模型與語義方法進(jìn)行比較時(shí),很容易忘記您可以同時(shí)使用兩者。確實(shí),這是啟用語義完成功能時(shí)TabNine所做的事情:它使用語義完成程序進(jìn)行過濾深層模型的結(jié)果。”杰克遜在一封電子郵件中告訴ZDNet。
“在我看來,這不是哪種方法更好的問題,而是'如何將這些方法一起使用來互相補(bǔ)充?”。
開發(fā)人員擁有的另一個(gè)AI自動(dòng)完成選項(xiàng)是Visual Studio中的Microsoft IntelliCode。Smith承認(rèn)Microsoft的方法“易于構(gòu)建,易于實(shí)現(xiàn)且非??焖?rdquo;,但他指出,它缺乏多令牌完成功能,并且考慮到“很少上下文”。
他談到微軟的IntelliCode時(shí)說:“您不必?fù)?dān)心性能,也不必將代碼發(fā)送到服務(wù)器進(jìn)行處理。”
這是TabNine和Kite最初都必須解決的一個(gè)主要優(yōu)勢(shì),這使他們倆都作為基于云的服務(wù)啟動(dòng),以利用與高端筆記本電腦相比更大的計(jì)算能力。
但是,從今年開始, TabNine和Kite現(xiàn)在提供本地運(yùn)行的系統(tǒng),因此開發(fā)人員無需將其私有源代碼發(fā)送到云中。
至于史密斯為何選擇Python而不是JavaScript或Java的原因,CEO表示這是一個(gè)務(wù)實(shí)的決定:動(dòng)態(tài)類型的語言(如Python和JavaScript)比靜態(tài)類型的語言(如Java或C#)更難分析。另外,Python工具的發(fā)展也不盡人意,因此使其成為更容易的目標(biāo)。
Smith指出:“即使在今天,JavaScript和Python的開發(fā)環(huán)境對(duì)于Java或C#仍然沒有真正的優(yōu)勢(shì)。”
至于選擇Python而不是JavaScript,Smith認(rèn)為JavaScript是一個(gè)更困難的目標(biāo),因?yàn)閺臑g覽器版本到服務(wù)器版本(例如React和Node.js),JavaScript有很多不同的風(fēng)格。
“如果我們想支持JavaScript,要做到這將需要更多的工程工作,尤其是在我們只是想盡快迭代的早期,所以我們喜歡Python的較低表面積。史密斯說:“在某種程度上,Python取得了非常成功,這是一種幸運(yùn)。”
2016-2022 All Rights Reserved.平安財(cái)經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082 備案號(hào):閩ICP備19027007號(hào)-6
本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。