前段時間,英特爾公司推出了機器編程研究系統ControlFlag,這是全球首個自我監控系統,可以自主檢測代碼中的錯誤,目前仍處于早期階段。在初步測試中,這個系統利用超過10億行未標記的產品級別代碼進行訓練并學習新的缺陷。英特爾首席科學家表示,這款工具可以大幅減少測試和修復bug 所需的時間和成本。
那么,機器編程究竟是什么?它目前發展如何,會在未來給世界帶來怎樣的改變?它會讓未來的程序員丟掉飯碗嗎?
如今,幾乎各個行業都離不開編程。傳統編程看似簡單,其實對人的要求很高。盡管大多數人可以熟練使用自然語言表達自己的想法,但是讓其去編程卻不是很容易,那需要思想和底層原理支撐。
據統計,全球78億人中,只有2700萬人會編寫代碼,占比不到1%。根據美國非盈利組織code.org 的數據,美國有50萬個編程人員崗位空缺,歐盟目前只有10%的編程人員受過計算機科學專業訓練。
“編程的基本規則往往需要通過長時間的學習和訓練才能掌握。如同好的作家不一定是好的編劇,作家描寫人的內心活動可以用‘心如刀扎’這類語言進行描述,但是編劇需要把這種情緒明確細致地一一描述出來,這樣演員才可以栩栩如生地表演出來?!蔽靼搽娮涌萍即髮W電子工程學院教授吳家驥介紹說。
傳統編程是基于規則和邏輯把人的意圖按照編程語言規范化實現的過程,程序員就像傳統工廠流水線上的員工和農場里的農民一樣,只需按照定義好的標準接口和編程規范,把需求意圖拆解為正確的邏輯,用代碼寫出來,所以程序員也被稱為“碼農”。
然而,在軟件飛速發展的今天,開發和維護卻依然是既耗時又容易出錯的工作。英特爾研究院機器編程研究部門總監賈斯汀·戈茨利希認為,這些從軟件誕生之日起就困擾著一代又一代程序員的問題,其實并非無解,他說,“相信我們能創造一個人人都是軟件開發者的社會,屆時機器將會承擔‘編程’部分的工作,讓代碼不再是‘手工藝品’。所以,我們將其稱為‘機器編程’?!?/p>
通過機器學習和其他自動化方法,設計可以自動編寫軟件的機器編程并非今天才有,20世紀50年代就已有學術機構開始涉足機器編程的研究。
在賈斯汀·戈茨利??磥?,與以往不同,現在的機器編程融合了機器學習、形式化方法、編程語言、編譯器、計算機系統等多個領域。它所使用的自動編程技術,既包含精確方法(比如形式程序合成),也有概率方法(比如可微分編程)。機器編程汲取了我們迄今為止獲得的所有軟硬件知識,站在了歷史的拐點上。新的機器學習算法、新硬件與優化硬件、海量而多樣的編程數據,這三者是發展機器編程的要素。
微軟亞洲研究院首席研究員樓建光指出,機器學習算法的進步,算力的高速發展以及海量的編程數據,讓機器編程的發展進入了新的拐點。不過機器編程發展尚在早期,其難點在于目前機器還沒有組合與泛化的能力,只能進行簡單的編程,稍微長一點的程序就無法完成。復雜程序是由簡單程序組合而成的,而程序組合中有很多邏輯和思想,現在的人工智能沒有組合能力,缺乏邏輯思維。
盡管機器編程的發展尚在早期,但從全球機器編程的進展看,不同領域有不同進展,在特定領域,已經取得不錯的突破。但在通用領域,尚未取得實質性突破,仍需要產、學、研各界齊發力,加速機器編程的突破。
當下,在機器編程的賽道上,越來越多的公司涌了進來。除了微軟、谷歌、臉書等,在中國包括百度以及一些創業公司也加入了機器編程的研發行列,不同的公司有不同的技術路線,但他們的每一步探索,都會對未