程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 匯編語言的藝術-觀念正誤(二)

匯編語言的藝術-觀念正誤(二)

編輯:匯編語言

四、美國市場的程式語言應用

我手頭唯一的資料,是美國 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 │ 不限 │科學計算│


│理├────┼────┼────┼────┼────┼────┤
│ │basic │ 10.0 │ 8.0 │ 1.0 │ 不限 │ 有限 │
└─┴────┴────┴────┴────┴────┴────┘
由於個人寫作能力,以及程式不同的特性,這種比較並無絕對的價值。不論從什麼角度看,組合語言效能最佳,但制作時間較長,且限於機種,是其不利之處。據統計,C語言近年來有取代組合語言的趨勢,尤其在系統設計上,由於硬體速度的改進,組合語言的邊際效益已日漸減少。
然而,從附錄的程式測試中可以看出,只有組合語言的寫作變化多、彈性大,能夠精雕細琢,將程式的效率發揮得淋漓盡致。純以技術的立場、以及成本的分析來看,真正有實用、推廣的價值的軟件,其初期的開發費用及時間等成本根本微不足道。
硬體之速度及記憶空間每增進一倍,其產品之售價亦上漲一倍,故組合語言仍有其絕對的優勢。至於通用性問題,以目前發展的趨勢來看,機種日漸統一,故絲毫不足為慮。
還有一點也常被忽視的,是程式的積累價值。效率不高、功能不強的程式,很容易就被揚棄掉。反之,則可以不斷地重覆利用,甚至累積起來,成為日後軟件繼續發展的基石。像這樣,程式的制作效率將會隨著累積的程度而直線增加。當然,沒有長遠的眼光和妥善的規劃,是難以竟功的。
要發揮組合語言真正的效益,必須先澈底認識其特性及機能,並應用各種技巧,整理出一套法則,以便推廣應用。這樣雖然辛苦,但是,以未來社會對電腦的需求量,不論成本、效益,也不論硬體發展到什麼程度,唯有組合語言才能使軟體更上一層樓。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved