11月,《時(shí)代周刊》將2020年最佳發(fā)明獎(jiǎng)給了兒童編程機(jī)器人Matatalab;12月4日,英特爾在其研究院開(kāi)放日上宣布將機(jī)器編程與集成光電、神經(jīng)擬態(tài)計(jì)算、量子計(jì)算等列為影響未來(lái)10年的顛覆性技術(shù);目前包括微軟、谷歌、Facebook等在內(nèi)的全球巨頭,都加入了機(jī)器編程的賽道。機(jī)器編程究竟是什么?它會(huì)在未來(lái)給我們的世界帶來(lái)顛覆性改變嗎?它會(huì)讓未來(lái)的程序員丟掉飯碗嗎?它與目前流行的低代碼開(kāi)發(fā)是不是一回事兒?
未來(lái)程序?qū)o(wú)處不在
如今IT業(yè)界赫赫有名的大佬很多是編程出身,包括微軟創(chuàng)始人比爾蓋茨、Facebook的創(chuàng)始人扎克伯格,也包括中國(guó)的諸多互聯(lián)網(wǎng)大佬——騰訊的馬化騰、百度的李彥宏、小米的雷軍、360的周鴻祎、微信之父張小龍、字節(jié)跳動(dòng)的張一鳴等,全都是寫(xiě)程序出身。這從另外一個(gè)角度佐證了編程是創(chuàng)富和改變世界的“神筆”這一說(shuō)法。
幾年前,微軟的聯(lián)合創(chuàng)始人保羅·艾倫在回憶起當(dāng)年寫(xiě)下的那幾行代碼時(shí)非常感慨:“沒(méi)想到那幾行代碼竟然帶領(lǐng)微軟公司走到了今天?!爆F(xiàn)在大部分人的電腦上都運(yùn)行著微軟的操作系統(tǒng),微軟也成了世界上市值最高的公司之一,深刻地影響了全世界。也是在不久前,騰訊公司展示了微信第一版的幾行代碼,就是這個(gè)程序,歷經(jīng)8年的成長(zhǎng),現(xiàn)在變成了影響幾億人生活、工作的重要工具。
編程對(duì)于這個(gè)世界的意義,當(dāng)然不僅僅是創(chuàng)造了一批赫赫有名的IT大佬,創(chuàng)造了微軟和騰訊。進(jìn)入軟件定義一切的時(shí)代,我們?cè)絹?lái)越相信這個(gè)世界是由軟件驅(qū)動(dòng)的,看看擁有代碼最多的公司竟然不是軟件巨頭微軟,而是飛機(jī)制造企業(yè)。看看從上天的飛機(jī)火箭到我們身邊的各種小物件,從報(bào)稅到買(mǎi)菜我們都離不開(kāi)軟件,從工廠到各個(gè)機(jī)構(gòu)都離不開(kāi)軟件的驅(qū)動(dòng),我們就能夠很好地理解為什么編程對(duì)這個(gè)世界舉足輕重了。
為什么需要機(jī)器編程?
我們?yōu)槭裁葱枰獧C(jī)器編程?一方面,會(huì)編程的技術(shù)人員依然太少。在全球78億人中,只有2700萬(wàn)人會(huì)編寫(xiě)代碼,占比不到1%。根據(jù)code.org的數(shù)據(jù),美國(guó)有50萬(wàn)個(gè)編程人員崗位空缺,歐盟目前只有10%的編程人員受過(guò)計(jì)算機(jī)科學(xué)專(zhuān)業(yè)訓(xùn)練。
另一方面,編程的門(mén)檻還是太高。要想開(kāi)發(fā)出高質(zhì)量的軟件依然非常困難,而且隨著異構(gòu)計(jì)算的發(fā)展,硬件環(huán)境變得越來(lái)越復(fù)雜,編程開(kāi)發(fā)難度進(jìn)一步變大。為什么996程序員們?cè)缭绲舭l(fā),為什么馬化騰早年編程會(huì)落下腰疾,說(shuō)明編程是一件非常折磨人的事情。
英特爾首席科學(xué)家Justin Gottschlich講了他媽媽的故事。他的母親是房地產(chǎn)行業(yè)的權(quán)威,對(duì)市場(chǎng)的理解敏銳且細(xì)致,她的決策需要基于一系列的因素進(jìn)行復(fù)雜的分析。但現(xiàn)有的工具不支持她所想表達(dá)的意圖,需要定制一種新的工具來(lái)支持其決策所需的精細(xì)度、精確度、微妙性。在沒(méi)有現(xiàn)成工具的情況下,她分別使用不同的工具,進(jìn)行數(shù)據(jù)收集、分析,經(jīng)過(guò)一個(gè)月之后,得出結(jié)論。但在她得出結(jié)論的時(shí)候,整個(gè)市場(chǎng)環(huán)境變化了、數(shù)據(jù)變化了,所有時(shí)間都浪費(fèi)掉了。事實(shí)上,這樣的事情不僅發(fā)生在Justin母親身上,在農(nóng)業(yè)、野生生物、建筑、醫(yī)療、金融分析等領(lǐng)域,很多專(zhuān)家清楚地知道自己想要軟件做什么,但這樣的軟件目前不存在,不足以表達(dá)他們的意圖。
那么,試想一下,如果人人都會(huì)編程,如果機(jī)器能夠聽(tīng)懂人的指令,能夠按照人的指令編程,那么世界將完全是另外一回事。如果完全實(shí)現(xiàn)了機(jī)器編程,那么每個(gè)人都能自由地表達(dá)創(chuàng)意,無(wú)需編寫(xiě)任何代碼就可以開(kāi)發(fā)屬于自己的軟件,我們進(jìn)入數(shù)據(jù)驅(qū)動(dòng)世界的步伐就會(huì)大大加快。
就像微軟亞洲研究院首席研究員樓建光在接受《中國(guó)電子報(bào)》記者采訪時(shí)所言,機(jī)器編程不僅僅是希望解放程序員,將程序員從低端的重復(fù)性開(kāi)發(fā)中解救出來(lái),將更多精力用在如何將程序邏輯設(shè)計(jì)得更高效上,更重要的是機(jī)器編程能夠加速AI在各個(gè)領(lǐng)域的落地。
“事實(shí)上機(jī)器編程是AI落地非常重要的一環(huán)。要把AI落地到每一個(gè)領(lǐng)域,需要將每一個(gè)領(lǐng)域的商業(yè)邏輯和人的決策指令自動(dòng)轉(zhuǎn)化為可操作的程序,由機(jī)器人來(lái)執(zhí)行。將行業(yè)規(guī)律變成邏輯語(yǔ)言,變成可操作的組合,其實(shí)就是程序。我們需要將大量的各行各業(yè)的商業(yè)流程和規(guī)律變成機(jī)器可識(shí)別的邏輯語(yǔ)言,這就是機(jī)器編程希望助力人們實(shí)現(xiàn)的事情?!睒墙ü獗硎荆绻麢C(jī)器編程成熟,將大大推進(jìn)AI在各個(gè)領(lǐng)域的應(yīng)用。
“機(jī)器編程將改變關(guān)于軟件創(chuàng)建的所有既定規(guī)則,最終賦能所有人創(chuàng)建軟件?!盝ustin說(shuō)。從這些角度來(lái)看,機(jī)器編程應(yīng)該是軟件定義時(shí)代的顛覆性技術(shù),將真正提速AI助力人類(lèi)的進(jìn)程。
那么機(jī)器編程會(huì)不會(huì)取代程序員,未來(lái)是不是程序員就會(huì)失業(yè)?答案是否定的,因?yàn)榫幊谈y的事情是在程序的邏輯設(shè)計(jì)上,而不是寫(xiě)代碼本身。所以寫(xiě)代碼的事情可以讓機(jī)器來(lái)完成,而讓編程人員做更高級(jí)的邏輯設(shè)計(jì),讓程序更高效。
談及機(jī)器編程,人們自然會(huì)想到目前熱門(mén)的低代碼開(kāi)發(fā)。樓建光認(rèn)為:“機(jī)器編程與目前流行的低代碼開(kāi)發(fā)完全不同,雖然兩者都有程序自動(dòng)生成的字樣,但機(jī)器編程與AI相關(guān),低代碼與傳統(tǒng)開(kāi)發(fā)更為接近,低代碼是通過(guò)自動(dòng)化根據(jù)模板生成的,是將常用的功能中間件化或者稱(chēng)之為中臺(tái)化、標(biāo)準(zhǔn)化,通過(guò)模塊化、標(biāo)準(zhǔn)化、可視化的技術(shù),將原來(lái)需要代碼完成的功能轉(zhuǎn)換成只要進(jìn)行簡(jiǎn)單的拖拽操作就能完成,從而實(shí)現(xiàn)自動(dòng)化?!?/p>
機(jī)器編程難在哪里?
“通過(guò)機(jī)器學(xué)習(xí)和其他自動(dòng)化方法,設(shè)計(jì)可以自動(dòng)編寫(xiě)軟件的軟件”的機(jī)器編程并非今天才有,上世紀(jì)50年代就已有學(xué)術(shù)機(jī)構(gòu)開(kāi)始涉足機(jī)器編程的研究。
但Justin Gottschlich說(shuō):“與以往不同,今日的機(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ī)器編程的要素?!?/p>
樓建光表達(dá)了與Justin Gottschlich一致的觀點(diǎn),因?yàn)闄C(jī)器學(xué)習(xí)算法的進(jìn)步,算力的高速發(fā)展以及海量的編程數(shù)據(jù),讓機(jī)器編程的發(fā)展進(jìn)入了新的拐點(diǎn)。不過(guò)樓建光認(rèn)為:“目前機(jī)器編程的發(fā)展尚在早期,機(jī)器編程的難點(diǎn)在于目前機(jī)器AI還沒(méi)有組合與泛化的能力,只是能夠進(jìn)行簡(jiǎn)單的編程,稍微長(zhǎng)一點(diǎn)的程序就無(wú)法完成?!睒墙ü膺M(jìn)一步解釋說(shuō),復(fù)雜程序是由簡(jiǎn)單程序組合而成的,而程序組合中有很多邏輯和思想,現(xiàn)在的AI沒(méi)有組合能力,缺乏邏輯思維。
Justin Gottschlich將機(jī)器編程的難點(diǎn)概述為三點(diǎn),也稱(chēng)之為三大支柱:意圖(Intention)、創(chuàng)造(Invention)和適應(yīng)(Adaptation),這三者,代表著從一個(gè)編程的想法到最后產(chǎn)生一個(gè)產(chǎn)品級(jí)代碼的過(guò)程。
英特爾中國(guó)研究院院長(zhǎng)宋繼強(qiáng)在接受《中國(guó)電子報(bào)》記者采訪時(shí)透露,自己也曾做過(guò)程序員,所以深知編程中的各種難題,他進(jìn)一步解釋了Justin談及的機(jī)器編程的三大支柱。
“意圖”指人類(lèi)向機(jī)器表達(dá)自己的想法。目前在這個(gè)維度的發(fā)展是通過(guò)自然語(yǔ)言的方式,而無(wú)需敲代碼,直接告訴機(jī)器你要做什么,機(jī)器通過(guò)自然語(yǔ)言便能夠了解。
“創(chuàng)造”是指機(jī)器以用戶的意圖為基礎(chǔ),然后合成一個(gè)高級(jí)程序,創(chuàng)造符合用戶意圖的程序、數(shù)據(jù)結(jié)構(gòu)和算法。這個(gè)過(guò)程需要生產(chǎn)一堆代碼,或在代碼庫(kù)中找出元素代碼,然后按照一定思想邏輯組合,目前這個(gè)維度仍有大量挑戰(zhàn)。這應(yīng)該就是樓建光談到機(jī)器尚無(wú)“組合能力”的部分。
“適應(yīng)”這一步需要將程序進(jìn)行更高級(jí)的轉(zhuǎn)換和優(yōu)化,以便在所處的軟件和硬件生態(tài)系統(tǒng)中以最高效率運(yùn)行,從而化解異構(gòu)硬件挑戰(zhàn)。
關(guān)于“適應(yīng)”,做過(guò)編程人員的宋繼強(qiáng)透露,事實(shí)上在編程過(guò)程中有一個(gè)非常重要的維度是針對(duì)不同的硬件環(huán)境進(jìn)行優(yōu)化,如果一個(gè)程序只是跑在CPU環(huán)境上效率很高,但當(dāng)它要跑在CPU+GPU或者云上時(shí),或許就會(huì)慢下來(lái),所以程序需要針對(duì)不同硬件環(huán)境進(jìn)行適應(yīng)。
“但是擅長(zhǎng)在CPU硬件上進(jìn)行程序優(yōu)化的人,可能在程序員里還不到10%,擅長(zhǎng)GPU優(yōu)化的也可能不到10%,但要想擅長(zhǎng)在CPU+GPU上進(jìn)行優(yōu)化的可能只有1%了,如果是CPU+GPU+ASIC上進(jìn)行優(yōu)化的,可能就是0了。”宋繼強(qiáng)表示,如果這些事情機(jī)器編程能夠?qū)崿F(xiàn),就可以大大加速高質(zhì)量程序的設(shè)計(jì)。
機(jī)器編程的發(fā)展尚在早期,讓AI學(xué)會(huì)寫(xiě)程序,是人們的普遍預(yù)期,從全球機(jī)器編程的進(jìn)展看,不同領(lǐng)域有不同進(jìn)展,在特定領(lǐng)域,已經(jīng)取得不錯(cuò)的突破。但在通用領(lǐng)域就像通用AI的發(fā)展一樣,尚未取得實(shí)質(zhì)性突破,仍需要產(chǎn)、學(xué)、研各界齊發(fā)力,加速機(jī)器編程的突破。
在這條加速AI學(xué)會(huì)編程的賽道上,目前正在涌入越來(lái)越多的公司。除了微軟、谷歌、臉書(shū)等,在中國(guó)包括百度以及一些創(chuàng)業(yè)公司也加入了機(jī)器編程的研發(fā)行列,不同的公司有不同的技術(shù)路線。據(jù)樓建光透露,微軟亞洲研究院在該領(lǐng)域的研究取得了很多實(shí)質(zhì)性的進(jìn)展,不但在深度學(xué)習(xí)模型的組合泛化能力方面做了深度探索,而且他們的從自然語(yǔ)言自動(dòng)生成SQL程序的技術(shù)也已經(jīng)實(shí)用,被集成到微軟的Excel產(chǎn)品中。
英特爾在不久前的研究院開(kāi)放日上,推出了機(jī)器編程研究系統(tǒng)ControlFlag,它可以自主檢測(cè)代碼中的錯(cuò)誤。目前該系統(tǒng)仍處于早期階段,這個(gè)自我監(jiān)督系統(tǒng)希望幫助軟件開(kāi)發(fā)者發(fā)現(xiàn)隱藏的bug。為什么英特爾選擇從檢測(cè)代碼bug的自動(dòng)化切入,宋繼強(qiáng)給出的答案是:“我自己做編程的時(shí)候,可能花在寫(xiě)程序上的時(shí)間只是30分鐘,而調(diào)試則需要2個(gè)小時(shí),所以調(diào)試檢測(cè)會(huì)占據(jù)程序員大量時(shí)間。如果這一步讓機(jī)器來(lái)完成,會(huì)大大提升編程的速度?!?/p>
現(xiàn)在看來(lái),讓AI編程只是在各個(gè)“點(diǎn)”有了突破,但就像萬(wàn)里長(zhǎng)征是一步步走出來(lái)的一樣,“不積跬步,無(wú)以至千里”,現(xiàn)在各公司的每一步探索,都會(huì)對(duì)未來(lái)機(jī)器編程產(chǎn)生深刻的影響。
責(zé)任編輯:tzh
-
微軟
+關(guān)注
關(guān)注
4文章
6554瀏覽量
103896 -
機(jī)器人
+關(guān)注
關(guān)注
210文章
28103瀏覽量
205852 -
AI
+關(guān)注
關(guān)注
87文章
29806瀏覽量
268106
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論