讓軟體自己寫軟體,機器編程未來會取代程式設計師嗎?

2020-12-14 CSDN

【CSDN 編者按】機器編程的可行性增大促使這一想法加快落入實地,事情的發展開始令人期待。英特爾為未來跨架構編程時代所設計的機器編程將會怎樣影響程式設計師的世界?軟體能否實現編寫軟體?

作者 | 鄭麗媛 責編 | 張文

頭圖 | CSDN 下載自東方 IC

近年來,隨著計算機領域的快速發展,逐漸形成了一股對立的趨勢:計算機資源愈發異構化,因而需要更多硬體領域的專家級程式設計師 VS軟體開發人員更青睞抽象高效的程式語言,導致硬體性能得不到充分發揮。

這樣的趨勢下,如果有一款工具可以讓計算機自己編程豈不是解決了這個矛盾?基於這種思考,英特爾提出了「機器編程」這個概念,旨在通過自動化工具提升開發效率。

機器編程是什麼?

在 2018 年英特爾研究院和麻省理工學院聯合發布的《機器編程的三大支柱》論文中,「機器編程」一詞首次出現在人們的視野。它融合了機器學習、形式化方法、程式語言、編譯器、計算機系統等多個領域。通俗地說,機器編程就是通過機器學習和自動化方法,設計出可以自己編寫軟體的軟體,即教系統自己編程。

除了上文所說,機器編程可以補充跨架構專業編程人員的缺口之外,它還能解決軟體開發和維護上的一大痛點問題: Bug 。機器編程的核心原則是:人類向機器表達他(她)的意圖,機器去自動創建完成該意圖所需的所有軟體。英特爾將機器自動創建軟體的部分稱為創造和適應,由此得出機器編程的三大支柱:意圖(Intention)、創造(Iinvention)和適應(Adaptation)。

英特爾首席科學家、英特爾研究院機器編程研究主任及創始人 Justin Gottschlich 表示:儘管目前軟體顯著提高了人們的工作效率,但在全球 78 億人中,只有 2700 萬人會編寫代碼,佔比不到 1%。因而,機器編程的未來願景是降低編程的門檻,讓每個人都能創建軟體,將這 1% 變成 100%。

英特爾推出機器編程研究系統 ControlFlag

抱著這份美好的願景,英特爾開始踏上了機器編程這段旅程的第一步。Justin 認為,要想讓機器編程真正能夠幫助到開發人員,那麼有兩點必不可少:

提高編碼員和非編碼員的工作效率;確保機器編程系統生成的是高質量、快速、安全的代碼。基於這兩點,發展機器編程關鍵的第一步是:改進軟體調試(Debug)。

所謂 Debug ,就是識別、分析和糾正軟體缺陷,讓軟體變得更加強大且可靠的過程。2017 年劍橋大學開展的一項調查顯示:美國程式設計師平均花費 50% 的時間在 Debug 上,這嚴重影響了工作效率。此外,Debug 本質上也意味著軟體的質量不合格。

再進一步研究發現,Debug 幾乎都是由於程式設計師向機器傳達意圖不正確導致的。而機器編程所追求的讓人機交流準確無誤,正好就可以糾正這一點。假設機器可以完美地捕捉到人的意圖,那麼 Debug 基本上就消失了。英特爾的實驗也得到了意外收穫:利用機器編程,程式設計師的工作效率提高了 2 倍,軟體的質量也得到了提升。

這個結果意味著機器編程的願景並非空想。上周五英特爾推出了可自主檢測代碼中錯誤的機器編程研究系統 ControlFlag ,雖然系統還處於早期階段,但在初步測試中,ControlFlag 就展現了非凡的魔力。它利用超過 10 億行未標記的產品級別代碼進行了訓練並學習了新的缺陷,這使得自我監督系統有望成為強大的生產力工具。

ControlFlag檢測 Bug 的功能正是通過機器編程實現的。具體來說,ControlFlag 通過被稱為異常檢測(anomaly detection)的功能進行運轉:通過學習經過驗證的例子來檢測正常的編程模式,來發現代碼中可能造成 Bug 的異常。值得一提的是,不論開發者使用的是何種程式語言,ControlFlag 都可以通過學習檢測到其中的異常。

