機器編程會讓程序員們丟掉飯碗嗎?

機器編程的發(fā)展尚在早期,讓AI學(xué)會寫程序,是人們的普遍預(yù)期,從全球機器編程的進展看,不同領(lǐng)域有不同進展,在特定領(lǐng)域,已經(jīng)取得不錯的突破。但在通用領(lǐng)域就像通用AI的發(fā)展一樣,尚未取得實質(zhì)性突破,仍需要產(chǎn)、學(xué)、研各界齊發(fā)力,加速機器編程的突破。

11月,《時代周刊》將2020年最佳發(fā)明獎給了兒童編程機器人Matatalab;12月4日,英特爾在其研究院開放日上宣布將機器編程與集成光電、神經(jīng)擬態(tài)計算、量子計算等列為影響未來10年的顛覆性技術(shù);目前包括微軟、谷歌、Facebook等在內(nèi)的全球巨頭,都加入了機器編程的賽道。機器編程究竟是什么?它會在未來給我們的世界帶來顛覆性改變嗎?它會讓未來的程序員丟掉飯碗嗎?它與目前流行的低代碼開發(fā)是不是一回事兒?

未來程序?qū)o處不在

如今IT業(yè)界赫赫有名的大佬很多是編程出身,包括微軟創(chuàng)始人比爾蓋茨、Facebook的創(chuàng)始人扎克伯格,也包括中國的諸多互聯(lián)網(wǎng)大佬——騰訊的馬化騰、百度的李彥宏、小米的雷軍、360的周鴻祎、微信之父張小龍、字節(jié)跳動的張一鳴等,全都是寫程序出身。這從另外一個角度佐證了編程是創(chuàng)富和改變世界的“神筆”這一說法。

幾年前,微軟的聯(lián)合創(chuàng)始人保羅·艾倫在回憶起當(dāng)年寫下的那幾行代碼時非常感慨:“沒想到那幾行代碼竟然帶領(lǐng)微軟公司走到了今天。”現(xiàn)在大部分人的電腦上都運行著微軟的操作系統(tǒng),微軟也成了世界上市值最高的公司之一,深刻地影響了全世界。也是在不久前,騰訊公司展示了微信第一版的幾行代碼,就是這個程序,歷經(jīng)8年的成長,現(xiàn)在變成了影響幾億人生活、工作的重要工具。

編程對于這個世界的意義,當(dāng)然不僅僅是創(chuàng)造了一批赫赫有名的IT大佬,創(chuàng)造了微軟和騰訊。進入軟件定義一切的時代,我們越來越相信這個世界是由軟件驅(qū)動的,看看擁有代碼最多的公司竟然不是軟件巨頭微軟,而是飛機制造企業(yè)??纯磸纳咸斓娘w機火箭到我們身邊的各種小物件,從報稅到買菜我們都離不開軟件,從工廠到各個機構(gòu)都離不開軟件的驅(qū)動,我們就能夠很好地理解為什么編程對這個世界舉足輕重了。

為什么需要機器編程?

我們?yōu)槭裁葱枰獧C器編程?一方面,會編程的技術(shù)人員依然太少。在全球78億人中,只有2700萬人會編寫代碼,占比不到1%。根據(jù)code.org的數(shù)據(jù),美國有50萬個編程人員崗位空缺,歐盟目前只有10%的編程人員受過計算機科學(xué)專業(yè)訓(xùn)練。

另一方面,編程的門檻還是太高。要想開發(fā)出高質(zhì)量的軟件依然非常困難,而且隨著異構(gòu)計算的發(fā)展,硬件環(huán)境變得越來越復(fù)雜,編程開發(fā)難度進一步變大。為什么996程序員們早早掉發(fā),為什么馬化騰早年編程會落下腰疾,說明編程是一件非常折磨人的事情。

英特爾首席科學(xué)家Justin Gottschlich講了他媽媽的故事。他的母親是房地產(chǎn)行業(yè)的權(quán)威,對市場的理解敏銳且細致,她的決策需要基于一系列的因素進行復(fù)雜的分析。但現(xiàn)有的工具不支持她所想表達的意圖,需要定制一種新的工具來支持其決策所需的精細度、精確度、微妙性。在沒有現(xiàn)成工具的情況下,她分別使用不同的工具,進行數(shù)據(jù)收集、分析,經(jīng)過一個月之后,得出結(jié)論。但在她得出結(jié)論的時候,整個市場環(huán)境變化了、數(shù)據(jù)變化了,所有時間都浪費掉了。事實上,這樣的事情不僅發(fā)生在Justin母親身上,在農(nóng)業(yè)、野生生物、建筑、醫(yī)療、金融分析等領(lǐng)域,很多專家清楚地知道自己想要軟件做什么,但這樣的軟件目前不存在,不足以表達他們的意圖。

