一場機器與人的戰爭-iCoder智能編程
訊光科技/Andy Kao
前言
隨著AI人工智慧的高度發展,AI可以開車、可以做保全管制出入、可以炒菜、幫你泡咖啡、可以掃地、陪你下棋打麻將,仿真機器人還可以跟人對話,甚至機器士兵都已經出現了。似乎越來越多人可以做的事,AI也都能做,甚至比人做得更好,那程式開發呢?是否也可以交給AI來代勞? 大部分程式師還是不太相信這事會發生,總是自我感覺良好,畢竟軟體工程的環節多,過程複雜,人都無法擬清規則,更何況是機器呢?
近年AI的發展,我們就舉例著名的DeepBlue與AlphaGo為例,1997 IBM深藍以西洋棋勝過世界棋王俄國的卡斯帕羅夫,2016年AlphaGo以電腦圍棋3:0擊敗世界棋王韓國李世乭聲名大噪。AlphaGo與DeepBlue的差異,在於應用了所謂的深度學習(deep learning),前面DeepBlue是以程式設計師預先編制的程式規則,並窮舉全部所有可能的西洋棋數據,加以分析判斷的方式;而AlphaGo的深度學習模式,是基於大量的圍棋對戰數據,來發現規則,如果對戰數據越多,學習就越深入,這與人類的學習非常接近,但能處理的數據量與速度是人類的數千數萬倍;所以,現代的AI,是通過深度學習方式來獲得智能,而不是以預先的規則來定義智能。就是因為這樣,人類才驚覺AI的發展是無止境的,也是危險的,更是人類智能將無法比擬的。
機器人寫程式現況
10年前筆者就曾經寫過兩篇"程式師將被機器取代"的文章在大陸的媒體發表過,受到很大的批評與指責,當時會被認為無稽之談。如果同樣的文章在10年後的今天發表,應該沒有人會說不可能,程式師們也心知肚明,程式設計這種制式的工作早晚是要被AI所取代的,只是時間的問題。
以AI技術來寫程式這個熱門話題,各大廠陣營也不甘示弱,紛紛投入大量的研究,當然就目前而言,成果有限。就針對已經有發表的產品或技術簡單說明如下:
1. Google旗下的DeepMind團隊,就是有名的AlphaGo圍棋程式創造者,除了AlphaGo外,已經針對自動駕駛、投資顧問、音樂評論、甚至司法判決等領域來往下研究,如果都能實現,確實將改變人類的文明與歷史。
2. 同樣是Google團隊下的Google Brain,主要研究方向為:機器學習演算法和技術、醫療健康、機器學習支撐電腦系統、機器人、自然語言理解、音樂和藝術創作、知覺仿真等。
3. 微軟陣營也於去年推出"DeepCoder",號稱可以讓非程式設計人員通過簡單的描述語言來獲得想要的程式碼,系統會自動幫寫出來。但目前這項研究還是屬於初級的實驗階段,只能寫出簡單的程式片碼,還無法進行商業應用。
4. 萊斯大學研究團隊在美國國防研究計畫署和Google資助下,於今年推出了一個可以自動編寫程式的Bayou智能編程平台,Bayou利用GitHub中幾百萬行的Java程式碼當作訓練數據來源,並以神經草圖學習(Neural sketch learning)方式作為訓練模型,來嘗試了解開發人員撰寫程式碼背後可能的意圖。當然這也是個實驗性的產品,目前是針對API型的程式寫法很有幫助,開發者只要寫幾行要使用到的API名稱,Bayou就會自動幫你完成程式碼。Bayou目前也只能在Java框架中使用,而且局限於幾個基本的Java API(如java.lang , java.io 和 Java.util等),他還在尋求長大中。
所以就目前的AI技術來說,深度學習算是一個共同研究的方向,已經慢慢可以應用到各個領域當中。但這項技術用在程式開發上,卻還是啟蒙階段,主要是因為程式開發很不容易規範,再加上不夠統一的規格描述語言,如何用接近人類的自然語言來表達規格並讓機器能夠讀的懂,真的也是一大學問。
何謂iCoder
iCoder就是Intelligent Coder的意思,為筆者2018年的新構想,就是所謂智能編寫程式碼,讓不懂程式的開發人員也可以從事開發工作。如何讓不懂程式的人員也可以開發呢? 其實就利用了多數電腦使用者都會的Word或Excel工具軟體作為背景,也就是說,你只要會使用Word或Excel做表格文件,只要數小時的簡易學習,透過 iCoder你就可以上路開發程式了。
當然,這樣的設計構想也是有侷限性的,企業或單位會用Word來做甚麼表格呢? 通常大都是一些內部管理表格或對外的文件,統計上會使用Excel來做為統計用的報表,因為iCoder都是以Word/Excel的格式為規格,所以必須是Word或Excel可以產生的表格與報表,才能讓iCoder以人工智能的方式自動產生程式碼,如果不是這種表格或報表式的系統,就不適合使用 iCoder來自動編程。
iCoder的核心技術與架構
如下圖,iCoder並不是甚麼黑科技,或使用所謂的深度學習等尖端技術,整體的技術與架構如下:
1. iCoder提供了一個Word/Excel的讀寫引擎,透過這個引擎可以自動讀取表格上的欄位與型別,將數百種的表格做些歸納與整理,讓iCoder可以辨識Word表格,並自動產生對應的資料庫資料表結構(Table Schema),還有對應的RWD網頁,所謂RWD就是代表自適應的網頁,會隨著不同裝置(如平板或手機)的螢幕大小自動調整介面以方便使用者使用;同時iCoder也可以辨識Excel的表格,自動產生查詢程式,並將查詢的資料輸出到使用者所設計的Excel報表上。
2. iCoder所自動產生的,並不是傳統的程式碼,背後有訊光團隊經過多年研發的EEPCloud平台,這個平台採用的都是一些UI與資料庫管理的元件,大都以屬性與事件來封裝,讓開發人員更容易維護。iCoder產生EEPCloud平台的目的,是為了能進行二次開發,畢竟透過Word/Excel的定義,可能無法100%滿足所有應用系統的需求,必要時必須透過EEPCloud的元件設定與JS事件來彌補。
3. iCoder也提供了一個視覺化的商業邏輯設定,即所謂的TRS(Transation)來處理各個表單間的資料過帳。使用者可以在不寫程式的情況下,完成表單間的資料轉移、過帳、同步、異動紀錄、批次結帳等困難的資料處理動作。
4. iCoder為了因應企業的工作流程需求,內建強大的工作流程引擎,使用者只要按照平常熟習的ISO流程圖定義到iCoder上,如此即可讓使用者透過流程引擎在手機或平板上進行電子簽核。
5. iCoder也可以另外產生JS與 C#的原始程式碼來讓微軟的 Visual Studio所編譯,當然你必須擁有EEP.NET的開發平台與元件,才能使用這些原始程式,來與傳統的程式碼直接結合。
iCoder與其他AI技術的差異
目前以AI來取代程式設計,最大的問題在如何了解使用者的需求。通常使用者的需求光是面對面都說不清楚了,更何況是人與要機器溝通,更為複雜與困難。從市場上的AI產品與技術大都是使用了高階的規格語言來定義,通常有較高的學習成本,也不是一般User可以立即上手的;反之iCoder使用了Word與Excel表格來做為與User的溝通橋樑,可以直接透過這些表格來了解用戶需求,不用過多的推算與猜測,通常有一定的精準度,用戶也不必過多的學習,立即可上手。
以AI來開發應用軟體好處就是生產力,通常會是傳統的數百倍效能以上,程式碼瞬間就可以產生,並且比較沒有品質的問題,畢竟AI所產生的程式碼沒有人為的干預,通常不會發生錯誤,反而程式師所寫的程式都是需要經過反覆的測試才能達到一定的品質。而iCoder所產生的 EEPCloud程式碼是完全元件化封裝的程式碼,比起傳統的程式碼更為直覺更容易讓開發者進行二次開發。
AI所產生的程式碼,大都需要開發環境(IDE或編譯器),對於USER來說,開發環境是一大問題,必須安裝不少配合的套件,往往對於不熟悉程式開發的使用者來說,帶來諸多的不便。反之,iCoder採用雲端的技術,使用者只要有瀏覽器與網路就可以進行開發工作,不受時間與地點的限制,隨時隨地可以開發。加上使用Word/Excel簡便許多,還可以離線來製作,再Online上傳即可。企業如果不喜歡資料放在雲端或與他人共用,還可以選擇私有雲的方案。
當然iCoder的明顯的缺點就是侷限性,只能適合企業資料處理與統計及工作流程的各式應用,如: EIP、CRM、SCM、HR及中小型ERP系統等。
結語
根據美國Fast Company雜誌報導了未來學家柯德林頓(Graeme Codrington)的文章指出,過去兩個世紀,全球勞動市場的兩個重大變化,首先,農業領域不再需要工人,接著是製造業。現在,機器人與AI開始進軍產業,可預見的是未來10年,部分白領將開始被逐出公司。也就是說,到了2025年後,某些最熱門的工作將被淘汰,例如機器人取代前線軍事人員、演算法踢走銀行家和理財專員,而人工智慧將可能淘汰律師、會計師還有顧問工程師,當然包括我們行業的部分程式師。
事實是如此嗎? 個人倒沒有這麼悲觀,程式開發被完全取代是需要一些時間的,畢竟應用程式是有領域性與專業性,只是隨著AI的高度發展,可以預測多數的應用程式確實可以自動產生,AI的應用也會從輔助開發演變到核心開發,到時,並不是所有程式開發人員都被淘汰,而是要轉換成如何使用這些AI來結合各行業的應用,也就是多數以程式設計的能力作為價值的開發者將被淘汰。
而這場人機大戰的好戲,正在上演中,結果如何,我們也只能繼續看下去…