寫不完的代碼,熬不完的夜,進度總是趕不上變化。程序開發是一項既費時費力,又容易出錯的工作。但當前持續湧現的軟體工程大數據以及快速發展的人工智慧技術,正使得軟體自動化成為可能。通過程序合成、代碼補全、程序變換、代碼推薦、程序修復、自適應演化等手段,軟體自動化可以將軟體開發者從繁重的編碼工作中「解放」出來。
「讓計算機完全代替人開發程序,理論上是不可能的。」在近日舉辦的雁棲湖會議上,中國科學院院士林惠民告訴《中國科學報》記者。他表示,雖然從任意的規範說明中自動生成程序的問題不可判定,但可以通過讓計算機與人交互的方式生成程序,也可以在某些特定領域自動生成程序,讓計算機代替人完成軟體開發過程中不需要創造性的工作。
第三次工業革命通常被認為是由計算、通信和軟體來驅動,正在給人類生活和工作方式帶來巨大的變化。軟體工程大數據帶來了新機遇,但程序自動化依然面臨著挑戰。
林惠民說:「深度學習依賴於能夠涵蓋幾乎所有可能的應用場景的大型訓練數據集。從代碼中學習比從數據中學習要困難得多。數據的含義是不言而喻的,而程序的含義則極其複雜;為了提高效率,有些代碼非常晦澀難懂;在程序的語法和語義之間存在著巨大的鴻溝。」
軟體自動化不僅能降低程序編寫的難度,還可以為軟體持續演化提高質量提供有效的支持。
「正如我們所見,軟體技術從根本上改變了商業模式以及人類社會,但與此同時如何應對系統和軟體質量方面的巨大挑戰成為一個新問題,特別是安全性、適應性、互操作性等質量屬性及其相互之間的衝突和影響,在這個方面軟體開發大數據分析大有可為。」林惠民表示。
美國南加州大學計算機科學教授、美國工程院院士Barry W. Boehm介紹了他所在團隊在基於大數據分析的軟體自動化及開發過程中的一些改進工作。他說,通過大規模程序分析和大數據分析可以持續監控軟體開發中的漏洞和技術債務。此外,通過將基於領域模型的代碼生成等軟體自動化技術與敏捷開發過程相結合,還可以進一步提升已有軟體開發效率和質量。
面對計算技術、機器學習和能夠用於訓練算法的大數據的發展,人工智慧正在變得可行。「在人工智慧這條路上,我們仍然還有很長的路要走。但是在很多應用上人工智慧都表現得比人類更加優秀,尤其是在分析大數據並進行預測的工作上,這將導致許多工作包括編寫程序可以被自動化流程以及機器所取代。」英國南安普敦大學計算機科學教授、英國皇家學會院士Dame Wendy Hall表示。
即便如此,Hall也強調在軟體自動化領域,AI的發展可能會給社會帶來的潛在威脅以及需要解決的道德、責任和多樣性問題。她通過《愛麗絲夢遊仙境》比喻說:「正如愛麗絲在透過鏡子時發現的,一些事情並非總是它最初的樣子!在快速發展的AI時代,各類獨立開發的程序導致網際網路內的某些系統彼此不兼容,未來必將面臨混亂和困惑的風險。」
林惠民對此表示認同,在他看來,軟體自動化需要將人類程式設計師的創造性思維和能力與機器的自動化處理能力有機結合。機器無法取代人類,真正需要創造力的工作還需回歸人類本身。思辨性與創造力,始終是人類的核心競爭力。