那么,試想一下,如果人人都會編程,如果機器能夠聽懂人的指令,能夠按照人的指令編程,那么世界將完全是另外一回事。如果完全實現(xiàn)了機器編程,那么每個人都能自由地表達創(chuàng)意,無需編寫任何代碼就可以開發(fā)屬于自己的軟件,我們進入數(shù)據(jù)驅(qū)動世界的步伐就會大大加快。

就像微軟亞洲研究院首席研究員樓建光在接受《中國電子報》記者采訪時所言,機器編程不僅僅是希望解放程序員,將程序員從低端的重復(fù)性開發(fā)中解救出來,將更多精力用在如何將程序邏輯設(shè)計得更高效上,更重要的是機器編程能夠加速AI在各個領(lǐng)域的落地。

“事實上機器編程是AI落地非常重要的一環(huán)。要把AI落地到每一個領(lǐng)域,需要將每一個領(lǐng)域的商業(yè)邏輯和人的決策指令自動轉(zhuǎn)化為可操作的程序,由機器人來執(zhí)行。將行業(yè)規(guī)律變成邏輯語言,變成可操作的組合,其實就是程序。我們需要將大量的各行各業(yè)的商業(yè)流程和規(guī)律變成機器可識別的邏輯語言,這就是機器編程希望助力人們實現(xiàn)的事情。”樓建光表示,如果機器編程成熟,將大大推進AI在各個領(lǐng)域的應(yīng)用。

“機器編程將改變關(guān)于軟件創(chuàng)建的所有既定規(guī)則,最終賦能所有人創(chuàng)建軟件。”Justin說。從這些角度來看,機器編程應(yīng)該是軟件定義時代的顛覆性技術(shù),將真正提速AI助力人類的進程。

那么機器編程會不會取代程序員,未來是不是程序員就會失業(yè)?答案是否定的,因為編程更難的事情是在程序的邏輯設(shè)計上,而不是寫代碼本身。所以寫代碼的事情可以讓機器來完成,而讓編程人員做更高級的邏輯設(shè)計,讓程序更高效。

談及機器編程,人們自然會想到目前熱門的低代碼開發(fā)。樓建光認(rèn)為:“機器編程與目前流行的低代碼開發(fā)完全不同,雖然兩者都有程序自動生成的字樣,但機器編程與AI相關(guān),低代碼與傳統(tǒng)開發(fā)更為接近,低代碼是通過自動化根據(jù)模板生成的,是將常用的功能中間件化或者稱之為中臺化、標(biāo)準(zhǔn)化,通過模塊化、標(biāo)準(zhǔn)化、可視化的技術(shù),將原來需要代碼完成的功能轉(zhuǎn)換成只要進行簡單的拖拽操作就能完成,從而實現(xiàn)自動化。”

機器編程難在哪里?

“通過機器學(xué)習(xí)和其他自動化方法,設(shè)計可以自動編寫軟件的軟件”的機器編程并非今天才有,上世紀(jì)50年代就已有學(xué)術(shù)機構(gòu)開始涉足機器編程的研究。

但Justin Gottschlich說:“與以往不同,今日的機器編程融合了機器學(xué)習(xí)、形式化方法、編程語言、編譯器、計算機系統(tǒng)等多個領(lǐng)域。它所使用的自動編程技術(shù),既包含精確方法(比如形式程序合成),也有概率方法(比如可微分編程)。機器編程汲取了我們迄今為止獲得的所有軟硬件知識,站在了歷史的拐點上。新的機器學(xué)習(xí)算法、新硬件與優(yōu)化硬件、海量而多樣的編程數(shù)據(jù),這三者是發(fā)展機器編程的要素。”

樓建光表達了與Justin Gottschlich一致的觀點,因為機器學(xué)習(xí)算法的進步,算力的高速發(fā)展以及海量的編程數(shù)據(jù),讓機器編程的發(fā)展進入了新的拐點。不過樓建光認(rèn)為:“目前機器編程的發(fā)展尚在早期,機器編程的難點在于目前機器AI還沒有組合與泛化的能力,只是能夠進行簡單的編程,稍微長一點的程序就無法完成。”樓建光進一步解釋說,復(fù)雜程序是由簡單程序組合而成的,而程序組合中有很多邏輯和思想,現(xiàn)在的AI沒有組合能力,缺乏邏輯思維。

