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