返回 >> 組合語言之藝術 >> 上一篇      下一篇     本書來源:開放文學網站

第一章     觀念正誤 第一節 電腦

一、前言

  電腦的到來,被喻為人類文化的第三波革命。由於它具有強大的資訊機能和彈性,正好彌補了人類記憶不足、反應遲鈍、厭於重覆和受限於時空的缺點。遂在當今世事繁雜、變化多端的動態社會中,成為人類日常工作中有力的幫手。
  它之不同於人類其他的發明,是以機件的「硬體」結構,去執行可以隨設計理念而改變的「軟體」。這一來,機器便具有了靈活應用的彈性,只要有適合的軟體,它就會忠實不渝地去處理各種繁瑣的任務。
  在初,它的速度及容量很低,但已有足夠的魅力,吸引了無數狂熱的有心人士,為它盡智竭力,不斷地改良更新。僅僅不過十餘年,它已脫胎換骨,蔚為龍象。
  這是一個嶄新的天地,凡是思路廣、創意新,能將各種抽象觀念整理成為有秩序、有條理的人,都能利用電腦的特種「語言」,發展成為實用而成功的「軟件」。隨著軟件大量的應用,工作績效顯著增進。終於,它的地位奠定了,整個人類社會的變化加速發展,對它的依賴也逐日加深。
  在這種形勢下,我們要想充份掌握電腦的發展方向,就必須澈底瞭解電腦的本質,再進一步分析探討可行的、最理想的途徑。由於它還在發展階段,一定存在著許多缺陷,也正因為它並不夠完美,所以更需要我們用心力去澆灌。

二、正名

  任何一個行業,其專業術語的正確性、優雅性,代表了從事該業人士的文化水準。或許有人認為文化水準不重要,那麼還有什麼更重要呢?「信、雅、達」不是一種裝飾,術語是供學習、溝通及表達之用。因此,文化水準在另一個角度來說,相當於該行業從業人員所具有的常識及智力水平。
  有人稱電腦為「電子計算機」,就其源起而言,Computer確是這種定義。因為當時的電腦,僅僅具備計算能力。但是微電腦(Micro Computer)問世後,其計算能力已由小型計算器(Calculator)所取代,其主要功能反而是邏輯推理、圖形及影象處理等。
  當今是一個演進淘汰極為劇烈的時代,舉凡新生事物,由產生到消失,由稚弱到茁壯,無不歷歷在目。原名計算機,現在已証明是當時觀念的不足,我們應該將錯就錯嗎?而且,趨勢所及,它必將朝向人工智能發展,成為道地的「電子」腦。所以,我們認為應該及時更正,名之為「電腦」。
  此外,將Assembly Language 譯為「匯編語言」,這是理解的錯誤。因為絕大多數的程式都需要「匯編」,而Assemble的本意正是「組合」。名不正,理解就會發生偏差,對功能的實際應用就難以發揮。
  最不可原諒的錯誤是因為國人好吃成性,硬把在現代科技界「假借」使用的 MENU 「清單、目錄」,全部直譯為「菜單」!我國文字原有的優越性蕩然無存矣,我無法想像當智慧電腦天天面對「菜單」時,要從何理解、處理(如今工程師當道,賺得多、吃得好,看到菜單就高興)!
  有把Program 「程式」當作「程序」,這也是對文字概念認識不夠所致。「程式」是一種具有「程序」的「式子」,而「程序」只是行事先後的「過程及順序」,讀者不可不知。
  又「硬體、軟體」分指固定及可變的物理性質,「硬件、軟件」則為某一具體的物件;「套件、軟件包」是可以出售的商品;「硬、軟盤」指附屬機器上之設備;「軟碟」是可取用的磁碟。
  還有 CALL 被譯為「訪問」,似乎太擬人化了。它本來就是「調用」特定子程式,名正言順,何不「調用」?Run 被譯為「跑」,則過於「寫實」。這些譯名不禁令我想到,在十多年前,台灣曾有人將Backspace 翻譯為「後悔」,結果貽笑大方,傳為趣事。
  其他此類疏誤尚多,我認為電腦界必須謙虛一些,邀請文學界專家學者,或博採眾見,以免被譏為不學無術。
  實際上,由於概念的應用日趨精密,文字本身也在不停地調整變化。以《莊子》逍遙遊為例,在漢朝時作「消搖游」。後來,改成以「辶」為部首,代表「動作及行為的狀態」的「逍遙遊」,顯然比「消搖游」更為妥貼,於是沿用迄今。
  連思想界都如此,為什麼當今的高科技就做不到呢?

