自動編程還能自主檢測Bug,有了機器編程人類可更專注於創造

2021-01-09 騰訊網

機器編程與機器學習有很大的不同,機器編程是教系統自己編程。雖然還處於早期階段,但這種新穎的自我監控系統有望成為一種強大的生產力工具,並幫助軟體開發人員完成耗時費力的DEBUG工作

文︱朵啦

圖︱英特爾、網絡

軟體進步靠研發,研發進展靠程式設計師,程式設計師寫代碼靠996。

軟體產品是核心競爭力,如果不能領跑同行,就會被時代的浪潮拍死在沙灘上。頭部公司每年都要在研發上砸下巨資,對於大公司需要靠研發投入保持競爭力;對於小公司來說,軟體產品就是事關生存的「最後一根稻草」。隨著異構時代的到來,海量數據由多樣化的專用處理器組合管理,系統功能日趨繁複,管理這些系統所需的軟體就越來越複雜,bug出現的可能性也越來越高。開發人員要花費越來越多的時間來修復bug,而不是編寫代碼。

寫代碼、改bug成了程式設計師996的工作核心;而軟體開發周期未知而漫長,怕是996都無法解決。一覺睡起來,原本1%的代碼就自動寫到了99%,bug自動修復,你敢想嗎?——Hi,這不再是夢了。

構建系統,然後由系統自行構建自己的軟體系統,這種被稱為「機器編程」的領域應運而生。英特爾首席科學家、英特爾研究院機器編程研究主任及創始人Justin Gottschlich表示,機器編程與機器學習有很大的不同,機器編程是教系統自己編程。雖然還處於早期階段,但這種新穎的自我監控系統有望成為一種強大的生產力工具,並幫助軟體開發人員完成耗時費力的Debug工作。

檢測bug,軟體自己搞定

「機器編程」一詞在英特爾研究院和麻省理工學院聯合發布的《機器編程的三大支柱》論文中首次提出,通過機器學習和其他方法,機器編程可以設計實現自動編寫軟體的軟體。這將使程式設計師們有更大自由度和更多的精力去創造新的軟體。對於英特爾研究院機器編程研究,自動生成軟體領域是機器編程的核心重點。這個研究領域,英特爾研究院機器編程研究稱之為「機器編程」。它的核心原則是,人類向機器表達他(她)的意圖,機器會自動創建完成該意圖所需的所有軟體。英特爾研究院機器編程研究對於某些工作負載進行專業化處理,計算資源變得越來越異構化,所以這需要專家級的程式設計師,他們非常了解硬體以及如何最大限度地利用硬體。但與此同時,軟體開發人員越來越青睞於使用更抽象的語言,以提高工作效率。這反過來會導致硬體難以發揮出它本身的性能。

不久前,英特爾科學家與麻省理工學院(MIT),以及喬治亞理工學院(Georgia Tech)的研究人員共同推出了一種新的機器編程(MP)系統——機器推斷代碼相似性(MISIM)全新機器編程系統。是一款檢測軟體意圖的自動化引擎,通過識別代碼結構、分析與其它功能相似代碼的句法差異實現。正如Justin所闡述的,「這是實現機器編程偉大願景的重要一步。」同時Justin表示:「如果機器能做到自動檢查和修復bug,我想大多數開發人員一定非常願意讓它來承擔這項工作,至少我會。」

抱著實現機器編程的美好願景,英特爾研究院機器編程研究在12月進一步推出了機器編程研究系統ControlFlag,除了自動編程,它還可以自動檢測代碼中的錯誤。在初步測試中,ControlFlag使用超過10億個未標記的產品級代碼來訓練和學習新的缺陷。英特爾研究院機器編程研究認為ControlFlag是一個強大的新工具,可以大大減少評估和調試代碼所需的時間和成本。

