2700萬程序員要失業(yè)?機器編程要讓全球78億人都能寫代碼
本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請至雷鋒網(wǎng)官網(wǎng)申請授權(quán)。
數(shù)據(jù)顯示,全球78億人中,只有2700萬人會編寫代碼,占比不到1%。不過,機器編程想讓另外99%的人也能編寫代碼。這聽起來很科幻,但英特爾在機器編程領域的進展讓我們相信讓100%的人都能寫代碼并非觸不可及。
英特爾的ControlFlag系統(tǒng)是全球首個自我監(jiān)控系統(tǒng),不需要標記數(shù)據(jù)就能學習,通過學習超過十億行代碼,可以自主檢測代碼中的錯誤,發(fā)現(xiàn)了許多過去被開發(fā)人員忽略的違規(guī)和異常。
機器編程到底要做什么?為什么全員都能編程后程序員不會失業(yè)?
什么是機器編程?
機器編程并非近來提出的全新概念,在20世紀50年代時它被稱為“程序合成”,程序合成是一種使用數(shù)學證明的非常形式化的方法,它采用某種形式的輸入,然后生成一個軟件。
實際上,機器編程是構(gòu)建系統(tǒng),然后由系統(tǒng)自動構(gòu)建軟件系統(tǒng),硬件系統(tǒng)也隨之構(gòu)建起來。顯然,自動生成軟件是機器編程的核心重點,其核心原則是,人類向機器表達他(她)的意圖,機器會自動創(chuàng)建完成該意圖所需的所有軟件。
研究機器編程是為了替代程序員嗎?答案當然是否定的。英特爾高級院士、副總裁、英特爾研究院院長Rich Uhlig在2020英特爾研究院開放日上表示:“關于編程,我們看到了兩種對立的趨勢。一方面,計算資源變得越來越異構(gòu),需要了解硬件以及如何最大限度使用硬件的專家級程序員。另一方面,軟件開發(fā)人員越來越青睞于使用更抽象的語言,以提高工作效率,但這會導致硬件難以發(fā)揮出它本身的性能。”
“研究當前的軟件是如何開發(fā)的,考慮異構(gòu)硬件的未來,可以得出一個強有力的結(jié)論,那就是當前開發(fā)軟件的方式不會可維持地繼續(xù)向前發(fā)展。”英特爾首席科學家、英特爾研究院機器編程研究主任及創(chuàng)始人Justin Gottschlich認為,“我們對程序員的要求過高。”
用一個非常形象的比喻來解釋軟件開發(fā)需要的準備工作,想象你是一位技藝高超的畫家,但在畫畫之前,需要制作畫筆、畫布、畫框、畫架、顏料。“有多少畫家能做到這些?我認為這樣的畫家很少,甚至沒有,編程的門檻過高導致許多天才被埋沒。“Justin認為。
他舉了個例子,一名房地產(chǎn)行業(yè)的權(quán)威,對市場的理解敏銳又細致,但現(xiàn)有的工具不能幫助她制定房地產(chǎn)決策,于是只能分開使用每一種工具,慢慢收集數(shù)據(jù)。但只要在她決策之前市場發(fā)生變化,之前的工作就需要重新開始,時間也被浪費。
不僅僅是需要精細度、精確性的地產(chǎn)行業(yè),農(nóng)業(yè)、生物、建筑、醫(yī)療、金融領域的專家也希望能夠向機器表達他們的意圖,機器能夠構(gòu)建相應的軟件實現(xiàn)他們的意圖。
這也是機器編程的概念以及人們?yōu)槭裁葱枰獧C器編程。
如何實現(xiàn)機器編程?
英特爾研究院和麻省理工學院的教授團隊合作撰寫的題為《機器編程的三大支柱》的論文指出,意圖(Intention)、創(chuàng)造(Invention)和適應(Adaption)是機器編程的三大支柱。
簡而言之,“意圖”是人類向機器表達自己想法的能力,表達出來后機器就可以“創(chuàng)造”,之后繼續(xù)根據(jù)用戶指定的意圖,構(gòu)造更高級的程序表達。在構(gòu)造了更高級的表達后,“適應系統(tǒng)”會對這個更高階的程序進行轉(zhuǎn)換,化解異構(gòu)硬件挑戰(zhàn)。
要實現(xiàn)這個長期的愿景,需要先邁出關鍵一步。Justin說:“要讓機器編程同時從兩個方向為開發(fā)人員提供幫助。首先是提高編碼員和非編碼員的工作效率。其次是確保機器編程系統(tǒng)生成的是高質(zhì)量、快速、安全的代碼。”
基于兩個核心價值,機器編程關鍵的第一步是改進軟件調(diào)試(Debug)。軟件Debug本質(zhì)上是識別、分析和糾正軟件缺陷的過程,讓軟件變得更強大和可靠。根據(jù)2017 年劍橋大學開展的一項調(diào)查,美國程序員Debug的時間平均花費占到整個開發(fā)周期的一半。
這明確了兩個問題,程序員的開發(fā)的軟件質(zhì)量不合格,同時Debug嚴重影響了程序員的工作效率。據(jù)悉,英特爾研究院開發(fā)的機器編程系統(tǒng)可以將程序員的工作效率提高2倍。
利用《診斷軟件性能回歸的零正學習方法》提出的一種在高性能計算代碼中,自動進行回歸測試(由新代碼簽入引起的錯誤)的方法AutoPerf,在運行代碼時只利用名義訓練數(shù)據(jù)和硬件性能計數(shù)器,英特爾的系統(tǒng)證明AutoPerf可以檢測到并行編程中一些最復雜的性能bug。更重要的是,這個系統(tǒng)可以自動將測試應用于不同的硬件架構(gòu)上,解決了硬件異構(gòu)帶來的軟件編程復雜性大幅提升的挑戰(zhàn)。這個系統(tǒng)的研究成果已經(jīng)在去年的機器學習頂級研究會議NeurIPS上發(fā)布。
英特爾的另一個機器編程系統(tǒng)就是文章開篇提到的ControlFlag系統(tǒng),可以在無人監(jiān)督的情況下查找不限于性能的漏洞。
“ControlFlag可以在沒有任何人類生成的數(shù)據(jù)標簽下學習,非常讓我興奮的是,這個系統(tǒng)最近突破了從超過10億行代碼中學習的極限。”Justin說:“它能夠發(fā)現(xiàn)一些高度復雜的細微漏洞,其中有些漏洞十多年來一直被開發(fā)人員所忽略。每次我們添加更多數(shù)據(jù),它似乎都能學到以前沒有觀察到的新事物。”
雷鋒網(wǎng)了解到,ControlFlag更多研究成果將會在今年的NeurIPS上展示。
Jestin介紹,機器編程主要有兩種方法,一種是形式化方法,一種是隨機方法,目前業(yè)界更重視隨機的方法。英特爾的不同在于融合了兩種算法,并且在許多案例中實現(xiàn)了超過千倍的成績。比如在改進軟件開發(fā)時序質(zhì)量(Temporal qualities),也就是開發(fā)軟件的時間減少到千分之一,這就有可能讓現(xiàn)在需要花三年開發(fā)的軟件,借助機器編程只需要花費一天就可以完成同樣的軟件。
“在某些例子中,可以說是近乎無限的改進。因為構(gòu)建某些東西需要一定的時間,然后我們把這個數(shù)字降為零。”Justin進一步指出。
機器編程會替代程序員嗎?
程序能夠自動化的高效構(gòu)建,意味著程序員要失業(yè)了嗎?Justin的觀點是,如果機器編程成功,其真正過人之處是創(chuàng)造數(shù)千萬到數(shù)億個就業(yè)機會,為全新類型的程序員有非常大的創(chuàng)造平臺,專業(yè)程序員也不會被替代。
原因很簡單,首先,現(xiàn)存在的大多數(shù)機器編程系統(tǒng)都需要大量數(shù)據(jù),這些數(shù)據(jù)通常是代碼的形式存在,而代碼是由專業(yè)程序員編寫,自動化將會對高技能程序員的需求將會增加,因為專業(yè)程序員寫的代碼越多,構(gòu)建的機器編程系統(tǒng)就越先進。
更重要的是,如果意圖系統(tǒng)成功,將降低編程的準入門檻。這樣一來,只要他們有批判性思考的能力,就可以表達其想法,軟件就能幫助他實現(xiàn),就像前面提到的房產(chǎn)權(quán)威的例子。
接下來的問題就是機器編程何時會被大量應用。Justin認為得益于算法、算力和數(shù)據(jù)的提升,機器編程正處于拐點。
據(jù)悉,許多機器編程的研究成果都出自英特爾2017年成立的機器編程中心卡帕研究中心(Kappa Research Center)。并且,英特爾發(fā)布了開源技術和出版物,推動機器編程的進一步發(fā)展以及與合伙伙伴的合作。英特爾還創(chuàng)立了叫做“機器編程研討會”,也稱MAPS,參會人數(shù)已經(jīng)從四年前的20人增加到了去年差不多400人。
Justin透露,2021年英特爾還將建立一個新的機器編程中心,英特爾也會建立更廣泛的合作。
不過,無論是在硬件還是軟件領域,想要實現(xiàn)1000倍的提升僅靠單一技術是不夠的。Rich說:“英特爾的目標是讓每個人都能獲得百億億次級計算,英特爾研究院正在實現(xiàn)這一目標。為了實現(xiàn)目標,必須改變思考方式,將各領域?qū)<揖奂谝黄?,合作探索科學和技術知識的交叉領域。我們選擇了集成光電、神經(jīng)擬態(tài)計算、量子計算、保密計算、機器編程這五個領域。我們認為這五個領域能夠真正大規(guī)模釋放數(shù)據(jù)價值,并且變革人們與數(shù)據(jù)互動的方式。”
比如機器編程和神經(jīng)擬態(tài)的交叉研究,Justin認為,“機器編程可以幫助神經(jīng)擬態(tài)計算,以非傳統(tǒng)的編程角度進入該架構(gòu)。今天使用的機器編程的很多技術,是基于各種機器學習類型的系統(tǒng)。我特別感興趣的是,我們是否可以運用神經(jīng)擬態(tài)計算,探索機器編程的創(chuàng)造性和適應性系統(tǒng),目前我們還沒有探索到。”
最后,引用Justin的一句話:“對于顛覆性的技術,需要‘理性的自由’,要花時間深入挖掘把事情做好,如果做事急躁,在設計和方法上妥協(xié),可能會獲得短期收益,但系統(tǒng)長期的生命力會下降。”