首頁 > 新聞 > 科技 > 正文

機器編程降本增效 未來機器編程會“搶”程序員飯碗嗎

2020-12-31 09:11:06來源:科技日報  

英特爾在2020年12月推出機器編程研究系統ControlFlag,可以自主檢測代碼中的錯誤,目前仍處于早期階段。在初步測試中,這個系統利用超過10億行未標記的產品級別代碼進行訓練并學習新的缺陷。英特爾首席科學家表示,這款工具可以大幅減少測試和修復bug所需的時間和成本。

那么,機器編程指的是搬運代碼模型,還是具有相當的自主開發特征;目前機器編程的主要方法有哪些,效能如何,具備怎樣的優勢;為什么有專家認為機器編程不僅不會取代程序員,還會創造出大量就業機會,其可能首先大規模應用于什么領域?

代碼將不再是“手工藝品”

如今,幾乎各個行業都離不開編程。傳統編程看似簡單,其實對人的要求很高。盡管大多數人可以熟練使用自然語言表達自己的想法,但是讓其去編程卻不是很容易,那需要思想和底層原理支撐。據統計,目前業內僅有不到1%的人會編寫代碼。

“往往需要通過長時間的學習和訓練才能掌握編程的基本規則。如同好的作家不一定是好的編劇,作家描寫人的內心活動可以用‘心如刀扎’這類語言進行描述,但是編劇需要把這個種情緒明確細致地一一描述出來,這樣演員才可以栩栩如生地表演出來。”西安電子科技大學電子工程學院教授吳家驥介紹說。

傳統編程是基于規則和邏輯把人的意圖按照編程語言規范化實現的過程,程序員就像傳統工廠流水線上的員工和農場里的農民一樣,只需按照定義好的標準接口和編程規范,把需求意圖拆解為正確的邏輯,用代碼寫出來,所以程序員也稱為“碼農”。

然而,在軟件飛速發展的今天,開發和維護卻依然是既耗時又容易出錯的工作。英特爾研究院機器編程研究部門總監賈斯汀認為,這從軟件誕生之日開始就困擾著一代又一代程序員的問題,其實并非無解,他說,“相信我們能創造一個人人都是軟件開發者的社會,屆時機器將會承擔‘編程’部分的工作,讓代碼不再是‘手工藝品’。所以,我們將其稱為‘機器編程’。”

吳家驥說,所謂機器編程,融合機器學習、形式化方法、編程語言、編譯器、計算機系統等多個領域。它所使用的自動編程技術既包含精確方法(比如形式程序合成),也有概率方法(比如可微分編程)。

“人類的編程過程側重于邏輯業務,很少關心編程的語法、格式等。而機器編程實質是搬運代碼模型,其目的在于讓編程能夠更抽象,目前還沒有成熟的系統可以達到自主開發軟件的程度,包括英特爾最新提出的Controlflag。”吳家驥指出。

用機器編程降本增效

早在上世紀50年代,人類就開始涉足機器編程的研究。在賈斯汀看來,當下正是發展機器編程的好時機。“機器編程汲取了我們迄今為止獲得的所有軟硬件知識。今日與往時不同的是,我們站在了歷史的拐點上,我們有新的機器學習算法、新硬件與優化硬件、海量而多樣的編程數據,而這三者是發展機器編程的必要要素。”

目前機器編程的主要方法有哪些,效能如何,具備怎樣的優勢?吳家驥介紹說,有了機器編程,軟件的開發和維護將實現自動化,編程人才的缺口、編程精確度的提升等問題也迎刃而解。機器編程的方法有兩種:一是依賴專家知識和模板庫的機器編程方法,即編程機器把專家的規則和大量模板庫組合起來,進而滿足人們的編程意圖。其問題在于:專家知識和規則庫需要不斷積累更新。此外,專家不可能知曉方方面面的相關信息,特別是在編程中存在很復雜的邏輯和多樣化的語法差異時。

