本刊綜合
前段時(shí)間,英特爾公司推出了機(jī)器編程研究系統(tǒng)ControlFlag,這是全球首個(gè)自我監(jiān)控系統(tǒng),可以自主檢測(cè)代碼中的錯(cuò)誤,目前仍處于早期階段。在初步測(cè)試中,這個(gè)系統(tǒng)利用超過(guò)10億行未標(biāo)記的產(chǎn)品級(jí)別代碼進(jìn)行訓(xùn)練并學(xué)習(xí)新的缺陷。英特爾首席科學(xué)家表示,這款工具可以大幅減少測(cè)試和修復(fù)bug所需的時(shí)間和成本。
那么,機(jī)器編程究竟是什么?它目前發(fā)展如何,會(huì)在未來(lái)給世界帶來(lái)怎樣的改變?它會(huì)讓未來(lái)的程序員丟掉飯碗嗎?
代碼將不再是“手工藝品”
如今,幾乎各個(gè)行業(yè)都離不開(kāi)編程。傳統(tǒng)編程看似簡(jiǎn)單,其實(shí)對(duì)人的要求很高。盡管大多數(shù)人可以熟練使用自然語(yǔ)言表達(dá)自己的想法,但是讓其去編程卻不是很容易,那需要思想和底層原理支撐。
據(jù)統(tǒng)計(jì),全球78億人中,只有2700萬(wàn)人會(huì)編寫(xiě)代碼,占比不到1%。根據(jù)美國(guó)非盈利組織code.org的數(shù)據(jù),美國(guó)有50萬(wàn)個(gè)編程人員崗位空缺,歐盟目前只有10%的編程人員受過(guò)計(jì)算機(jī)科學(xué)專(zhuān)業(yè)訓(xùn)練。
“編程的基本規(guī)則往往需要通過(guò)長(zhǎng)時(shí)間的學(xué)習(xí)和訓(xùn)練才能掌握。如同好的作家不一定是好的編劇,作家描寫(xiě)人的內(nèi)心活動(dòng)可以用‘心如刀扎這類(lèi)語(yǔ)言進(jìn)行描述,但是編劇需要把這種情緒明確細(xì)致地一一描述出來(lái),這樣演員才可以栩栩如生地表演出來(lái)?!蔽靼搽娮涌萍即髮W(xué)電子工程學(xué)院教授吳家驥介紹說(shuō)。
傳統(tǒng)編程是基于規(guī)則和邏輯把人的意圖按照編程語(yǔ)言規(guī)范化實(shí)現(xiàn)的過(guò)程,程序員就像傳統(tǒng)工廠流水線上的員工和農(nóng)場(chǎng)里的農(nóng)民一樣,只需按照定義好的標(biāo)準(zhǔn)接口和編程規(guī)范,把需求意圖拆解為正確的邏輯,用代碼寫(xiě)出來(lái),所以程序員也被稱(chēng)為“碼農(nóng)”。
然而,在軟件飛速發(fā)展的今天,開(kāi)發(fā)和維護(hù)卻依然是既耗時(shí)又容易出錯(cuò)的工作。英特爾研究院機(jī)器編程研究部門(mén)總監(jiān)賈斯汀·戈茨利希認(rèn)為,這些從軟件誕生之日起就困擾著一代又一代程序員的問(wèn)題,其實(shí)并非無(wú)解,他說(shuō),“相信我們能創(chuàng)造一個(gè)人人都是軟件開(kāi)發(fā)者的社會(huì),屆時(shí)機(jī)器將會(huì)承擔(dān)‘編程部分的工作,讓代碼不再是‘手工藝品。所以,我們將其稱(chēng)為‘機(jī)器編程?!?/p>
發(fā)展尚處于早期
通過(guò)機(jī)器學(xué)習(xí)和其他自動(dòng)化方法,設(shè)計(jì)可以自動(dòng)編寫(xiě)軟件的機(jī)器編程并非今天才有,20世紀(jì)50年代就已有學(xué)術(shù)機(jī)構(gòu)開(kāi)始涉足機(jī)器編程的研究。
在賈斯汀·戈茨利??磥?lái),與以往不同,現(xiàn)在的機(jī)器編程融合了機(jī)器學(xué)習(xí)、形式化方法、編程語(yǔ)言、編譯器、計(jì)算機(jī)系統(tǒng)等多個(gè)領(lǐng)域。它所使用的自動(dòng)編程技術(shù),既包含精確方法(比如形式程序合成),也有概率方法(比如可微分編程)。機(jī)器編程汲取了我們迄今為止獲得的所有軟硬件知識(shí),站在了歷史的拐點(diǎn)上。新的機(jī)器學(xué)習(xí)算法、新硬件與優(yōu)化硬件、海量而多樣的編程數(shù)據(jù),這三者是發(fā)展機(jī)器編程的要素。
微軟亞洲研究院首席研究員樓建光指出,機(jī)器學(xué)習(xí)算法的進(jìn)步,算力的高速發(fā)展以及海量的編程數(shù)據(jù),讓機(jī)器編程的發(fā)展進(jìn)入了新的拐點(diǎn)。不過(guò)機(jī)器編程發(fā)展尚在早期,其難點(diǎn)在于目前機(jī)器還沒(méi)有組合與泛化的能力,只能進(jìn)行簡(jiǎn)單的編程,稍微長(zhǎng)一點(diǎn)的程序就無(wú)法完成。復(fù)雜程序是由簡(jiǎn)單程序組合而成的,而程序組合中有很多邏輯和思想,現(xiàn)在的人工智能沒(méi)有組合能力,缺乏邏輯思維。
盡管機(jī)器編程的發(fā)展尚在早期,但從全球機(jī)器編程的進(jìn)展看,不同領(lǐng)域有不同進(jìn)展,在特定領(lǐng)域,已經(jīng)取得不錯(cuò)的突破。但在通用領(lǐng)域,尚未取得實(shí)質(zhì)性突破,仍需要產(chǎn)、學(xué)、研各界齊發(fā)力,加速機(jī)器編程的突破。
當(dāng)下,在機(jī)器編程的賽道上,越來(lái)越多的公司涌了進(jìn)來(lái)。除了微軟、谷歌、臉書(shū)等,在中國(guó)包括百度以及一些創(chuàng)業(yè)公司也加入了機(jī)器編程的研發(fā)行列,不同的公司有不同的技術(shù)路線,但他們的每一步探索,都會(huì)對(duì)未來(lái)機(jī)器編程產(chǎn)生深刻的影響。
機(jī)器編程將創(chuàng)造大量就業(yè)機(jī)會(huì)
據(jù)統(tǒng)計(jì),全球程序開(kāi)發(fā)人員2019年約為2390萬(wàn)人,每年平均增加約100萬(wàn)人,預(yù)估2024年將達(dá)到2870萬(wàn)人。有人不禁擔(dān)憂,現(xiàn)在學(xué)計(jì)算機(jī)以后會(huì)不會(huì)產(chǎn)生人才飽和,未來(lái)機(jī)器編程會(huì)取代程序員嗎?
“未來(lái)機(jī)器編程不僅不會(huì)取代程序員,還會(huì)創(chuàng)造出大量就業(yè)機(jī)會(huì),可能多達(dá)上百萬(wàn)個(gè)。這是由于機(jī)器編程大幅降低了編程門(mén)檻,可以讓更多的普通人參與編程,實(shí)現(xiàn)更多的自動(dòng)化工作流?!边h(yuǎn)望智庫(kù)AI事業(yè)部部長(zhǎng)、圖靈機(jī)器人首席戰(zhàn)略官譚茗洲表示。
英特爾有個(gè)愿景:只要你能以機(jī)器可理解的方式表達(dá)你的“意圖”——可能是用自然語(yǔ)言,或者可視化的圖表,甚至是打個(gè)手勢(shì)——機(jī)器編程就會(huì)幫你開(kāi)發(fā)屬于你自己的軟件。
對(duì)此,譚茗洲解釋道:“未來(lái)需要更有效的編程意圖概要設(shè)計(jì),把大的意圖拆解為更小的意圖,每個(gè)意圖更容易讓機(jī)器理解,進(jìn)而可以讓機(jī)器人工智能編寫(xiě)代碼。未來(lái)機(jī)器人工智能編程可能以一種交互式的方式進(jìn)行,如程序設(shè)計(jì)者通過(guò)與人工智能編程機(jī)器意圖交互和所見(jiàn)所得的反饋,實(shí)現(xiàn)機(jī)器編程。”
專(zhuān)家預(yù)測(cè),從當(dāng)前人工智能相關(guān)技術(shù)的發(fā)展來(lái)看,機(jī)器編程得到廣泛應(yīng)用可能仍然需要幾十年以上,因?yàn)閺V泛應(yīng)用意味著機(jī)器能更準(zhǔn)確地了解人類(lèi)的意圖,但是人類(lèi)自然語(yǔ)言的表達(dá)本身就會(huì)存在很多不確定性。因此機(jī)器編程也并不可能完全替代程序員,特別是在需要多重嵌套的邏輯和多分支的邏輯場(chǎng)景下,因?yàn)檫@些場(chǎng)景需要更確定性的邏輯分析,顯然對(duì)機(jī)器來(lái)說(shuō)是比較困難的。機(jī)器編程可能首先大規(guī)模應(yīng)用于整體邏輯能夠拆解為多個(gè)簡(jiǎn)單邏輯的場(chǎng)景,如工作流固定的場(chǎng)景或簡(jiǎn)單的計(jì)算場(chǎng)景,抑或是邏輯簡(jiǎn)單但精確性要求高的場(chǎng)景,如財(cái)會(huì)、醫(yī)療、金融等領(lǐng)域。
譚茗洲指出:“要想在人工智能時(shí)代做到人機(jī)共存,需順應(yīng)技術(shù)的發(fā)展趨勢(shì),讓機(jī)器去做其擅長(zhǎng)的部分,例如軟件開(kāi)發(fā)中,枯燥的活兒由機(jī)器承擔(dān),人們得以有更大的自由、靈活度以及更多的時(shí)間精力去創(chuàng)造,可以去從事設(shè)計(jì)和制造機(jī)器人的工作?!?/p>