機器編程究竟是什麼?發展難點在哪裡?

2020-12-16 電子發燒友

機器編程究竟是什麼?發展難點在哪裡?

李佳師 發表於 2020-12-14 12:00:24

11月,《時代周刊》將2020年最佳發明獎給了兒童編程機器人Matatalab;12月4日,英特爾在其研究院開放日上宣布將機器編程與集成光電、神經擬態計算、量子計算等列為影響未來10年的顛覆性技術;目前包括微軟、谷歌、Facebook等在內的全球巨頭,都加入了機器編程的賽道。機器編程究竟是什麼?它會在未來給我們的世界帶來顛覆性改變嗎?它會讓未來的程式設計師丟掉飯碗嗎?它與目前流行的低代碼開發是不是一回事兒?

未來程序將無處不在

如今IT業界赫赫有名的大佬很多是編程出身,包括微軟創始人比爾蓋茨、Facebook的創始人扎克伯格,也包括中國的諸多網際網路大佬——騰訊的馬化騰、百度的李彥宏、小米的雷軍、360的周鴻禕、微信之父張小龍、字節跳動的張一鳴等,全都是寫程序出身。這從另外一個角度佐證了編程是創富和改變世界的「神筆」這一說法。

幾年前,微軟的聯合創始人保羅·艾倫在回憶起當年寫下的那幾行代碼時非常感慨:「沒想到那幾行代碼竟然帶領微軟公司走到了今天。」現在大部分人的電腦上都運行著微軟的作業系統,微軟也成了世界上市值最高的公司之一,深刻地影響了全世界。也是在不久前,騰訊公司展示了微信第一版的幾行代碼,就是這個程序,歷經8年的成長,現在變成了影響幾億人生活、工作的重要工具。

編程對於這個世界的意義,當然不僅僅是創造了一批赫赫有名的IT大佬,創造了微軟和騰訊。進入軟體定義一切的時代,我們越來越相信這個世界是由軟體驅動的,看看擁有代碼最多的公司竟然不是軟體巨頭微軟,而是飛機製造企業。看看從上天的飛機火箭到我們身邊的各種小物件,從報稅到買菜我們都離不開軟體,從工廠到各個機構都離不開軟體的驅動,我們就能夠很好地理解為什麼編程對這個世界舉足輕重了。

為什麼需要機器編程?

我們為什麼需要機器編程?一方面,會編程的技術人員依然太少。在全球78億人中,只有2700萬人會編寫代碼,佔比不到1%。根據code.org的數據,美國有50萬個編程人員崗位空缺,歐盟目前只有10%的編程人員受過計算機科學專業訓練。

另一方面,編程的門檻還是太高。要想開發出高質量的軟體依然非常困難,而且隨著異構計算的發展,硬體環境變得越來越複雜,編程開發難度進一步變大。為什麼996程式設計師們早早掉發,為什麼馬化騰早年編程會落下腰疾,說明編程是一件非常折磨人的事情。

英特爾首席科學家Justin Gottschlich講了他媽媽的故事。他的母親是房地產行業的權威,對市場的理解敏銳且細緻,她的決策需要基於一系列的因素進行複雜的分析。但現有的工具不支持她所想表達的意圖,需要定製一種新的工具來支持其決策所需的精細度、精確度、微妙性。在沒有現成工具的情況下,她分別使用不同的工具,進行數據收集、分析,經過一個月之後,得出結論。但在她得出結論的時候,整個市場環境變化了、數據變化了,所有時間都浪費掉了。事實上,這樣的事情不僅發生在Justin母親身上,在農業、野生生物、建築、醫療、金融分析等領域,很多專家清楚地知道自己想要軟體做什麼,但這樣的軟體目前不存在,不足以表達他們的意圖。

那麼,試想一下,如果人人都會編程,如果機器能夠聽懂人的指令,能夠按照人的指令編程,那麼世界將完全是另外一回事。如果完全實現了機器編程,那麼每個人都能自由地表達創意,無需編寫任何代碼就可以開發屬於自己的軟體,我們進入數據驅動世界的步伐就會大大加快。