首先,ControlFlag是完全自我監督的機器編程系統,不需要人類對其進行訓練及指導。ControlFlag的無監督模式識別方法使它可以在本質上學習適應開發者的風格。在要評估的控制工具的有限輸入信息中,ControlFlag可以識別程式語言中的各種樣式,不受代碼使用的程式語言限制。

第二,ControlFlag檢測bug的功能集成了機器學習、形式化方法、程式語言、編譯器和計算機系統。據悉,ControlFlag通過一個稱為異常檢測的功能來進行bug檢測,通過學習經驗證的例子來檢測正常的編程模式,並找出代碼中可能導致bug的異常。該工具將學會識別和標記這些風格選擇,並根據其見解進行自動的錯誤識別和建議解決方案,以便ControlFlag能夠儘可能地避免將兩個開發團隊之間的風格差異視為代碼錯誤。

自動檢測bug的系統好不好用?英特爾已經開始評估內部使用ControlFlag來發現自己的軟體和固件產品化中的錯誤。這是英特爾開發人員快速分析項目的一個關鍵組成部分,該項目旨在通過提供專家支持來幫助程式設計師加快速度。

機器編程更偏向隨機

英特爾機器編程研究系統ControlFlag從超過十億行的代碼中學習,英特爾研究院機器編程研究表示,這在機器編程系統中尚屬首次。另外,對於跨架構硬體來說,能夠正確、高效、安全地編寫代碼的程式設計師稀少,從而導致代碼中存在難以發現的新錯誤。而ControlFlag檢測現有軟體中的違規或異常情況,使可能已經在生產質量系統中存在了20多年的隱疾得以發現。過去可能有數百名開發人員查看過這些代碼,但都沒有意識到任何問題,現在ControlFlag可以實現人力不能達到的效果。

英特爾研究院機器編程研究融合了兩種方法,來推動大量的機器編程研究,一種是形式化方法,一種是隨機方法(stochastic approaches)。英特爾研究院機器編程研究分析目前業界在機器編程領域方面的工作發現,機器編程更偏向隨機方法,並得到了很大的重視,例如深度神經網絡和貝葉斯網絡(Bayesian networks)等等。事實上,英特爾研究院機器編程研究表示,他們的某些合作夥伴或競爭對手正在做神經網絡編程,使用神經網絡來替換大量代碼。這樣做有好處,但是當遇到諸如可解釋性或debug問題時,這樣做也有風險。

在正確的應用場景,機器編程對開發效率的提升驚人。Justin表示,在某個案例中,用傳統的軟體技術,開發完成大約需要三年時間,有了先進的機器編程技術,只需要花一天的時間,就能開發完成同樣質量的軟體。「很多例子表明,不管是與我們的合作夥伴項目,還是我們自己內部的開發項目,機器編程都將生產率提高了一千倍以上。」

降低行業準入門檻,從業者創造性會更強

機器編程發展是否會讓英特爾的程式設計師失業呢?Justin表示:不會。相反,機器編程實際上會創造數千萬到數億個就業機會。他進一步解釋到:首先,當今存在的大多數機器編程系統都需要大量的數據,這些數據通常是以代碼的形式存在,而代碼是由專業程式設計師編寫。因此,隨著自動化的發展,英特爾研究院機器編程研究對高技能程式設計師的需求增加,以推進系統的進步升級。最重要的是,如果英特爾研究院機器編程研究的意圖系統成功,即允許用戶向機器表達他或她的意圖的系統,這將降低行業準入門檻。

機器編程會為全新類型的程式設計師創造大平臺,從業者創造性會更強,而機器和系統會把這些想法綜合起來做出軟體。如今,通過ControlFlag和類似的系統,程式設計師可以顯著減少調試時間,並將更多的時間花在人類程式設計師最擅長的工作——向機器呈現創造性的新思想。完全實現的ControlFlag可以通過自動化繁瑣的軟體開發工作(如測試、監控和調試)來幫助緩解上述挑戰,同時可以解決當前軟體開發中耗時費力代價昂貴的bug修復問題。