Justin Gottschlich將機器編程的難點概述為三點,也稱之為三大支柱:意圖(Intention)、創(chuàng)造(Invention)和適應(yīng)(Adaptation),這三者,代表著從一個編程的想法到最后產(chǎn)生一個產(chǎn)品級代碼的過程。

英特爾中國研究院院長宋繼強在接受《中國電子報》記者采訪時透露,自己也曾做過程序員,所以深知編程中的各種難題,他進一步解釋了Justin談及的機器編程的三大支柱。

“意圖”指人類向機器表達自己的想法。目前在這個維度的發(fā)展是通過自然語言的方式,而無需敲代碼,直接告訴機器你要做什么,機器通過自然語言便能夠了解。

“創(chuàng)造”是指機器以用戶的意圖為基礎(chǔ),然后合成一個高級程序,創(chuàng)造符合用戶意圖的程序、數(shù)據(jù)結(jié)構(gòu)和算法。這個過程需要生產(chǎn)一堆代碼,或在代碼庫中找出元素代碼,然后按照一定思想邏輯組合,目前這個維度仍有大量挑戰(zhàn)。這應(yīng)該就是樓建光談到機器尚無“組合能力”的部分。

“適應(yīng)”這一步需要將程序進行更高級的轉(zhuǎn)換和優(yōu)化,以便在所處的軟件和硬件生態(tài)系統(tǒng)中以最高效率運行,從而化解異構(gòu)硬件挑戰(zhàn)。

關(guān)于“適應(yīng)”,做過編程人員的宋繼強透露,事實上在編程過程中有一個非常重要的維度是針對不同的硬件環(huán)境進行優(yōu)化,如果一個程序只是跑在CPU環(huán)境上效率很高,但當(dāng)它要跑在CPU+GPU或者云上時,或許就會慢下來,所以程序需要針對不同硬件環(huán)境進行適應(yīng)。

“但是擅長在CPU硬件上進行程序優(yōu)化的人,可能在程序員里還不到10%,擅長GPU優(yōu)化的也可能不到10%,但要想擅長在CPU+GPU上進行優(yōu)化的可能只有1%了,如果是CPU+GPU+ASIC上進行優(yōu)化的,可能就是0了。”宋繼強表示,如果這些事情機器編程能夠?qū)崿F(xiàn),就可以大大加速高質(zhì)量程序的設(shè)計。

機器編程的發(fā)展尚在早期,讓AI學(xué)會寫程序,是人們的普遍預(yù)期,從全球機器編程的進展看,不同領(lǐng)域有不同進展,在特定領(lǐng)域,已經(jīng)取得不錯的突破。但在通用領(lǐng)域就像通用AI的發(fā)展一樣,尚未取得實質(zhì)性突破,仍需要產(chǎn)、學(xué)、研各界齊發(fā)力,加速機器編程的突破。

在這條加速AI學(xué)會編程的賽道上,目前正在涌入越來越多的公司。除了微軟、谷歌、臉書等,在中國包括百度以及一些創(chuàng)業(yè)公司也加入了機器編程的研發(fā)行列,不同的公司有不同的技術(shù)路線。據(jù)樓建光透露,微軟亞洲研究院在該領(lǐng)域的研究取得了很多實質(zhì)性的進展,不但在深度學(xué)習(xí)模型的組合泛化能力方面做了深度探索,而且他們的從自然語言自動生成SQL程序的技術(shù)也已經(jīng)實用,被集成到微軟的Excel產(chǎn)品中。

英特爾在不久前的研究院開放日上,推出了機器編程研究系統(tǒng)ControlFlag,它可以自主檢測代碼中的錯誤。目前該系統(tǒng)仍處于早期階段,這個自我監(jiān)督系統(tǒng)希望幫助軟件開發(fā)者發(fā)現(xiàn)隱藏的bug。為什么英特爾選擇從檢測代碼bug的自動化切入,宋繼強給出的答案是:“我自己做編程的時候,可能花在寫程序上的時間只是30分鐘,而調(diào)試則需要2個小時,所以調(diào)試檢測會占據(jù)程序員大量時間。如果這一步讓機器來完成,會大大提升編程的速度。”

現(xiàn)在看來,讓AI編程只是在各個“點”有了突破,但就像萬里長征是一步步走出來的一樣,“不積跬步,無以至千里”,現(xiàn)在各公司的每一步探索,都會對未來機器編程產(chǎn)生深刻的影響。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論