就像微軟亞洲研究院首席研究員樓建光在接受《中國電子報》記者採訪時所言,機器編程不僅僅是希望解放程式設計師,將程式設計師從低端的重複性開發中解救出來,將更多精力用在如何將程序邏輯設計得更高效上,更重要的是機器編程能夠加速AI在各個領域的落地。

「事實上機器編程是AI落地非常重要的一環。要把AI落地到每一個領域,需要將每一個領域的商業邏輯和人的決策指令自動轉化為可操作的程序,由機器人來執行。將行業規律變成邏輯語言,變成可操作的組合,其實就是程序。我們需要將大量的各行各業的商業流程和規律變成機器可識別的邏輯語言,這就是機器編程希望助力人們實現的事情。」樓建光表示,如果機器編程成熟,將大大推進AI在各個領域的應用。

「機器編程將改變關於軟體創建的所有既定規則,最終賦能所有人創建軟體。」Justin說。從這些角度來看,機器編程應該是軟體定義時代的顛覆性技術,將真正提速AI助力人類的進程。

那麼機器編程會不會取代程式設計師,未來是不是程式設計師就會失業?答案是否定的,因為編程更難的事情是在程序的邏輯設計上,而不是寫代碼本身。所以寫代碼的事情可以讓機器來完成,而讓編程人員做更高級的邏輯設計,讓程序更高效。

談及機器編程,人們自然會想到目前熱門的低代碼開發。樓建光認為:「機器編程與目前流行的低代碼開發完全不同,雖然兩者都有程序自動生成的字樣,但機器編程與AI相關,低代碼與傳統開發更為接近,低代碼是通過自動化根據模板生成的,是將常用的功能中間件化或者稱之為中臺化、標準化,通過模塊化、標準化、可視化的技術,將原來需要代碼完成的功能轉換成只要進行簡單的拖拽操作就能完成,從而實現自動化。」

機器編程難在哪裡?

「通過機器學習和其他自動化方法,設計可以自動編寫軟體的軟體」的機器編程並非今天才有,上世紀50年代就已有學術機構開始涉足機器編程的研究。

但Justin Gottschlich說:「與以往不同,今日的機器編程融合了機器學習、形式化方法、程式語言、編譯器、計算機系統等多個領域。它所使用的自動編程技術,既包含精確方法(比如形式程序合成),也有概率方法(比如可微分編程)。機器編程汲取了我們迄今為止獲得的所有軟硬體知識,站在了歷史的拐點上。新的機器學習算法、新硬體與優化硬體、海量而多樣的編程數據,這三者是發展機器編程的要素。」

樓建光表達了與Justin Gottschlich一致的觀點,因為機器學習算法的進步,算力的高速發展以及海量的編程數據,讓機器編程的發展進入了新的拐點。不過樓建光認為:「目前機器編程的發展尚在早期,機器編程的難點在於目前機器AI還沒有組合與泛化的能力,只是能夠進行簡單的編程,稍微長一點的程序就無法完成。」樓建光進一步解釋說,複雜程序是由簡單程序組合而成的,而程序組合中有很多邏輯和思想,現在的AI沒有組合能力,缺乏邏輯思維。

Justin Gottschlich將機器編程的難點概述為三點,也稱之為三大支柱:意圖(Intention)、創造(Invention)和適應(Adaptation),這三者,代表著從一個編程的想法到最後產生一個產品級代碼的過程。

英特爾中國研究院院長宋繼強在接受《中國電子報》記者採訪時透露,自己也曾做過程式設計師,所以深知編程中的各種難題,他進一步解釋了Justin談及的機器編程的三大支柱。

「意圖」指人類向機器表達自己的想法。目前在這個維度的發展是通過自然語言的方式,而無需敲代碼,直接告訴機器你要做什麼,機器通過自然語言便能夠了解。

「創造」是指機器以用戶的意圖為基礎,然後合成一個高級程序,創造符合用戶意圖的程序、數據結構和算法。這個過程需要生產一堆代碼,或在代碼庫中找出元素代碼,然後按照一定思想邏輯組合,目前這個維度仍有大量挑戰。這應該就是樓建光談到機器尚無「組合能力」的部分。

「適應」這一步需要將程序進行更高級的轉換和優化,以便在所處的軟體和硬體生態系統中以最高效率運行,從而化解異構硬體挑戰。