圖:在全球78億人中,只有2700萬人會編寫代碼,佔比不到 1%。英特爾希望藉助機器編程技術,使所有人獲得編程能力。

英特爾推進機器編程的最終目標是讓每個人都能創建軟體。當這一目標完全實現時,每個人都可以通過自己最擅長的方式,如代碼、自然語言或其他方式向機器表達自己的設計意圖,從而創建軟體。這是一個大膽的目標,需要英特爾及合作夥伴付出許多努力。

做理性自由的破題者

算法與算力的進步,以及可用代碼庫的極大豐富,讓機器編程擁有適宜的孕育環境;隨著近年計算技術的迅猛發展,機器編程迎來重要拐點。英特爾一直以來的作風便是積極打破傳統,開拓新的研究或工程領域,這些領域在英特爾研究院機器編程研究突破界限之前還無人涉及。此次異構系統領域亦是一片「處女地」,英特爾的創新驅動力來自於對這一未來技術趨勢的預測。

圖:英特爾與麻省理工學院研究人員聯合發表的願景論文提出機器編程有三大支柱,分別是意圖(intention)、創造(invention)、適應(adaptation)

如前所述,異構系統非常複雜,能夠切實掌握異構系統編程技術的工程師少之又少,英特爾研究院機器編程研究正在開發某種機制,讓程式設計師或非程式設計師不僅能夠輕鬆訪問異構硬體,還能充分使用其他系統可用資源,以大幅降低異構編程難度。這也是英特爾機器編程的基本驅動力之一。

為推動機器編程的開源合作,英特爾、發布了開源技術和出版物,推動機器編程的進一步發展以及與合夥夥伴的合作。英特爾還創立了叫做「機器編程研討會」,也稱MAPS,參會人數已經從四年前的20人增加到了2019年底的近400人。Justin透露,2021年還將建立一個新的機器編程中心,英特爾將會與業界建立更廣泛的合作。

最後,引用Justin的一段話:對於顛覆性的技術,需要「理性的自由」。一切構想需要花時間埋頭深入挖掘,把事情做好。否則,如果做事急躁,可能會在設計和方法上做出妥協。雖然可能獲得短期收益,但系統的長期生命力可能會下降。