此外,ControlFlag 也證明了它的強大。在分析 cURL (一個開源的命令行工具,被程式設計師廣泛地用於實現網際網路下載)時,ControlFlag 發現了一個之前從未被發現的異常,也就是說,ControlFlag 發現了被開發者審核過並且廣泛使用的產品級別代碼中隱藏的 Bug。因此,英特爾也開始評估在內部使用ControlFlag,以在軟體和固件產品化中尋找 Bug。

機器編程會導致失業?

然而,強大會不會意味著取代?功能如此優越的機器編程在未來是否會讓部分程式設計師失業?這種擔憂並不難理解,畢竟如果機器編程可以實現自動化構建程序,那原來做這件事的人該怎麼辦?

Justin 其實經常被問到這個問題,但 Justin 始終認為,機器編程如果成功,那未來只會創造數千萬甚至數億個就業機會,而非取代專業程式設計師使其失業。

他的理由很簡單,有兩個方面:

當今存在的大多數機器編程系統都需要大量的數據。數據通常是以代碼的形式存在,而代碼則是由專業程式設計師所編寫。因此,一旦自動化編程完全實現,那麼對高技能程式設計師的需求將會增加,因為專業程式設計師寫的代碼越多,那麼通過大量學習,所構建的機器編程系統就越先進;降低編程行業門檻。機器編程如果完全實現,那麼用戶就可以向機器表達他或她想要的系統從而進行自動化編程。只要有批判性思考的能力,並將軟體創造的步驟和想法邏輯合理化,那麼所有人都能編程的願景就不會遙遠。因此, Justin 一直堅持一個觀念:自動化不僅不會取代任何現有的程式設計師,反而會為全新類型的程式設計師創造非常大的平臺,讓他們可以毫無顧忌地發揮想像力。或許這些程式設計師的編程技能會稍遜色,但強大的創造性會彌補這個不足,只要有能力表達他們的想法,那麼機器和系統會幫他們把這些想法綜合起來做出軟體。

機器編程正處在拐點

Justin 曾經說過:機器編程正處於拐點,但拐點並非一夜之間到來。機器編程進入拐點,大致是因為三個基本進步的實現。

算法的進步。在確定性算法和隨機算法方面都得到了進步,這些形式化方法和機器學習算法為建立機器編程系統提供了大量的機會。目前很多可以實現的事情在 10 年前都做不到。算力的進步。如果無法以易於處理的形式去執行,那麼就算能夠執行算法,但卻需要 10 年、20 年才能完成。隨著過去 10 年英特爾在算力方面的進步,特別是異構計算方面,讓英特爾有了解鎖機器編程的第二塊鑰匙,成為了關鍵的轉折點。數據。大多數系統往往需要大量的數據,目前數據量正好非常豐富。以GitHub 為例,2020 年其代碼庫超過了 2 億。這是一個巨大的代碼量,因為任何一個代碼庫都可能包含多個源文件。而這些源文件,每一個都可能包含數百或數千行代碼。因此這個數字變得非常大,增長非常快。因此,就拐點而言,這三件事合在一起,才讓今天成為可能。

至於這是如何發生的,Justin 認為其驅動力是英特爾看見了未來即將進入異構系統的時代。異構系統編程人員的缺失,讓英特爾意識到需要某種機制,讓程式設計師或非程式設計師不僅能訪問異構硬體,還能充分利用可用資源。同時這也是英特爾機器編程的基本驅動力之一。

機器編程已經起步,如果完全實現,那全民編程的時代將不再遙遠,你準備好了嗎?

