發(fā)布于:2020-12-24 16:12:24
0
86
0
當(dāng)我上大學(xué)時(shí),我們不得不在計(jì)算機(jī)科學(xué)考試中手工編寫(xiě)代碼。如果您在過(guò)去十年中的任何時(shí)候都學(xué)會(huì)了編碼,那么您可能會(huì)認(rèn)為這聽(tīng)起來(lái)很野蠻,效率低下,只是愚蠢。 而且你會(huì)是對(duì)的。 但是這里還有一個(gè)嚴(yán)重的問(wèn)題:我們用于計(jì)算機(jī)編程的技術(shù)正在不斷發(fā)展,并且發(fā)展的非??臁?我很幸運(yùn),我的考試不涉及打孔卡。
編碼實(shí)踐的下一個(gè)重大革命可能比我們想象的要近,它涉及到幫助計(jì)算機(jī)自我編碼。 一些研究人員認(rèn)為,通過(guò)利用自然語(yǔ)言處理和神經(jīng)網(wǎng)絡(luò),我們可以在幾年內(nèi)將人類(lèi)從編碼過(guò)程中徹底清除。
如果您是編碼人員,很高興得知他們是錯(cuò)的。 我們將需要很長(zhǎng)時(shí)間的人工編碼人員。 在本文中,我將解釋原因。
神經(jīng)網(wǎng)絡(luò)和編碼
首先,讓我們看一下新一代的編碼工具,看看它們能做什么。在編程中使用神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí)和AI工具的想法已經(jīng)存在了數(shù)十年,但是直到現(xiàn)在,第一個(gè)可用的實(shí)用工具才出現(xiàn)。這些工具可以分為三種類(lèi)型。
首先是旨在自動(dòng)識(shí)別錯(cuò)誤的工具。這一直是神經(jīng)網(wǎng)絡(luò)在編程中最成功的應(yīng)用之一,對(duì)于某些編碼人員來(lái)說(shuō)無(wú)疑是極其有用的。總部位于瑞士的公司DeepCode在這種工具方面一直處于領(lǐng)先地位,但是即使他們的產(chǎn)品也有嚴(yán)重的局限性,我很快就會(huì)談到。
其次,有一系列工具旨在自己生成基本代碼,或者可以為程序員自動(dòng)完成代碼。這些工具現(xiàn)已在許多流行的開(kāi)發(fā)平臺(tái)上發(fā)布。 Facebook開(kāi)發(fā)了一個(gè)名為Aroma的系統(tǒng),該系統(tǒng)可以自動(dòng)完成小程序,而DeepMind開(kāi)發(fā)了一種神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)可以提供比人類(lèi)設(shè)計(jì)的更有效的簡(jiǎn)單算法版本。
然后是神經(jīng)網(wǎng)絡(luò)在編程中最激動(dòng)人心的應(yīng)用:英特爾,麻省理工學(xué)院和喬治亞理工學(xué)院的團(tuán)隊(duì)進(jìn)行了這項(xiàng)研究。這些研究人員開(kāi)發(fā)了一種稱(chēng)為“機(jī)器推斷代碼相似性”或MISIM的系統(tǒng),他們聲稱(chēng)該系統(tǒng)能夠以與NLP系統(tǒng)可以讀取人類(lèi)生成的文本段落相同的方式來(lái)提取一段代碼的“含義”。
如果可以充分發(fā)揮其潛力,該MISIM系統(tǒng)有望成為一種革命性的工具。因?yàn)樗c語(yǔ)言無(wú)關(guān),所以系統(tǒng)可以在編寫(xiě)代碼時(shí)讀取代碼,并自動(dòng)編寫(xiě)模塊以完成常見(jiàn)任務(wù)。在許多程序中,用于自動(dòng)執(zhí)行云備份的許多代碼都是相同的,并且合規(guī)性過(guò)程對(duì)于許多編碼人員來(lái)說(shuō)也是一個(gè)主要的時(shí)間浪費(fèi)。
像MISIM這樣的系統(tǒng)有望使編寫(xiě)代碼的過(guò)程比目前的效率高得多,但是它們?nèi)匀淮嬖诤艽蟮木窒扌浴W屛覀儊?lái)看一些。
局限性
基于神經(jīng)網(wǎng)絡(luò)的編碼工具不太可能在短期內(nèi)取代人工編碼器。為了弄清為什么我們來(lái)看看這些工具的三種主要使用方式固有的局限性。
首先,旨在捕獲人類(lèi)創(chuàng)建的代碼中的錯(cuò)誤的ML和AI程序非常有用,但僅限于某種程度上。目前,您可能會(huì)很痛苦地意識(shí)到如果使用了其中一種程序,它們會(huì)產(chǎn)生大量誤報(bào):人工智能認(rèn)為可能是錯(cuò)誤的功能,但不是。從信息安全的角度來(lái)看,這些工具謹(jǐn)慎行事的事實(shí)固然很好,但也表明它們了解現(xiàn)代編程復(fù)雜性的能力有限。
其次,Aroma和OpenAI的GPT-3語(yǔ)言模型之類(lèi)的工具即使在自然語(yǔ)言的描述下也可以在人類(lèi)的指導(dǎo)下制作出簡(jiǎn)單的代碼。當(dāng)給出有限的可控制問(wèn)題來(lái)解決時(shí),它們的表現(xiàn)非常好,但是(到目前為止)無(wú)法查看設(shè)計(jì)簡(jiǎn)介和制定最佳方法。
我上面提到的第三種工具-MISIM及其相關(guān)系統(tǒng)-無(wú)疑是神經(jīng)網(wǎng)絡(luò)在編碼中的最具創(chuàng)新性的用途,并且最有希望真正改變我們的工作方式。但是,應(yīng)該指出的是,該系統(tǒng)仍處于開(kāi)發(fā)的早期階段,距離公開(kāi)測(cè)試版還有很長(zhǎng)的路要走。因此,在獲得版本之前,我將保留對(duì)其限制的判斷。
最后,盡管如此,還值得指出的是,所有這些工具中都隱含著一個(gè)更根本的限制:創(chuàng)造力。
換句話(huà)說(shuō),盡管這些工具非常適合在提示時(shí)完成代碼,但它們無(wú)論是在編碼還是設(shè)計(jì)方面都不會(huì)贏得任何設(shè)計(jì)大獎(jiǎng)。即使是最好的Web設(shè)計(jì)軟件也嘗試過(guò)并以失敗告終,無(wú)法實(shí)現(xiàn)AI驅(qū)動(dòng)的美學(xué)工具-這有一個(gè)很好的理由:人類(lèi)知道什么對(duì)其他人類(lèi)看起來(lái)很好。
利用這種美學(xué),在過(guò)去的幾十年中,創(chuàng)新能力一直是編碼范例的主要焦點(diǎn)。例如,這就是原因之一,為什么今天周?chē)S多最好的前端開(kāi)發(fā)框架都如此面向視覺(jué)。人類(lèi)非常擅長(zhǎng)在看似無(wú)關(guān)的數(shù)據(jù)中發(fā)現(xiàn)模式,而人工智能則擅長(zhǎng)執(zhí)行重復(fù),耗時(shí)的任務(wù)。
合作與創(chuàng)造力
這種無(wú)法創(chuàng)建新解決方案的原因是神經(jīng)網(wǎng)絡(luò)最終不會(huì)取代人類(lèi)的原因。相反,我們需要確定哪些任務(wù)最好由AI來(lái)完成,哪些任務(wù)最好由人類(lèi)來(lái)完成,然后利用這兩者的優(yōu)勢(shì)構(gòu)建協(xié)作的編碼方法。
做到這一點(diǎn)有兩種明確的方法。一種方法是使用AI編碼工具以比我們的教育系統(tǒng)目前更靈活,更有效,更有針對(duì)性的方式培訓(xùn)人類(lèi)開(kāi)發(fā)人員。例如,通過(guò)提供有關(guān)在編碼時(shí)保護(hù)真實(shí)系統(tǒng)的詳細(xì)指導(dǎo),可以將自動(dòng)化推薦系統(tǒng)用于為初學(xué)者教授編程安全性。
其次,在跟蹤人類(lèi)編碼人員的活動(dòng)并提高其工作效率方面,人工智能顯示出了巨大的希望。一個(gè)很好的例子是許多公司現(xiàn)在使用的自動(dòng)發(fā)票,其中使用ML系統(tǒng)來(lái)跟蹤人類(lèi)員工的活動(dòng)。的確,為每個(gè)人類(lèi)程序員提供一個(gè)AI助手來(lái)學(xué)習(xí)他們的工作方式,然后根據(jù)他們以前的解決方案提出建議,將對(duì)大多數(shù)開(kāi)發(fā)人員帶來(lái)極大的好處。
第三,像MISIM這樣的系統(tǒng)即使不能完全自動(dòng)執(zhí)行代碼編寫(xiě),也可能會(huì)有一點(diǎn)出乎意料的好處:它們可以用來(lái)重寫(xiě)遺留系統(tǒng)。由于MISIM之類(lèi)的工具與平臺(tái)無(wú)關(guān),因此它們可能會(huì)自學(xué)成語(yǔ),以了解諸如COBOL之類(lèi)的古老(現(xiàn)在已經(jīng)很模糊)的編碼語(yǔ)言,然后以可用格式(如Python)重新編寫(xiě)這些程序。您問(wèn)誰(shuí)仍在使用COBOL?好吧,美國(guó)政府。
所有這些方法并不試圖用機(jī)器類(lèi)似物代替人類(lèi)編碼器。實(shí)際上,它們?nèi)家圆煌姆妒綖橐罁?jù):在編碼方面,人與機(jī)器可以作為同事而不是競(jìng)爭(zhēng)對(duì)手一起工作。
底線(xiàn)
這聽(tīng)起來(lái)像是烏托邦的愿景,但放眼望遠(yuǎn),您會(huì)發(fā)現(xiàn)這是非??尚械?。在許多方面,編碼中使用AI和ML工具的出現(xiàn)反映了圖形編碼工具甚至是編程語(yǔ)言本身的先前開(kāi)發(fā)。您的前端開(kāi)發(fā)工具和python腳本都不會(huì)在根本上與您的硬件進(jìn)行交互:所有事情,我們都忘了,所有這些都需要轉(zhuǎn)換為二進(jìn)制機(jī)器代碼。
將編碼視為“翻譯”的過(guò)程現(xiàn)在可能已經(jīng)過(guò)時(shí)了,但這確實(shí)可以為我提供培訓(xùn)。二十年前,我們被明確教導(dǎo)如何將代碼轉(zhuǎn)換為匯編語(yǔ)言。如今,這種方法似乎完全是浪費(fèi)時(shí)間。
最終,這就是AI編碼工具的開(kāi)發(fā)所尋求擴(kuò)展的。這里的最終目標(biāo)是,像MISIM這樣的系統(tǒng)將能夠?qū)τ?jì)算機(jī)程序進(jìn)行描述,甚至甚至是要解決的問(wèn)題的描述,并能夠自行生成程序。但是請(qǐng)務(wù)必記住,描述仍將由人類(lèi)給出。
作者介紹
熱門(mén)博客推薦