機(jī)器編程駕到 未來(lái)全球78億人都能寫(xiě)代碼?

2021-01-04 11:08:38

  

  1%

據(jù)統(tǒng)計(jì),全球78億人中,只有2700萬(wàn)人會(huì)編寫(xiě)代碼,占比不到1%。美國(guó)有50萬(wàn)個(gè)編程人員崗位空缺,歐盟目前只有10%的編程人員受過(guò)計(jì)算機(jī)科學(xué)專業(yè)訓(xùn)練。

據(jù)報(bào)道,英特爾公司在2020年12月推出的機(jī)器編程研究系統(tǒng)ControlFlag是全球首個(gè)自我監(jiān)控系統(tǒng),不需要標(biāo)記數(shù)據(jù)就能學(xué)習(xí)。在初步測(cè)試中,這個(gè)系統(tǒng)利用超過(guò)10億行未標(biāo)記的產(chǎn)品級(jí)別代碼進(jìn)行訓(xùn)練,還可以自主檢測(cè)代碼中的錯(cuò)誤,發(fā)現(xiàn)了許多過(guò)去被開(kāi)發(fā)人員忽略的違規(guī)和異常。

英特爾首席科學(xué)家、英特爾研究院機(jī)器編程研究主任及創(chuàng)始人賈斯汀·戈茨利希認(rèn)為,這款軟件能夠“大幅減少評(píng)估和Debug(修補(bǔ)漏洞)所需的時(shí)間和成本”。 英特爾研究院的研究人員發(fā)現(xiàn),軟件開(kāi)發(fā)者會(huì)花費(fèi)大約一半的時(shí)間用來(lái)Debug,通過(guò)ControlFlag以及類似的系統(tǒng),程序員有望大幅減少Debug的時(shí)間并把更多時(shí)間用于人類程序員最擅長(zhǎng)的工作。

機(jī)器編程的實(shí)質(zhì)究竟是搬運(yùn)代碼模型,還是具有一定的自主開(kāi)發(fā)特征?目前機(jī)器編程的主要方法有哪些,效能如何,具備怎樣的優(yōu)勢(shì)?為什么有專家認(rèn)為機(jī)器編程不僅不會(huì)取代程序員,還會(huì)創(chuàng)造出大量就業(yè)機(jī)會(huì)?

  機(jī)器編程讓代碼不再是“手工藝品”

快速發(fā)展的科技領(lǐng)域幾乎離不開(kāi)編程。傳統(tǒng)編程看似簡(jiǎn)單,其實(shí)對(duì)操作者的要求很高。盡管大多數(shù)人可以熟練使用自然語(yǔ)言表達(dá)自己的想法,但是讓所有人都去學(xué)習(xí)編程卻并不是件容易事,這需要人的邏輯思維和對(duì)底層原理的理解作為支撐。

據(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é)專業(yè)訓(xùn)練。

“如同好的作家不一定是好的編劇,作家描寫(xiě)人的內(nèi)心活動(dòng)可以用‘心如刀絞’這類語(yǔ)言進(jìn)行描述,但是編劇需要通過(guò)場(chǎng)景搭建和細(xì)節(jié)設(shè)置把這種情緒細(xì)致地表現(xiàn)出來(lái),演員才能沿著這個(gè)邏輯栩栩如生地表演出來(lái)。”西安電子科技大學(xué)電子工程學(xué)院教授吳家驥介紹說(shuō),好的程序員就如同代碼“編劇”,往往需要通過(guò)長(zhǎng)時(shí)間學(xué)習(xí)和實(shí)踐才能掌握編程的基本規(guī)則。

傳統(tǒng)編程是基于計(jì)算機(jī)語(yǔ)言規(guī)則和邏輯,利用規(guī)范化的編程語(yǔ)言,把人的意圖在計(jì)算機(jī)世界里實(shí)現(xiàn)的過(guò)程,程序員就像傳統(tǒng)工廠流水線上的員工一樣,只需按照定義好的標(biāo)準(zhǔn)接口和編程規(guī)范,把需求意圖拆解為正確的邏輯,用代碼寫(xiě)出來(lái)。