關於「適應」,做過編程人員的宋繼強透露,事實上在編程過程中有一個非常重要的維度是針對不同的硬體環境進行優化,如果一個程序只是跑在CPU環境上效率很高,但當它要跑在CPU+GPU或者雲上時,或許就會慢下來,所以程序需要針對不同硬體環境進行適應。

「但是擅長在CPU硬體上進行程序優化的人,可能在程式設計師裡還不到10%,擅長GPU優化的也可能不到10%,但要想擅長在CPU+GPU上進行優化的可能只有1%了,如果是CPU+GPU+ASIC上進行優化的,可能就是0了。」宋繼強表示,如果這些事情機器編程能夠實現,就可以大大加速高質量程序的設計。

機器編程的發展尚在早期,讓AI學會寫程序,是人們的普遍預期,從全球機器編程的進展看,不同領域有不同進展,在特定領域,已經取得不錯的突破。但在通用領域就像通用AI的發展一樣,尚未取得實質性突破,仍需要產、學、研各界齊發力,加速機器編程的突破。

在這條加速AI學會編程的賽道上,目前正在湧入越來越多的公司。除了微軟、谷歌、臉書等,在中國包括百度以及一些創業公司也加入了機器編程的研發行列,不同的公司有不同的技術路線。據樓建光透露,微軟亞洲研究院在該領域的研究取得了很多實質性的進展,不但在深度學習模型的組合泛化能力方面做了深度探索,而且他們的從自然語言自動生成SQL程序的技術也已經實用,被集成到微軟的Excel產品中。

英特爾在不久前的研究院開放日上,推出了機器編程研究系統ControlFlag,它可以自主檢測代碼中的錯誤。目前該系統仍處於早期階段,這個自我監督系統希望幫助軟體開發者發現隱藏的bug。為什麼英特爾選擇從檢測代碼bug的自動化切入,宋繼強給出的答案是:「我自己做編程的時候,可能花在寫程序上的時間只是30分鐘,而調試則需要2個小時,所以調試檢測會佔據程式設計師大量時間。如果這一步讓機器來完成,會大大提升編程的速度。」