相關焦點

  • 機器編程,會讓程式設計師丟飯碗嗎?
    機器編程究竟是什麼?它會在未來給我們的世界帶來顛覆性改變嗎?它會讓未來的程式設計師丟掉飯碗嗎?它與目前流行的低代碼開發是不是一回事兒?如果完全實現了機器編程,那麼每個人都能自由地表達創意,無需編寫任何代碼就可以開發屬於自己的軟體,我們進入數據驅動世界的步伐就會大大加快。
  • 機器編程會讓程式設計師們丟掉飯碗嗎?
    原標題:機器編程會讓程式設計師們丟掉飯碗嗎?機器編程究竟是什麼?它會在未來給我們的世界帶來顛覆性改變嗎?它會讓未來的程式設計師丟掉飯碗嗎?它與目前流行的低代碼開發是不是一回事兒?
  • 機器編程來了!未來全球78億人都能寫代碼?
    英特爾首席科學家、英特爾研究院機器編程研究主任及創始人賈斯汀·戈茨利希認為,這款軟體能夠「大幅減少評估和Debug(修補漏洞)所需的時間和成本」。英特爾研究院的研究人員發現,軟體開發者會花費大約一半的時間用來Debug,通過ControlFlag以及類似的系統,程式設計師有望大幅減少Debug的時間並把更多時間用於人類程式設計師最擅長的工作。
  • 機器編程:軟體開發領域新動向
    隨著人工智慧的蓬勃發展,機器的智能化程度越來越高,在很多領域,基於大量樣本數據的自我學習,計算機在某一功能領域能夠實現自我完善,通過持續的大數據量學習,執行功能的能力會得到持續提升,究其本質,實質上是一些重複性工作的持續優化,機器學習本身就是學習這些重複性工作的數據(即樣本數據),然後優化工作的過程。在軟體開發領域,如何通過引入人工智慧提升開發效率呢?
  • 機器編程究竟是什麼?發展難點在哪裡?
    機器編程究竟是什麼?它會在未來給我們的世界帶來顛覆性改變嗎?它會讓未來的程式設計師丟掉飯碗嗎?它與目前流行的低代碼開發是不是一回事兒?如果完全實現了機器編程,那麼每個人都能自由地表達創意,無需編寫任何代碼就可以開發屬於自己的軟體,我們進入數據驅動世界的步伐就會大大加快。 就像微軟亞洲研究院首席研究員樓建光在接受《中國電子報》記者採訪時所言,機器編程不僅僅是希望解放程式設計師,將程式設計師從低端的重複性開發中解救出來,將更多精力用在如何將程序邏輯設計得更高效上,更重要的是機器編程能夠加速AI在各個領域的落地。
  • 軟體是用編程軟體編寫的,那麼編程軟體又怎麼來的?
    軟體是用編程軟體寫成的,那麼編程軟體是怎麼來的呢?這個吧,我真的沒辦法一個個給你解釋到底,不然你要是打破砂鍋問到底,可能一頓火鍋的功夫我也沒辦法給你說完。祖師爺我給大家提一個思路,大家按照這個思路可以自己去找自己感興趣的問題。
  • 機器人也會編程了 AI完爆初級程式設計師
    之前有人說:程式設計師。如今看來,程式設計師已經能夠編一段代碼幫自己寫程序了。真不知道是改恭喜程式設計師,還是為他們默哀……  當然,根據最新消息顯示,這款會編程的AI還處於初級階段。能夠打敗初級程式設計師,但是對於中高段位程式設計師,AI還是不行的。
  • 自動編程還能自主檢測Bug,有了機器編程人類可更專注於創造
    寫代碼、改bug成了程式設計師996的工作核心;而軟體開發周期未知而漫長,怕是996都無法解決。一覺睡起來,原本1%的代碼就自動寫到了99%,bug自動修復,你敢想嗎?——Hi,這不再是夢了。 構建系統,然後由系統自行構建自己的軟體系統,這種被稱為「機器編程」的領域應運而生。
  • 想入門學編程?推薦你幾款編程軟體讓你迅速成為程式設計師
    作為程式設計師,好的編程軟體可以讓你快速提高工作效率,作為新入門的準程式設計師,想要從哪款軟體入手比較好呢?今天小編就來向大家推薦幾款比好好用的編程軟體進qun:667918001,免費領取Javaziliao1.Visual studio是一款由美國微軟公司開發的開發工具集,簡稱VS,它包括了整個軟體的生命周期所需要的大部分工具,比如UML工具,代碼管控工具
  • 即將到來的軟體世界末日,作為程式設計師該如何應對?
    大名鼎鼎的荷蘭程式設計師 Edsger Dijkstra 在 1988 年寫過一段話:「必須要在概念層次上進行思考,比以前只面對單一的思考更深刻一些。」Dijkstra 把這個當作是一個警告。隨著程式設計師熱切的將軟體運用到重要的系統中,他們會成為構建世界的主角,但是 Dijkstra 認為程式設計師們可能高估了自己。
  • 人人都能寫腳本的神器,電腦軟體「能用機器做的事,絕不用人工」
    按鍵精靈本身是一個國內軟體,它的主要功能就是製作腳本,用這個軟體製作腳本,可以說是最簡單的,不需要任何編程技術,操作非常簡單,最重要的是能快速製作出我們需要的功能腳本。網上流行著這樣一句話「能用機器完成的事,絕不用人工」。
  • 現在學編程,當程式設計師還有前途嗎?
    有很多同學,當時在高考後填報志願選擇了計算機專業,有些是因為自己喜歡計算機,有些則是因為父母說學計算機以後工資會比較高,工作會比較好找,因此選擇了計算機專業。 但是經過一個學期的學習,逐漸發現自己,好像不太喜歡這個東西,好像C語言有點學不明白,對編程越來越沒有興趣了!
  • 全民編程時代來臨,程式設計師會被 AI 取代嗎?
    與此同時,低代碼編程平臺應運而生。低代碼作為一種創建應用的方法,它可以讓開發者使用最少的編碼知識來快速開發應用程式。開發者通過圖形界面中,可視化建模來組裝和配置應用程式。眾多IT公司搶灘低代碼市場,逐步降低編程門檻,欲開啟全民編程新時代,如氚雲、奧哲的H3 BPM、搭搭雲的九章全協同雲、Google的App Maker、微軟的Power Platform、Mendix、Salesforce等。隨著編程門檻降低,程式設計師會被AI替代嗎?
  • 結對編程是每個軟體公司都該採用的開發方式
    至於解決方案,正如Edward Hieatt在First Round Capital CTO峰會上說的,非常清楚:培養一個完全擁抱結對編程的企業文化。通常,當程式設計師在談到結對編程的好處時,他們典型的觀點結對編程能使他們寫代碼更快或更好,而Edward Hieatt卻認為,這只是這種重要開發方法的關鍵作用之一。
  • 10 年後編程還有意義嗎? - OSCHINA - 中文開源技術交流社區
    具體來說這個問題有三層意思:到 2025年 程式設計師還有沒有用,到那個時候所謂的 「程式設計師」 是指什麼?代碼本身還有沒有用,到那時候代碼會變成什麼樣子?機器智能會不會取代(目前意義的)代碼或程式設計師兩者的其中一個或者全部?
  • 沒人比程式設計師更討厭軟體
    不明來源的軟體很可能是由爛程式設計師開發出來的。拋開別的不說,你即將安裝的這款無名軟體,它有用而且用戶體驗良好的概率是很低的。不幸的是,選擇以軟體開發作為自己的職業有很多副作用,其中之一便是,久而久之,你會變得厭惡軟體。我說的是真正的厭惡!一種強烈的厭惡之情!
  • 當機器會寫小說 莫言們的「終結者」來了嗎?
    比如這本《我有一隻寵物鱷》就是由代碼產生的一本小說,那個程式設計師從早上10點開始寫代碼,到當天午夜,程序就交出了一本幾十萬字的小說。小說的可讀性沒辦法保證,也沒有人真正關心。只需要賦予程序一些基本的規則和素材來源,它就會自己開始「創作」。
  • 英特爾機器編程工具可檢測代碼中的Bug
    研究發現,軟體開發者會花費大約一半的時間用來Debug。通過ControlFlag以及類似的系統,程式設計師有望大幅減少Debug的時間並把更多時間用於人類程式設計師最擅長的工作——向機器展現有創造性的新想法。」
  • 未來容易消失和不易被取代的職業
    我們也常常想,未來人工智慧到底會發展到什麼地步?我們的工作會不會被AI取代?今天奧鵬撕蔥就給大家盤點一些未來最容易被取代和不容易被取代的職業,會涉及到專業和院校推薦。未來隨著此類智能自動收費的推廣,消費者可以自助繳費,相信更多超市、商場、停車場、小區、高速公路收費站都用不著收銀員了。並且智能自動收費系統不僅節約了人力成本,還大大提高是辦事效率。有媒體報導,正在大力推廣機器人取代工人的富士康動作迅猛,其江蘇崑山工廠就因為6萬機器人的投入使用,員工人數從11萬減少到5萬。牛津大學的一項研究調查表明,未來10年,47%的低級僱員有很高的可能性被機器取代。
  • AI辣麼厲害,10年後編程還有意義嗎?
    工程師和數據科學家仍然需要對機器學習算法進行編程,但最終同樣的系統會教它們學會如何通過分析自己的代碼來改進自己。未來 10年 對軟體工程師的需求還會更強勁,因為初創企業和大公司都把精力聚焦在把算法驅動應用轉為數據驅動應用上。通過固定算法來處理信息安全已經太複雜了,需要機器學習即時學習並挫敗新的攻擊。當然,像無人車這樣的計劃已經在嘗試這方面的努力。