二是利用機器學習進行自我監督去學習編程規則,通過海量給定的代碼去學習正確的編程規則,進而發現錯誤的代碼形式。包括兩個階段:模式挖掘階段,主要學習用戶指定的GitHub存儲庫中的特殊編碼模式,當學習完成時,該模式將生成一個優先級字典,其中包含可接受和不可接受的兩種特殊模式,為后續機器編程提供知識儲備;掃描階段,主要是根據所學的特異性模式字典分析給定的源代碼存儲庫,當識別到異常模式時,將通知用戶,并為用戶提供可能的替代方案或進行自動校正。

“利用機器學習和人工智能的方法可提高機器編程效率,這是由于自監督學習可以不斷自我完善自我進化,使得機器越來越聰明。一方面在編程時可以快速把人類意圖或自然語言轉變為編程語言,另一方面使編譯器更聰明,在代碼調試過程中可以智能的提示錯誤。”吳家驥指出。

折磨著全球程序員的bug是所有軟件開發和維護的一大隱痛。據統計,在IT行業每年花費的1.25萬億美元軟件開發成本中,大約有50%用于Debug代碼。就此,英特爾首席科學家賈斯汀表示,“ControlFlag是一個強大的新工具,可以大幅減少評估和Debug代碼所需的時間和成本。據悉,這個系統檢測Bug的功能是通過機器編程實現的,其中融合機器學習、形式化方法、編程語言、編譯器和計算機系統。英特爾已經開始評估在內部使用這個系統,在自己的軟件和固件產品化中尋找Bug,成為一些分析項目的關鍵組成部分。

機器編程將創造大量就業機會

據國外知名數據公司統計,全球程序開發人員2019年達2.39千萬人,每年平均增加1百萬人,預估2024年將達到2.87千萬人。有人不禁擔憂,現在學計算機以后會不會產生人才飽和,未來機器編程會取代程序員嗎?

“未來機器編程不僅不會取代程序員,還會創造出大量就業機會,可能多達上百萬個。這是由于機器編程大幅度的降低編程門檻,就如同電腦上的很多工具,提高了工作效率,可以讓更多的普通人參與到編程中,實現更多的自動化工作流。”遠望智庫AI事業部部長、圖靈機器人首席戰略官譚茗洲表示。

英特爾有個愿景:只要你能以機器可理解的方式表達你的“意圖”——可能是用自然語言,或者可視化的圖表,甚至是打個手勢——機器編程就會幫你開發屬于你自己的軟件。

對此,譚茗洲解釋道,“未來需要更有效的編程意圖概要設計,把大的意圖拆解為更小的意圖,每個意圖更容易讓機器理解,進而可以讓機器AI編寫代碼。未來機器AI編程可能以一種交互式的方式進行,通過多輪對話交互式形式的編程環境,程序設計者通過與AI編程機器意圖交互和所見所得的反饋,實現機器編程。”

專家預測,從當前人工智能相關技術的發展來看,機器編程得到廣泛應用可能仍然需要幾十年以上,因為廣泛應用意味著機器能更準確的了解人類的意圖,但是人類自然語言的表達本身就會存在很多不確定性。因此機器編程也并不可能完全替代程序員,特別是在需要多重嵌套的邏輯和多分支的邏輯場景下,因為這些場景需要更確定性的邏輯分析,顯然對機器來說是比較困難的。機器編程可能首先大規模應用于整體邏輯能夠拆解為多個簡單邏輯的場景,如工作流固定的場景或簡單的計算場景。抑或邏輯簡單但精確性要求高的場景,如財會、醫療、金融等領域。

譚茗洲指出,“要想在人工智能時代做到‘人機共存’,需順應技術的發展趨勢,讓機器去做其擅長的部分,例如軟件開發中,枯燥的‘活兒’由機器承擔,人們得以有更大的自由、靈活度和時間精力去創造,可以從事設計和制造機器人的工作。”(華凌)

責任編輯:hnmd003

相關閱讀

推薦閱讀