[轉]人人都是程序員—自動編程軟件在德國浮出水面
2006-12-19閱讀4413 評論1
CT公司對外公布最新研發成果
來自美國芝加哥的消息,一家名為CT(Care Technologies)的軟件公司向外界公布了其最新的研發成果——一款聲稱可以把應用軟件開發速度提高四十七倍并可在某種程度上代替程序員的自動編程軟件。據了解,這款軟件被命名為OlivaNova。
為了證實這款軟件的功能,Care Technologies公司(以下簡稱CT)還特地邀請了很多對此感興趣的公司去其位于德國慕尼黑的一個工作室做了為期兩天的訪問。在該工作室,參觀者 們親自試用了一些由OlivaNova“編”出來的軟件,有一個商店管理系統、一個效用管理軟件和一個高爾夫俱樂部管理系統。但由于時間的限制,他們并沒 能對這些軟件的性能進行具體的評估。
看到這則新聞,相信所有的程序員包括比爾·蓋茨都會驚出一身冷汗。因為人人都可以用OlivaNova自動編制出需要的軟件,人人都是程序員,蓋茨們就要 丟掉手中的金飯碗,怎能不急呢?但在打倒比爾之前,還是有必要了解一下這個所謂的自動編程到底是個什么東西?是不是真的如此神奇?
自動編程初露端倪
我們都知道,在各種集成開發環境中,向導(Wizard)可以幫助人們建立多種典型的應用程序。不過這還不能稱作自動編程,因為通過向導等建立的程序必須在人工修改后才可正常使用,向導過程中也需要給出各種參數,毫無智能可言。
因此各種組織和公司都致力于在自動編程方面取得進展,如對象管理組織(OMG)在UML 2級的基礎上①提出了MDA(Module Driven Architechture)的概念,目標就是要實現從UML企業化模型到最終代碼的自動化生成。這類典型的軟件包括IBM Rational Rose以及一系列Rational軟件。
而上面提到的OlivaNova軟件,它并沒有采用UML的MDA能力,而是使用了自己編寫的模型執行系統。使用OlivaNova軟件進行自動編程時, 需要先使用OASIS模型語言建立軟件架構,然后OlivaNova會啟動內置的轉換引擎選擇合適的程序開發語言輸出程序。其整體思路與MDA并無多大差 異,但應用卻要廣泛許多。
目前OlivaNova支持的開發平臺有Windows和幾乎所有的Unix/Linux,并可自動生成VB 6.0、JAVA/EJB、JSP、Cold Fusion、。NET程序代碼,以用來開發Web、客戶端/服務器、Web Serivce、Windows Service等程序。
OlivaNova擴展了自動編程應用的領域,可謂領先于IBM等大公司,著實火了一把,但這種自動編程真的能夠讓人人都編制出自己需要的程序嗎?我們先來看看編程語言的發展歷史——
程序設計語言發展史
當計算機在上世紀四十年代剛剛問世的時候,編程可謂是痛苦的工作。當時的計算機,并沒有鍵盤等輸入設備,人們只能使用笨重的繼電器、開關去操作龐大的“巨 型機”。所有的程序都使用機器語言以二進制形式(全都是0、1的組合)書寫,再用專門的像老式打字機一樣的穿孔機把源程序敲到到一條長長的黑紙帶上。然后 操作員拿著長長的紙帶進入酷似外科手術室的機房,進行期待已久的計算。若是程序出現錯誤,還需要重新打孔。
1949年,匯編語言被提出,它大大提高了編程的效率,但仍不夠直觀簡便。1953年12月,IBM公司程序工程師J. Backus開始設計一種用于科學計算的“公式翻譯語言”(FORmula TRANslator)。他的小組于1954年完成了第一個程序設計高級語言——FORTRAN。自此以后,各種高級程序設計語言如雨后春筍般涌現出來, COBOL、ALGOL、BASIC、PASCAL、C/C++……令人眼花繚亂。
近年來,隨著面向對象程序設計和網絡技術的興起,一批新的程序設計語言開始流行,如Sun的Java、微軟的C#語言和。Net平臺、網頁編程流行的PHP、ASP、通用的XML等等。
但再怎么說程序開發語言也只是讓人們越來越易讀懂程序,在軟件日益龐大的今天,動輒幾萬行的源碼全靠手工編寫,非把人累趴下,因此各種各樣的開發工具就成為編程的必需品——
開發工具助力程序設計
開始,人們使用編譯器或解釋器內置的查錯功能自動檢查程序源碼中的錯誤,在代碼不多的情況下,也足夠程序員使用。而隨著代碼的增多,單純在編譯時檢查錯誤 遠遠不能滿足需要,因此誕生了一些具有語法高亮顯示、規范代碼功能的編輯器,它們都能夠在書寫代碼時有所提示,將錯誤扼殺于萌芽狀態。這方面著名的有 Emacs、vi,還有UltraEdit、EmEditor等,目前還被廣泛使用。
上述編譯器以及編輯器都沒能解決代碼基本靠手寫的問題,因此集成、可視化的開發環境被提上日程。集成開發環境減少了開發程序所付出的時間、金錢以及腦細 胞,只要輕敲幾個鍵,一整段代碼就可以使用了。在這方面,典型的如Macromedia的Dreamweaver和Microsoft的Visual Studio .Net。
Dreamweaver可以根據用戶的排版方式自動生成HTML代碼,最新的Dreamweaver MX2004更是將主流網頁服務器腳本和數據庫開發結合在一起,這樣普通人也可通過它設計出個性的站點。Visual Studio .Net則更為強大,其擁有的眾多特性,如注解報告、命令窗口、部署工具、文檔導航等,使程序員開發和維護一個項目更加容易。
各種編程工具雖然極大地解放了程序員的雙手,但重要的代碼組合還是需要手工完成。人們夢想著有一天能夠不再揮動雙手而自由翱翔在程序的海洋里,而這一夢想也正在逐步變為現實——
自動編碼初級階段
不管是OlivaNova還是IBM的Rational,在生成代碼之前都需要用特定的語言建立一個軟件模型。因此,與其說它們是自動編程工具,還不如說是輔助程序員開發的快速編碼工具,并且僅僅處于“自動編碼”的初級階段。
為什么這樣說呢?這是由于用此類自動編碼軟件所生成的代碼很大程度上只是一些原型,往往可控性較差,真正有用、實用的東西還是需要人工實現。CT宣稱OlivaNova所寫出來的代碼的錯誤只有手工編程的7%,雖然很少,但還是會有錯誤。
既然這樣,我們使用OlivaNova打倒比爾的夢想是不能實現了。但從中可以看到,未來單純的編碼工作將逐漸消失,對軟件工程的掌握會成為程序員這一行當的必需,否則真有丟掉飯碗的危險。
(上海拿破盾)(jy23y01)
編者按:作為普通人的我們也不必灰心,因為人們對自動編程的研究是無止境的,當人工智能取得長足發展,各種軟件模型能夠直接由具有人工智能的計算機建立之 時,自動編程就真正實現了。那時的我們,只需告訴計算機軟件要實現的功能,就能夠自動生成相應的代碼,比爾·蓋茨們再也不能從我們手中掠走分毫血汗 錢?.....