相關焦點

  • 深度| 機器的自我進化:走向自主編程的人工智慧(附提交ICLR 2017的...
    原標題:深度 | 機器的自我進化:走向自主編程的人工智慧(附提交ICLR 2017的自動編程論文) 選自ICLR、VentureBeat 機器之心編譯
  • 數控工具機的手動編程與自動編程有什麼區別?
    數控工具機的自動編程與手動編程區別在於:一、是否能夠減少人工提升效率。簡單來說,手動編程是專業的編程人員通過編程軟體對圖紙進行編程處理導出程式,拷貝到工具機然後加工,而自動編程是系統根據導入的圖紙自動進行編程,一鍵加工。相較而言,手動編程人工多效率低,自動編程高速高效人工少。二、是否能夠降低技術門檻。
  • 湖北大學自主研發可編程核酸酶檢測法,精準度可達100%
    湖北大學省部共建生物催化與酶工程實驗室馬立新團隊自主開發了一套全新的新冠檢測技術,通過將可編程核酸酶 PfAGO 與 RT-PCR 技術相結合,實現對新冠病毒核酸的高靈敏、高準確度快速檢測,同時該方法可以區分新冠病毒的突變體。實驗檢測結果表明,通過該方法新冠核酸檢測特異性和準確度達到了 100%。
  • AI 系統首次實現真正自主編程,完爆初級程式設計師
    研究人員表示,他們用這個系統證明了長久以來的假設,那就是功能完備的程序確實能夠被自動生成。具體到這項工作,AI Programmer利用機器學習中的遺傳算法,模擬複雜的指令。雖然現在AI Programmer生成的程序,複雜程度與人類新手程式設計師編寫的結果相當。但研究人員認為,AI Programmer編寫的程序完全可以超越傳統範疇,不受人類時間和智慧的局限。
  • 編程小少年有個人工智慧大夢想
    15歲的他投入了百分之百的熱情在編程上,並和一幫海歸碩士、博士共同創立學習小組,目前他們正在編寫《將編程融入數理化》系列教程。這個編程少年是如何看待人工智慧的?學習編程帶給他怎樣的收穫?論壇結束後,山西晚報記者對杜威之進行了獨家專訪。  他把學習人工智慧當成「使命」  「在我看來,人工智慧不僅能給機器賦予思想,還能給機器鑄造靈魂。」
  • 為什麼編程是獨一無二的職業
    與不會說話的機器為伍 計算機是不會說話的機器。 除非你向它發送精確的指令,否則計算機是不會懂(你的意思)的。 和啞巴一起工作,明顯是困難的。 因此,程式設計師必須很聰明。 3. 計算機語言之所以如此的專橫,其中的一個好的理由就是讓程序變得更精確而且沒有歧義。 精確性是人們喜歡使用軟體而不是由人來完成一件事情的最主要理由之一。 4. 人不能欺騙程序編寫什麼代碼就得到什麼運行結果。
  • AI系統首次實現真正自主編程:利用遺傳算法,完爆初級程式設計師
    目前這個方面的成果還非常有限,比如讓AI自動補完程式語言,或者執行簡單的加法程序。今天我們要介紹的這項工作,號稱是第一個能夠全自動生成完整軟體程序的機器學習系統「AI Programmer」。  研究人員表示,他們用這個系統證明了長久以來的假設,那就是功能完備的程序確實能夠被自動生成。具體到這項工作,AI Programmer利用機器學習中的遺傳算法,模擬複雜的指令。
  • 可編程控制器(PLC)
    1969年,美國數字設備公司研製第一臺可編程控制器,並應用於工業現場。在存儲容量方面,有的PLC最高可達幾十兆字節。為了擴大存儲容量,有的公司已使用了磁泡存儲器或硬碟。 向小型化和大型化兩個方向發展小型PLC由整體結構向小型模塊化結構發展,使配置更加靈活,為了市場需要已開發了各種簡易、經濟的超小型微型PLC,最小配置的I/O點數為8~16點,以適應單機及小型自動控制的需要。
  • 英特爾公布五項新技術進展涉及機器編程、量子計算等
    鈦媒體12月4日消息,在今日的英特爾研究院開放日上,英特爾公布了其在集成光電、神經擬態計算、量子計算、保密計算、機器編程五項新技術進展。英特爾提出了「集成光電」願景,即將光互連I/O直接集成到伺服器和封裝中,對數據中心進行革新,實現1000倍提升,同時降低成本。
  • 可編程的水滴?原來編程同樣可以很有趣
    那麼,你見過可編程的水滴嗎?MIT 媒體實驗室研究人員 Udayan Umapathi 主導了可編程液滴的研究,同時他也是一名設計師、我們探索了人類與水的各種接觸,這些接觸中水都載有某些物理信息,一個最具體的例子就是藝術家的顏料顏色。」那麼,「可編程水滴」能用來做什麼呢?
  • 編程和樂高機器人啥關係、編程啟蒙怎麼做……| 逃媽說編程(下)
    樂高機器人則是在磚塊和機械搭建的基礎之上,結合了編程控制。比方說上面這個挖土機的手臂能通過齒輪被馬達所帶動,它是個機械搭建。但如果它還能連接電腦程式,讓它可以自動地從指定的A點挖些土搬到B點,就是個機器人了。它最大的特點是——想怎麼動就怎麼動,通過編程來控制。
  • 常用的機器人編程方法
    如何降低編程的難度和工作量,提高編程效率,實現編程的自適應性,是機器人編程技術亟待解決的問題。目前常用的機器人編程方法有示教編程、離線編程、自主編程、增強現實編程、示教學習編程。現有方法編程效率低、成本高,極大的限制了機器人的廣泛應用。
  • 當學生設計遊戲,他們學到的不僅是編程
    編輯:爾瑞導語:所謂實踐出真知,編程出真理(一個bug就不能讓你的程序跑起來),遊戲原有玩物喪志的定義被顛覆:男生遊戲玩得好可以上職業聯賽,女生愛玩遊戲可以當解說,玩得不好性格又內向可以去設計遊戲。當把遊戲納入到教學之中,遊戲設計就變成了人人可參與,人人可佔一席之地的益智項目。
  • 編程貓首席科學家:用科學教育、計算思維培養學生自主探索能力
    在家學習,如何培養孩子的自主學習能力,成為眾多老師和家長都關心的問題。近期,編程貓首席科學家、編程與人工智慧研究院院長、北京航空航天大學自動化科學與電氣工程學院副教授秦曾昌在中國教育網絡電視臺、長安書院APP、CETV教師培訓微信公眾號等多平臺同步開展以培養孩子自主探索能力為主題的教師培訓直播講座,5萬在線觀眾參與並觀看了本次直播。
  • 少兒編程領導品牌「貝爾編程」閃耀GET2018教育科技大會!
    我們會發現,小韓其實非常有意識地把生活中這些機器擅長的事情抽象出來,然後交給機器去做。」林釗仕認為教育其實像扔棒球一樣,棒球(指課程內容)很重要,但是怎麼扔也非常重要,「我們經常思考,究竟要用什麼樣的教學模式去教,才能夠在最開始就喚起孩子的興趣,同時又能夠非常高效地傳遞知識,最終達到教學目標,這個是非常重要的。」
  • 什麼是編程?
    什麼是編程?——馮修遠人生就像一場修行,任重而道遠。大家好,我是馮修遠,一位專注於IT教育行業及編程技術和網絡營銷的人士。今天就#編程#這個話題,跟大家聊一下什麼是編程?主要從以下四個方面來講:什麼是編程?編寫程序的語言有哪些?學習編程有什麼好處?我們可以怎麼樣學習到編程?01什麼是編程?我的理解是:程序一詞來自生活,通常指完成某些事情的一種既定方式和過程,可以將程序看成對一系列動作的執行過程的描述。
  • 貝爾科教新品編程教育機器人Tebot登場 為孩子的STEAM教育助力!
    一體化無螺母設計,統一標準接頭輕鬆入門機器人搭建Tebot作為一款入門級編程教育機器人,一體化車架,無螺母設計,安裝過程中無需尋找細小的螺母零件,極大降低了搭建難度;採用統一標準接頭,無需分辨不同顏色型號的接頭,讓孩子可迅速完成接線,平均十分鐘可完成搭建。
  • 除了Python,為什麼機器學習還需要一種新的程式語言?
    編者按:任何足夠複雜的機器學習系統都需要一個特定的、非強制要求、優弊共存的程式語言。 如今 Python 雖然在人工智慧領域應用廣泛,但是也存在一定的弊端,那麼是否有必要為機器學習量身打造一門新的程式語言?而究竟什麼樣的程式語言才是最適合機器學習呢?接下來,本文將為大家一一揭曉答案。
  • 可編程邏輯陣列(PLA)簡介
    為了克服PROM的不足,產省了一種「與」陣列和「或」陣列均可編程的邏輯器件,即可編程邏輯陣列PLA(可編程邏輯控制器件)。  二.PLA的類型  PLA可分為組合可編程邏輯陣列PLA和時序可編程邏輯陣列PLA兩種類型。
  • 高考再現編程題:學少兒編程究竟有什麼好處
    據了解,今年高考數學題,再次出現編程題!高考,已經開始考「編程」了!那麼今年都有哪些高考試卷出現了編程題?   今年高考的江蘇卷中也出現了編程題。   其實,編程題並不是第一次出現在高考試卷中了,近幾年中高考頻頻出現類似相關題目。