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