現在看來,讓AI編程只是在各個「點」有了突破,但就像萬裡長徵是一步步走出來的一樣,「不積跬步,無以至千裡」,現在各公司的每一步探索,都會對未來機器編程產生深刻的影響。
       責任編輯:tzh

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 機器編程,會讓程式設計師丟飯碗嗎?
    機器編程究竟是什麼?它會在未來給我們的世界帶來顛覆性改變嗎?它會讓未來的程式設計師丟掉飯碗嗎?它與目前流行的低代碼開發是不是一回事兒?樓建光認為:「機器編程與目前流行的低代碼開發完全不同,雖然兩者都有程序自動生成的字樣,但機器編程與AI相關,低代碼與傳統開發更為接近,低代碼是通過自動化根據模板生成的,是將常用的功能中間件化或者稱之為中臺化、標準化,通過模塊化、標準化、可視化的技術,將原來需要代碼完成的功能轉換成只要進行簡單的拖拽操作就能完成,從而實現自動化。」機器編程難在哪裡?
  • 機器編程會讓程式設計師們丟掉飯碗嗎?
    機器編程究竟是什麼?它會在未來給我們的世界帶來顛覆性改變嗎?它會讓未來的程式設計師丟掉飯碗嗎?它與目前流行的低代碼開發是不是一回事兒?樓建光認為:「機器編程與目前流行的低代碼開發完全不同,雖然兩者都有程序自動生成的字樣,但機器編程與AI相關,低代碼與傳統開發更為接近,低代碼是通過自動化根據模板生成的,是將常用的功能中間件化或者稱之為中臺化、標準化,通過模塊化、標準化、可視化的技術,將原來需要代碼完成的功能轉換成只要進行簡單的拖拽操作就能完成,從而實現自動化。」  機器編程難在哪裡?
  • 什麼是計算機編程?
    導語隨著科技水平的發展,編程已不僅僅是專業程式設計師的職業技能,更是每個人必備的基本技能之一。但對於大多數人來說,編程還是顯得很「專業」。從那時起,我就開始思考:什麼是編程?編程背後究竟發生了什麼?當我在 2017 年第一次開始在 freeCodeCamp[2] 上學習編程時,我用的是網站內置的代碼編輯器,可以直接看到結果,然而我並沒有真正理解這背後的魔法。
  • 機器編程來了!未來全球78億人都能寫代碼?
    機器編程的實質究竟是搬運代碼模型,還是具有一定的自主開發特徵?目前機器編程的主要方法有哪些,效能如何,具備怎樣的優勢?為什麼有專家認為機器編程不僅不會取代程式設計師,還會創造出大量就業機會?  機器編程讓代碼不再是「手工藝品」  快速發展的科技領域幾乎離不開編程。傳統編程看似簡單,其實對操作者的要求很高。
  • 機器編程:軟體開發領域新動向
    隨著人工智慧的蓬勃發展,機器的智能化程度越來越高,在很多領域,基於大量樣本數據的自我學習,計算機在某一功能領域能夠實現自我完善,通過持續的大數據量學習,執行功能的能力會得到持續提升,究其本質,實質上是一些重複性工作的持續優化,機器學習本身就是學習這些重複性工作的數據(即樣本數據),然後優化工作的過程。在軟體開發領域,如何通過引入人工智慧提升開發效率呢?
  • 美泰新玩具:機器蟲子,還能教孩子編程
    通過藍牙連接之後,你就可以通過 app 讓蟲子四處活動了,而且你會發現這些六條腿的機器蟲子爬起來很像真的蟲子。Kohut 表示在活動中他們向孩子展示機器人研究成果,「孩子們非常想要它們,家長們問哪裡能買到這些」,這令他們最終決定將成果商業化。
  • 自動編程還能自主檢測Bug,有了機器編程人類可更專注於創造
    機器編程與機器學習有很大的不同,機器編程是教系統自己編程。 降低行業準入門檻,從業者創造性會更強 機器編程發展是否會讓英特爾的程式設計師失業呢?Justin表示:不會。相反,機器編程實際上會創造數千萬到數億個就業機會。他進一步解釋到:首先,當今存在的大多數機器編程系統都需要大量的數據,這些數據通常是以代碼的形式存在,而代碼是由專業程式設計師編寫。
  • 英特爾公布五項新技術進展,涉及機器編程、量子計算等
    12 月 4 日下午消息,在今日的英特爾研究院開放日上,英特爾公布了其在集成光電、神經擬態計算、量子計算、保密計算、機器編程五項新技術進展。英特爾今日宣布,聯想、羅技、梅賽德斯 - 奔馳和機器視覺傳感器公司 Prophesee 加入 INRC,共同探索神經擬態計算在商業用例上的價值。量子計算方面,英特爾宣布推出第二代低溫控制晶片 Horse Ridge II,這標誌著英特爾在突破量子計算可擴展性方面取得新進展。可擴展性是量子計算的最大難點之一。
  • 讓軟體自己寫軟體,機器編程未來會取代程式設計師嗎?
    【CSDN 編者按】機器編程的可行性增大促使這一想法加快落入實地,事情的發展開始令人期待。英特爾為未來跨架構編程時代所設計的機器編程將會怎樣影響程式設計師的世界?軟體能否實現編寫軟體?作者 | 鄭麗媛 責編 | 張文頭圖 | CSDN 下載自東方 IC近年來,隨著計算機領域的快速發展,逐漸形成了一股對立的趨勢:計算機資源愈發異構化,因而需要更多硬體領域的專家級程式設計師 VS軟體開發人員更青睞抽象高效的程式語言
  • 計算機程式語言的發展簡史,人工智慧與雲計算程式語言!
    學習一兩門計算機程式語言也如當初學習英文一樣的火熱,隨著人工智慧AI和雲計算的不斷發展,Python語言和Scala語言已經成為這兩個領域裡面最為火熱的程式語言了,可以預知未來學習計算機程式語言的人也一樣會如同學習英文一樣的成為一種新常態,並且成為一種穩定的常態。以下筆者將以自己的學習認知,簡單的闡述一下計算機程式語言的發展。
  • 新手學編程,從哪裡開始?
    那麼,你的工作究竟是什麼呢?我幫助顧客解決問題,通過開發軟體,來提高他們的工作效率和營業額。通常,我要幫他們實現需求。這是一個寬泛的答案,幾乎可以來描述所有工作。但接下來的問題可以作很好的解釋。人們經常使用手機的應用程式,所以談論起手機應用來輕鬆地多。
  • 少兒編程編程靠譜嗎?為你決疑
    縣城,不知道算十八線城市不算,大街上竟然也有招收小孩子學編程的廣告,上面當然還是那句毫無懸念的話:不能讓孩子輸在起跑線上。於是很多父母糾結:不讓孩子學吧?又懼怕那條無形的起跑線,讓學吧,又不知道是否真的有用。 編程者,編寫程序也(和沒說差不多吧?)。但究竟小孩子適不適合早早地學編程。應先了解什麼是編程。
  • 人類VS機器,人工智慧的本質究竟是什麼?
    他指出,發展人工智慧似乎可以用來研究如何進一步減輕一些基礎任務的負擔,如會議的安排與協調等。那麼,人工智慧的現狀究竟如何呢?人工智慧的性能取決於其訓練集。最好的人工智慧可能有最多的數據點來進行對比和計算。斯基納(Skinner)和帕夫洛夫(Pavlov)的行為主義對人類學習的本質做出了相似的假設。
  • 編程和樂高機器人啥關係、編程啟蒙怎麼做……| 逃媽說編程(下)
    ,究竟是啥關係?可在沒有圖紙的情況下,怎麼搭出這個能前進、後退、轉彎,手臂能抬起放下,還能挖土、倒土的機器卻是難點。沒有這個靈活的機器,程序編得再好也沒招,叫天天不應叫地地不靈。不過為了讓大家都能看明白,我還是先解釋一下這些Scratch、C++、Python是怎麼回事,為什麼會有這麼多程式語言。在上一篇我談到編程的本質,用一句話來解釋,就是和電腦對話,用電腦聽得懂的語言,告訴它我想讓它做的事。可電腦那臺冷冰冰的機器能聽懂啥啊?其實它只能聽懂由0和1組成的序列。
  • 2018年教育部高中課改方案首次將信息技術加入必修課範圍 學習編程...
    當前,有許多家長已經開始關注孩子的編程教育,是否應該讓孩子儘早地學習編程,如何才能學好編程,學習編程究竟難不難等等,都已成為家長們討論和想要知道的話題。日前,記者採訪了蘭州市城關區樂享未來編程培訓學校的陳健智老師,就有關編程方面的問題予以簡要解答。
  • 英特爾機器編程工具可檢測代碼中的Bug
    英特爾今天推出了機器編程研究系統「 英特爾首席科學家、英特爾研究院機器編程研究主任及創始人通過ControlFlag以及類似的系統,程式設計師有望大幅減少Debug的時間並把更多時間用於人類程式設計師最擅長的工作——向機器展現有創造性的新想法。」
  • 潘石屹都參加全國青少年編程能力等級測試了,你還在問編程是什麼
    編程究竟為何物,竟讓潘總痴迷到如斯地步?關於這一疑問,潘總在微博也做了解答。除了一連串的佩服驚嘆,潘總的這張準考證還有一個亮點引起了大家的熱議,那就是 「青少年」。這也引起了很多家長的關心,編程究竟是什麼?程式語言有哪些?青少年學它有什麼用?
  • 科普|家長不懂編程也沒關係,3分鐘了解少兒編程究竟學什麼?
    編程這項技能包含複雜的邏輯算法和龐大的數據結構,不像音樂、美術、運動之類的興趣,客觀方面知道孩子學得好不好。而少兒編程畢竟是一門「新興學科」,有的時候,家長們真的不好評估。今天,就給大家好好講講少兒編程究竟學什麼?學習少兒編程就是學編程技能嗎?
  • 英特爾推出全新機器自動編程系統
    英特爾與麻省理工學院(MIT)以及喬治亞理工學院(Georgia Tech)共同推出了一種新的機器編程(machine programming
  • 機器翻譯VS人工翻譯:二者關係究竟如何?
    文/何昕  近年來,機器翻譯(Machine Translation)發展十分迅猛,但對於機器翻譯與人工翻譯(Human Translation)孰優孰劣、前者是否會取代後者、二者關係究竟如何,一直存在爭議,而且最近引發的爭論越來越熱。