四、美國市場的程式語言應用
我手頭唯一的資料,是美國 COMPUTER 雜志在1983年五月刊載於第65頁的文章,討論當時的 362種軟件發展工具,存貯在一個「相關性資料庫」中,並且對該資料庫中工具的利用情況,一一分析。
文中列舉了34種程式語言,以及其他各種應用工具,茲將程式語言部份,抄錄如後。
┌─────────┬──┬─────────┬──┐
│ 程 式 語 言 │數量│ 程 式 語 言 │數量│
├─────────┼──┼─────────┼──┤
│FORTRAN │ 110│COBOL │ 41│
│JOVIAL │ 15│Structured FORTRAN│ 10│
│Assembly │ 8│Basic │ 5│
│CICS │ 4│Object Code Input │ 4│
│PL/1 │ 3│IFTRAN │ 3│
│SRTRAN │ 3│PASCAL │ 3│
│Structured COBOL │ 3│ADA │ 3│
│Compass │ 2│RATFOR │ 2│
│LISP │ 2│C │ 2│
│DMATRAN │ 2│Memory Dump │ 2│
│BAL │ 1│SMAL/80 │ 1│
│PCL │ 1│SCOBOL │ 1│
│APL │ 1│HAL/S │ 1│
│CHILL │ 1│ALGOL │ 1│
│SNOBOL │ 1│JCVS │ 1│
│CSL │ 1│MODULA │ 1│
│MEFIA │ 1│CMS-2 │ 1│
└─────────┴──┴─────────┴──┘
經過了七年的市場選擇,C已是目前最主要的系統工具,PASCAL則取代了 COBOL成為商業軟件的發展工具。BASIC 仍為學生及業余玩家的伴侶;只有組合語言,大約仍停留在原有的水准上。除了少數的系統程式,如IBM BIOS ( Basic Input Output Services 基本中斷服務程式) 以及 DOS (Disk Operating System 磁盤作業系統) 等外,使用者不多。
這種現象導致了國人極大的偏見,鹹認為美國觀念、技術遙遙領先,他們對軟件發展工具的選擇,必然有獨到的眼光。學校教學,系統公司應用,莫不亦步亦趨、拾人牙慧。
美國是以商業為導向,利用逐年更新設備的手段,以加速產品的改進。所以,他們重視硬體的效率,以及程式寫作的成本,但對程式語言本身的特性,並未受到應有的重視。
不容諱言,目前我們在軟體上,處於相當落後的地位。如果在這個關鍵的時刻,我們還看不清事實的真相,妄想東施效颦,其後果未卜可知。
我認為,只有采用組合語言,大力開發各種應用程式,將最低檔微電腦的性能提升到極致。這樣,我們才能發揮人多勢眾的優點,提升高科技水准。
五、各種語言的性能比較
為了具體瞭解各種常用電腦語言間性能之優劣,我們選用了五種為測試對象,下表即為測試所得之各種統計數據。表中以一為基數,效率高者,其數值相對增加。
在附錄一、二中,我們將各種測試的原程式、所采用的技巧、以及考慮的細節,分別列舉,並一一說明。主要的目標是為了認識程式寫作的技術,和追求效率的手段。
我們測試的指標有二,一是針對各種程式語言本身的適用范圍;一是程式語言之間的差異。根據對時、空效率的分析,我們發現,程式語言之間,有著極大的差異。就是使用同一語言,程式寫作的技巧,也顯著地有所不同。至於程式語言的適用范疇,則因取材有限,未能得出可靠的結論。
我們選了兩個題目,一是點陣圖形處理,將一個 24X24點陣字形,左右、上下各放大一倍,以得到 48X48的字形。這種點陣處理,有很多高階語言難以勝任,所以只好在常用的語言中,選了五種。另一是排序,一般語言都能處理,只是效率相去甚遠。
┌─┬────┬────┬────┬────┬────┬────┐
│ │語言類別│執行速度│占用空間│制作時間│通用機種│應用限制│
├─┼────┼────┼────┼────┼────┼────┤
│ │assembly│ 1.0 │ 1.0 │ 2.1 │限於機種│ 無限 │
│圖├────┼────┼────┼────┼────┼────┤
│ │turbo c │ 7.2 │ 3.2 │ 1.4 │ 不限 │ 無限 │
│形├────┼────┼────┼────┼────┼────┤
│ │pascal │ 6.8 │ 8.1 │ 1.4 │ 不限 │工商應用│
│處├────┼────┼────┼────┼────┼────┤
│ │fortran │ 8.0 │ 6.9 │ 1.0 │ 不限 │科學計算│
│理├────┼────┼────┼────┼────┼────┤
│ │basic │ 720.0 │ 8.1 │ 1.0 │ 不限 │ 有限 │
├─┼────┼────┼────┼────┼────┼────┤
│ │assembly│ 1.0 │ 1.0 │ 10.0 │限於機種│ 無限 │
│排├────┼────┼────┼────┼────┼────┤
│ │c │ 3.0 │ 3.0 │ 1.5 │ 不限 │ 無限 │
│序├────┼────┼────┼────┼────┼────┤
│ │pascal │ 6.0 │ 6.0 │ 2.0 │ 不限 │一般應用│
│處├────┼────┼────┼────┼────┼────┤
│ │fortran │ 8.0 │ 7.5 │ 3.0 │ 不限 │科學計算│