然而,在軟件飛速發(fā)展的今天,軟件的開(kāi)發(fā)和維護(hù)卻依然是既耗時(shí)又容易出錯(cuò)的工作。賈斯汀·戈茨利希認(rèn)為,這從軟件誕生之日就困擾著一代又一代程序員的問(wèn)題其實(shí)并非無(wú)解,他認(rèn)為:“我們能創(chuàng)造一個(gè)人人都是軟件開(kāi)發(fā)者的社會(huì),屆時(shí)機(jī)器將會(huì)承擔(dān)編程部分的工作即機(jī)器編程,讓代碼不再是‘手工藝品’。”

吳家驥向記者介紹,所謂機(jī)器編程,就是通過(guò)機(jī)器學(xué)習(xí)和其他自動(dòng)化方法,設(shè)計(jì)可以自動(dòng)編寫(xiě)軟件的軟件,它涉及形式化方法、編程語(yǔ)言、編譯器、計(jì)算機(jī)系統(tǒng)等多個(gè)領(lǐng)域。機(jī)器編程所使用的自動(dòng)編程技術(shù)既有精確方法(比如形式程序合成),也有概率方法(比如可微分編程)。

“人類的編程過(guò)程側(cè)重于邏輯業(yè)務(wù),很少關(guān)心編程的語(yǔ)法、格式等。而機(jī)器編程實(shí)質(zhì)是搬運(yùn)代碼模型,因?yàn)槟壳斑€沒(méi)有成熟的編程機(jī)器可以達(dá)到自主開(kāi)發(fā)軟件的程度,包括英特爾最新提出的ControlFlag。”吳家驥指出。

  有助于大幅降低開(kāi)發(fā)和維護(hù)成本

其實(shí)機(jī)器編程并非新生事物,早在上世紀(jì)50年代,就已經(jīng)有學(xué)術(shù)機(jī)構(gòu)開(kāi)始涉足機(jī)器編程的研究。

在賈斯汀·戈茨利??磥?lái),當(dāng)下正是發(fā)展機(jī)器編程的好時(shí)機(jī)。“機(jī)器編程汲取了我們迄今為止獲得的所有軟硬件知識(shí)。今日與往時(shí)不同的是,我們站在了歷史的拐點(diǎn)上,我們現(xiàn)在有新的機(jī)器學(xué)習(xí)算法、新硬件與優(yōu)化硬件、海量而多樣的編程數(shù)據(jù),而這三者是發(fā)展機(jī)器編程的必備要素。”

目前機(jī)器編程的效能如何,具備怎樣的優(yōu)勢(shì)?吳家驥介紹說(shuō),有了機(jī)器編程,軟件的開(kāi)發(fā)和維護(hù)將有望實(shí)現(xiàn)完全自動(dòng)化,編程人才的缺口、編程精確度有待提升等問(wèn)題也迎刃而解。

據(jù)了解,機(jī)器編程的方法主要分為兩種:一種需要依賴編程領(lǐng)域?qū)<抑R(shí)和已經(jīng)設(shè)定好的模板庫(kù),即編程機(jī)器把專家制定的規(guī)則和大量模板庫(kù)組合起來(lái),進(jìn)而滿足人們的編程意圖。但其問(wèn)題在于,專家的知識(shí)儲(chǔ)備和模板庫(kù)需要不斷積累更新。此外,編程中存在很復(fù)雜的邏輯和多樣化的語(yǔ)法差異,僅靠少數(shù)專家很難做到全面掌握所有信息,其制定的規(guī)則也無(wú)法做到近乎完美。

第二種是利用機(jī)器學(xué)習(xí)進(jìn)行自我監(jiān)督去適應(yīng)編程規(guī)則,讓機(jī)器通過(guò)海量給定的代碼學(xué)習(xí)正確的編程規(guī)則,常用于進(jìn)行程序代碼測(cè)試。這種方式包括兩個(gè)階段:模式挖掘階段,主要學(xué)習(xí)用戶指定的GitHub(一家開(kāi)源平臺(tái))存儲(chǔ)庫(kù)中的特殊編碼模式,當(dāng)學(xué)習(xí)完成時(shí),該模式將生成一個(gè)優(yōu)先級(jí)字典,為后續(xù)機(jī)器編程提供知識(shí)儲(chǔ)備;掃描階段,主要是根據(jù)所學(xué)的特異性模式字典分析給定的源代碼存儲(chǔ)庫(kù),當(dāng)識(shí)別到異常模式時(shí),將發(fā)出報(bào)警信息并為用戶提供可能的替代方案或進(jìn)行自動(dòng)校正。

