Marcus Woo
Senior Technology Writer
紐約市的官員想要追蹤新冠病毒肺炎(COVID-19)在城市中肆虐的情況,并有效地為有需要的人提供服務(wù)。為此,他們建立了一個(gè)在線門戶網(wǎng)站,用于收集COVID-19感染者以及病例接觸者的信息。速度至關(guān)重要,COVID-19門戶網(wǎng)站三天后便上線運(yùn)行了,而這一切都無需編寫任何代碼[1]。
這一壯舉由紐約市的初創(chuàng)公司Unqork所開發(fā)的無代碼(no-code)軟件開發(fā)平臺(tái)實(shí)現(xiàn),并很快得到了華盛頓特區(qū)的效仿,用于當(dāng)?shù)氐腃OVID-19支持中心[2]。與無代碼平臺(tái)類似的還有需要一些基本編碼知識(shí)的低代碼平臺(tái),而兩者日益壯大的趨勢代表著計(jì)算機(jī)科學(xué)向?qū)崿F(xiàn)編碼自動(dòng)化這一幾十年來的目標(biāo)又邁進(jìn)了一步。
“想象一個(gè)不必編寫代碼的世界,”加利福尼亞大學(xué)伯克利分校的計(jì)算機(jī)科學(xué)教授Koushik Sen說道,“只要?jiǎng)幼?,?jì)算機(jī)就能幫你實(shí)現(xiàn),就像是一個(gè)用于編程的亞馬遜Alexa智能助理?!?/p>
除了眾多初創(chuàng)公司,甲骨文(Oracle)、Salesforce、微軟(Microsoft)和阿里巴巴(Alibaba)等科技巨頭也擁有自己的無代碼和低代碼軟件開發(fā)平臺(tái)。在2020年1月,谷歌公司收購了源于美國華盛頓州西雅圖市的無代碼平臺(tái)AppSheet [3]。根據(jù)總部位于美國康涅狄格州斯坦福德的全球研究公司高德納的預(yù)測,到2024年,低代碼平臺(tái)將用于65%的應(yīng)用程序開發(fā)工作[4]。
北京大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系的講席教授謝濤表示,這種增長反映了企業(yè)日益數(shù)字化以及對定制應(yīng)用程序需求的增長。因?yàn)闆]有足夠的軟件工程師來滿足需求,企業(yè)如今開始轉(zhuǎn)向這些愈加強(qiáng)大的平臺(tái)。
在大多數(shù)的這些平臺(tái)中,用戶可以通過拖放元素(圖1)來創(chuàng)建網(wǎng)頁和移動(dòng)應(yīng)用程序,而無需編寫代碼。但是,這種高級(jí)編程的概念并非如此新穎。Sen表示,編程一直朝著更簡便易懂的形式發(fā)展,無代碼和低代碼軟件開發(fā)只是該趨勢的一種延伸。例如,在20世紀(jì)50年代,編程中的匯編語言過于煩瑣,計(jì)算機(jī)科學(xué)家便創(chuàng)建了Fortran等更易于編寫和理解的高級(jí)語言。甚至電子表格都是一種無代碼或低代碼的平臺(tái),用戶幾乎無需編寫任何代碼即可分析和處理數(shù)據(jù)。
如今,大多數(shù)商業(yè)化的拖放平臺(tái)都是通過預(yù)定義的組件來創(chuàng)建應(yīng)用程序的。但是,某些平臺(tái)開始利用人工智能(AI)來更好地預(yù)測用戶的需求。例如,美國馬薩諸塞州波士頓市的低代碼平臺(tái)Mendix擁有一個(gè)由機(jī)器學(xué)習(xí)驅(qū)動(dòng)的助手,可識(shí)別歷史數(shù)據(jù)中的規(guī)律,以便在用戶創(chuàng)建應(yīng)用程序時(shí)為其提供建議[5]。謝教授說道,融入這種數(shù)據(jù)驅(qū)動(dòng)的智能技術(shù)反映了這些平臺(tái)的下一步發(fā)展?!笆勾a生成與合成足夠智能化將是一個(gè)重要的里程碑?!?/p>
最終,人工智能也許可以自動(dòng)生成代碼,這一目標(biāo)被稱為“程序合成”。加利福尼亞大學(xué)伯克利分校的計(jì)算機(jī)科學(xué)助理教授Alvin Cheung表示:“能夠讓計(jì)算機(jī)自己編寫程序一直是計(jì)算機(jī)科學(xué)家的夢想?!蹦憧梢酝ㄟ^提供輸入和輸出的示例,演示你想要完成的任務(wù),或者簡單地用自然語言描述你想要的程序,來告訴計(jì)算機(jī)你想要什么,計(jì)算機(jī)就會(huì)生成代碼。
圖1. Mendix等低代碼平臺(tái)允許用戶通過拖放組件來設(shè)計(jì)應(yīng)用程序,無需編寫代碼。該截圖展現(xiàn)的是拖放界面。圖片來源:Mendix,經(jīng)允許。
但是,Cheung說道,解讀人類需求、擴(kuò)大規(guī)模并產(chǎn)生大量代碼仍然是程序合成的重大挑戰(zhàn),即使是最先進(jìn)的工具也遠(yuǎn)遠(yuǎn)無法達(dá)到目標(biāo)。不過,由于深度學(xué)習(xí)的進(jìn)步以及更高效的自動(dòng)編碼方法的出現(xiàn),我們正在進(jìn)步。從原則上講,計(jì)算機(jī)可以查閱所有可能的代碼,然后找出可以完成所需任務(wù)的組合來生成程序。但是,這不切實(shí)際,因此計(jì)算機(jī)科學(xué)家一直在開發(fā)更智能的方法來縮小搜索范圍。Cheung表示,在使用這種方法的工具中,一個(gè)最好的示例就是微軟電子表格的快速填充功能。當(dāng)你輸入數(shù)據(jù)時(shí),它會(huì)識(shí)別規(guī)律并相應(yīng)地自動(dòng)填充剩余的單元格。
IntelliJ IDEA(來自捷克共和國布拉格的JetBrains公司)和TabNine(來自以色列特拉維夫的Codota公司)等其他商業(yè)工具分別使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)來識(shí)別人們的編碼規(guī)律并在編碼時(shí)提供建議。Sen說道:“這就像更加強(qiáng)大的自動(dòng)填充功能一樣?!迸c拖放平臺(tái)不同,這些工具適用于編碼人員。盡管它們不合成代碼,但其目的是幫助程序員更快地編寫代碼,并減少錯(cuò)誤。
當(dāng)前所有的這些技術(shù)都存在局限和挑戰(zhàn)。謝教授說,沒有專業(yè)的開發(fā)人員,使用拖放平臺(tái)制作的應(yīng)用程序可能難以更新從而滿足新的技術(shù)要求。這些應(yīng)用程序運(yùn)行時(shí)的性能可能不那么高效,并且可能很難與一個(gè)公司里的大型軟件系統(tǒng)整合。一些創(chuàng)建移動(dòng)應(yīng)用程序的無代碼工具,即在線應(yīng)用程序生成器可能會(huì)遇到安全問題[6]。對于不懂代碼的開發(fā)者來說,調(diào)試將是一個(gè)很大的挑戰(zhàn)。
如果程序合成成為現(xiàn)實(shí)(Sen表示“這會(huì)實(shí)現(xiàn)的”),即使是最好的程序員也許都很難理解代碼。這些代碼不會(huì)有注釋,并且可能會(huì)使用難以理解的變量名。Sen說道,計(jì)算機(jī)認(rèn)為最有效的代碼對于人類來說可能是無法理解的。而且神經(jīng)網(wǎng)絡(luò)算法本身具有“黑箱”性質(zhì),它可能已經(jīng)生成了代碼,然而人們通常無法理解這一結(jié)果是如何實(shí)現(xiàn)的。
但是,無論是使用程序合成還是拖放平臺(tái),越來越多的人以后將能夠創(chuàng)建程序。這可以解放訓(xùn)練有素的編碼人員,讓他們專注于最棘手的問題。我們對編碼人員的需求可能會(huì)減少,但是我們?nèi)匀恍枰獙<??!拔也徽J(rèn)為人類會(huì)被完全取代,”Cheung表示,“現(xiàn)在仍然有大量的編程工作是自動(dòng)化系統(tǒng)無法勝任的,而且即使在不久的將來也不行?!?/p>