三、應用

  電腦發展的初期,不論硬體、軟體,都出於個人的意向,其功能完全根據發展者自我的認知而定。
  現在,電腦軟、硬體的技術迅速成長,社會上對它的要求越來越高,尤其是軟件的複雜程度,已非任何一個個人能夠掌握。於是,個人英雄主義消逝了,集體合作、功能強大的各種軟件紛紛出籠,電腦的應用普及到社會上各行各業。
  人的願望是永遠無法滿足的,隨著技術的日新月異,使用者開始期待著一種萬能軟件,能一舉解決他們所有的需求。然而,電腦雖然是一種商品,其涉及的技術層次甚高,只有少數專家洞悉其中奧秘。在理論上,只要把所有已知的功能,溶匯在一個套件中,就叫做「整合軟件」,再不斷改進,必然可以符合人的需求。
  這種整合軟件,對西方的功利社會而言,只是可望而不可及的理想。他們製作軟件純為了牟利,成本越低,上市越早越好。既然他們才是掌握技術的專家,而要達到歛財的目的,當然不想勞神費力,去為使用者考慮。
  設計軟件的工具,稱為「程式語言」,其種類甚多。最早用的是「機器碼」,後來為了程式師使用方便,特在機器碼與編程者之間建立了一個界面。此界面所用的字彙及語法,便是「組合語言」。
  由於技術發展之初,各種觀念及認識尚不完整,一般程式師都嫌組合語言太瑣碎,難學難用。故而又發展出一些比較容易應用的「高階語言」。這種高階語言製作的程式,在執行時不僅速度慢,又極佔空間。使得容量有限的微電腦,常常被這種「高級」程式佔滿。
  雖然硬體逐年改進,而軟體工作卻也不斷增加,如果採用高階語言來製作,水漲船高之餘,整合的理想仍舊遙遙無期。電腦界一直有種謬論,咸認記憶體的容量越來越大,所以程式空間並不重要。這是最不負責任的態度!記憶體的增加,正宜用來強化電腦的功能,怎能無故揮霍浪費?
  組合語言則沒有這種問題,在嚴謹的製作方式下,不僅其程式空間小,執行效率高,且製作容易。這一次,我們僅用了百餘個人月,170KB 的程式,完成了有視窗、文書、試算表、資料庫、繪圖、排版及通訊等功能的整合軟件。
  更進一步,我們把這個整合軟件的各個模組,繼續發展成為“整合系統模組”,提供給各系統、軟體公司,作第二次開發之用。由於利用現成模組可以節省程式製作的時間,藉著大量應用軟件的開發,以提昇電腦的功能。
  當然,各種電腦語言都有其優劣點,完全看設計者的理念及目的而定。原則上,其執行速度、佔用的系統空間、在各個不同機種上的通用性、待處理資料的性質以及使用該語言需要的工作量等,都是必須詳加考慮的因素。
  如果我們把眼光放在未來電腦的趨勢上,人工智能必將是唯一的方向。要想微電腦具有人的智能,由於對空間速度的要求,只有借助組合語言始有可能。至於目前一些人工智能專用語言,則都是過渡時期的垃圾,毫無價值!
  不論從事任何工作,必須具有敏銳的眼光和判斷力,等到人人都看到了,再行動手,則只有拚命追趕的份。組合語言正是一個嶄新的領域,先把觀念建立了,再下功夫鑽研技術,將無往而不利。

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

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

 

返回 >> 組合語言之藝術 >> 上一篇      下一篇     本書來源:開放文學網站