“利用自我學(xué)習(xí)的方法可提高機(jī)器編程效率,這是由于自監(jiān)督學(xué)習(xí)可以不斷自我完善自我進(jìn)化,使得機(jī)器越來(lái)越聰明——在編程時(shí)可以快速把人類意圖或自然語(yǔ)言轉(zhuǎn)變?yōu)榫幊陶Z(yǔ)言,在代碼調(diào)試過(guò)程中可以智能地提示錯(cuò)誤。”吳家驥指出,機(jī)器編程的快速發(fā)展將有望大幅提高軟件開(kāi)發(fā)和維護(hù)的效率,同時(shí)可以有效降低成本。

據(jù)統(tǒng)計(jì),全球IT行業(yè)每年花費(fèi)的1.25萬(wàn)億美元軟件開(kāi)發(fā)成本中,大約有50%用于Debug。目前,ControlFlag已經(jīng)證實(shí)了其可以在廣泛使用的產(chǎn)品級(jí)代碼中發(fā)現(xiàn)隱藏的bug(漏洞),比如在分析cURL(程序員廣泛使用的實(shí)現(xiàn)互聯(lián)網(wǎng)下載的開(kāi)源命令行工具)時(shí),ControlFlag發(fā)現(xiàn)了一個(gè)以前沒(méi)有發(fā)現(xiàn)的異常,促使cURL開(kāi)發(fā)者提出了更好的解決方案。

  為人類程序員省出時(shí)間去創(chuàng)造

程序能夠自動(dòng)化的高效構(gòu)建,意味著程序員要失業(yè)了嗎?賈斯汀·戈茨利希的觀點(diǎn)是,機(jī)器編程真正過(guò)人之處是創(chuàng)造數(shù)千萬(wàn)到數(shù)億個(gè)就業(yè)機(jī)會(huì),并且專業(yè)程序員也不會(huì)被替代。

“未來(lái)機(jī)器編程不僅不會(huì)取代程序員,還會(huì)創(chuàng)造出大量就業(yè)機(jī)會(huì),可能多達(dá)上百萬(wàn)個(gè)。這是由于機(jī)器編程實(shí)質(zhì)上大幅度降低了編程門檻,就如同電腦上的很多操作工具,它們的出現(xiàn)提高了人類的工作效率,可以讓更多的普通人參與到編程中,實(shí)現(xiàn)更多的工作流,即業(yè)務(wù)過(guò)程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化。”遠(yuǎn)望智庫(kù)AI事業(yè)部部長(zhǎng)、圖靈機(jī)器人首席戰(zhàn)略官譚茗洲說(shuō)。

英特爾公司曾表示,其開(kāi)發(fā)機(jī)器編程的愿景是:只要你能以機(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)行,通過(guò)多輪對(duì)話以交互形式構(gòu)造編程環(huán)境。”

專家預(yù)測(cè),從當(dāng)前人工智能相關(guān)技術(shù)的發(fā)展來(lái)看,機(jī)器編程得到廣泛應(yīng)用可能仍然需要幾十年以上,因?yàn)閺V泛應(yīng)用意味著機(jī)器能更準(zhǔn)確地了解人類的意圖,但是人類自然語(yǔ)言的表達(dá)本身就存在很多不確定性。因此機(jī)器編程不可能完全替代人類程序員,特別是在需要多重嵌套的邏輯和多分支的邏輯場(chǎng)景下,這些場(chǎng)景需要確定性更強(qiáng)的邏輯分析,顯然這對(duì)機(jī)器來(lái)說(shuō)是比較困難的。

譚茗洲指出,機(jī)器編程可能會(huì)首先大規(guī)模應(yīng)用于整體邏輯能夠拆解為多個(gè)簡(jiǎn)單邏輯的場(chǎng)景,如工作流固定的場(chǎng)景或簡(jiǎn)單的計(jì)算場(chǎng)景;亦或邏輯簡(jiǎn)單但精確性要求高的場(chǎng)景,如財(cái)會(huì)、醫(yī)療、金融等。

“要想在人工智能時(shí)代做到‘人機(jī)共存’,需順應(yīng)技術(shù)的發(fā)展趨勢(shì),讓機(jī)器去做其擅長(zhǎng)的部分,例如軟件開(kāi)發(fā)中,簡(jiǎn)單枯燥的部分由機(jī)器承擔(dān),而人類程序員則可以有更大的自由度、靈活度、時(shí)間和精力去創(chuàng)造。”譚茗洲說(shuō)。

掃一掃分享本頁(yè)