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