據科技日報報道,英特爾公司在2020年12月推出的機器編程研究系統ControlFlag是全球首個自我監控系統,可以自主檢測代碼中的錯誤,發現了許多過去被開發人員忽略的違規和異常。這是可以說是在2018年英特爾研究院和麻省理工學院聯合發布的《機器編程的三大支柱》論文中,首次提出“機器編程”后的一次有益嘗試。

什么是“機器編程”
“機器編程”顧名思義就是通過機器學習和其他自動化方法,設計可以自動編寫軟件的軟件,它涉及形式化方法、編程語言、編譯器、計算機系統等多個領域。雖然“機器編程”是現代提出的新詞匯,但是其概念早在上世紀50年代就產生了,稱為“程序合成”,是一種使用數學證明的非常形式化的方法,它采用某種形式的輸入,然后生成一個軟件。
而今“機器編程”概念提出的初衷,一方面是編程人才缺口巨大;據美國非盈利組織code.org的數據,美國有50萬個編程人員崗位空缺,歐盟目前只有10%的編程人員受過計算機科學專業訓練,全球 78 億人中,只有 2700 萬人會編寫代碼,占比不到 1%。另一方面是為了提高編程人員的工作效率;據2017 年劍橋大學開展的一項調查顯示:美國程序員平均花費 50% 的時間在 Debug 上,嚴重影響了工作效率。
“機器編程”讓程序員失業?
“機器編程”最大的愿景之一,就是降低編程門檻,讓全球會編程人員提升至100%。那是否意味著這一強大的功能,會導致程序員的失業?這也是英特爾首席科學家、英特爾研究院機器編程研究主任及創始人賈斯汀·戈茨利被問及最多的問題。
答案顯然是否定的,首先我們要了解“機器編程”主要實現方法,一種是依賴編程領域專家知識和已經設定好的模板庫,以滿足人們的編程意圖,但弊端也十分明顯,由于邏輯與語法的差異,需要足夠多的數據作為支撐,才能不斷發揮作用。另一種是利用機器學習進行自我監督去適應編程規則,讓機器通過海量給定的代碼學習正確的編程規則,常用于進行程序代碼測試。
所以賈斯汀認為機器編程如果成功,那未來只會創造數千萬甚至數億個就業機會,而非取代專業程序員使其失業。畢竟當今存在的機器編程系統都需要大量的數據作為支撐,只有高技能的程序員編寫的代碼越多、產出更多的數據,構建的機器編程系統才能越先進。其次在“機器編程”問世后,那些有著好的想法與構思,但編程技能會稍遜色的程序員,將借助“機器編程”系統把這些想法綜合起來變為軟件。
全民編程的時代何時來到
機器編程已經起步,那么全民編程的時代何時來到?賈斯汀認為機器編程正處于拐點,而拐點的來到基于三個進步:其一,算法的進步;其二,算力的進步;其三,數據。專家更預測從當前人工智能相關技術的發展來看,機器編程得到廣泛應用可能仍然需要幾十年以上,因為廣泛應用意味著機器能更準確地了解人類的意圖,但是人類自然語言的表達本身就存在很多不確定性。
無論機器編程何時能開始廣泛應用、全民編程時代何時來到,我們都需要保持學習、積極應對。畢竟機器編程對于編程從業者而言,雖然提高了程序員的工作效率,但也提出了更高的要求;對于非專業人員而言,雖然提供能將想法與構思軟件化的機會,但也建立于最基礎的編程知識之上。那么你準備好了嗎?