三、利人與利己
任何一種商業產品,當然是以利益為先,利己後而利人。如果是藝術品創造,則剛剛相反,唯有能忽視己利,瀝血泣心地探索,虔誠狂熱地奉獻,才會迸發出人性的光輝,創造不朽的傑作。
藝術家之偉大,在於此,人性之可貴,在於此。
對組合程式語言,有人視為商品,將寫作技巧當作專利,輕不示人。相信這也是迄今尚無一本像樣的參考書籍之根本原因,我買了不少這類書,但書中除了指令介紹以及編程、偵錯的手續外,完全沒有技巧的說明,好像懂得指令就可以把程式寫好一般。當我自己下了不少功夫,得到了一些心得,再回過頭來看那些參考書,才發現連作者本人所舉的例子,都是平鋪直敘,毫無技巧可言。
(更正,在序言中我曾提到有本最近出版的“禅-組合語言”,是唯一的例外,希望讀者不要錯過。)
多年來,我一直想寫本有關組合語言寫作技巧的書,可惜都得不到機會。這次,為了實現「整合系統」革命性的計劃,所有招收的工程師,一概從頭訓練。由於沒有可用的教材,只好自己動手,於是初步有了講義,再經修改,便成此書。
我認為,既然組合語言是種藝術,我們不僅不應該藏私自珍,而且要相互探討,交流切磋,以期發揚光大。
不過,技術本身與利用該技術所創造的產品卻不能混為一談,產品是藉以謀生的工具,能夠生存,大家才有研究發展的機會,也才能把成果貢獻給社會。如果國人不尊重別人的產品權利,只是互相抄襲盜用,或能受惠於一時,但影響所及,人人貪圖現成,不事發展,則觀念停頓,技術落伍,其後果不堪設想。
第三節 效率定律
一、效率的定義
在宇宙中,大至物種的演進、變化,小至個人的工作、運動等,都嚴格地遵守效率法則。
效率的定義是:
┌─────────────────────────┐
│F=E/t,即特定的能量在特定的時、空中所作的「功」。 │
└─────────────────────────┘
由上式 F = E/t 可知,特定的「能量」在特定的「時空」中所作的「功」,是一恆定值,既為恆定值,表示不可能有任何浪費。當能量不變時,時、空的延長往往會導致「功率」的不足,從另一個角度看,可以說是能量不夠,效率低。
對電腦而言,如果寫作程式的「功率」能接近此一「恆定值」,而又具有長遠的使用價值,則我們可以假定,這種程式的效率最高。
由人類文明的演進,可以看出,因為技術日漸專業化,工作的難度不僅沒有減低,反而更加復雜。這種藉著職業專家的投入,以節省一般應用者寶貴時間的方法,事實上可以說就是效率的追求。
因為人的生命僅存在於有限的時間,所以其價值極高。每一個電腦程式,其最終目的都是為了服務大多數的使用者,制作程式者僅僅是少數人,其制作時間的長短,永遠無法與大多數的使用者,在操作中所耗費的時間相提並論。
此外,以寫作程式為職業的人,一生中所需寫作的程式,也一定有相當的數量。如果能重復應用寫過的程式,將更縮短其寫作時間。無論從哪一個角度,若要追求效率,組合語言應是唯一的選擇。
作為電腦的從業者,在職業良知上,理應禀著服務人類、追求效率為最高准則。
二、電腦的效率性
電腦的發明,是人類追求效率最具代表性的成就。
目前電腦的機能尚局限在資料處理以及自動控制上,人們利用電腦,所期望得到的效率不外乎下述六點。
1,節省工作時間及工作成本。
2,取代繁瑣、重覆性高或具有危險性的作業。
3,追求精密無誤的資料、訊息。
4,貯存或運算大量的數據或資料。
5,遠距離的通訊或遙控作業。
6,自動化工業生產或一般性服務。
然而,電腦發展方興未艾,上述數點難以表達於萬一。因此,我們有必要將人類所期望的效率整理歸類,以作為分析判斷的依據。
三、四大效率定律
茲以人類社會中,有關作業過程、生產成本及應用價值等三方面,分別假設定律如下:
定律一:
在作業過程上,能以最少步驟產生最大功率者,效率最高。
定律二:
在生產成本上,時、空間及原料最節省者,其效率最高。
定律三:
在應用價值上,功能及成果能一再累積者,其效率最高。
定律四:
最佳的效率,是最符合實際需求的最大邊際效應。
電腦的應用,純粹是為了追求工作效率,據此,硬體、軟體的設計,都應嚴格遵守效率定律。可是事實卻不然,由於電腦發展迄今,一直是「賣方市場」,美其名為「高科技」,內行人高利、高酬,外行人則唯恐後人,亦步亦趨。
電腦界為了謀取近利,在軟件設計的過程上,常采用最缺乏工作效率的高階語言。但是由於高階語言易於制作,生產成本低,只是苦了「無知無覺」的買者,為了追求效率往往要花費更多的代價,購買更昂貴的、更新型的硬體,以滿足其效率的需要。
有人說高階語言制作的程式還有一個組合語言無法比擬的優點,就是很容易「轉移」到其他的機種上。事實上,目前微電腦市場僅存兩種機型:一為IBM PC系列及其兼容機,另一為MACINTACH ,而這兩者所有的軟件,不論采用哪一種語言,都無法輕易地「轉移」!
一般說來,任何一種新的微電腦上市,其執行速度及記憶容量每增加一倍,其價格亦成正比上升。是不是有必要非改進硬體,才能達到效率的要求呢?如果我們能澈底瞭解程式語言的特性,當會明確地認知怎樣才具最大邊際效益。
這也是進化的基本法則之一,當電腦技術成熟之時,真正的效率才會受到重視。同理,在電腦應用效率達到最高點時,也就是電腦技術成熟的時機。我們如果能掌握這個原則,自不難看到長遠的發展趨勢,洞燭機先。
四、組合語言之效率
根據定律一,組合語言之效率是不容置疑的,因為組合語言相當於電腦運行的「機器命令」,能直接產生「功率」。
生產成本有多種意義,在此我們僅討論其中兩點:一是生產過程所需的時間,一是產品的直接成本。
組合語言能以最小的空間,發揮最大的功能。顯然,在等效的功能下,其成品所占空間最小,成本最低。但是對生產過程所需時間而言,組合語言就處於相當不利的地位。除非能有一種方法,可以改進組合語言制作的效率。
這正是本書的主要目的:介紹一種方法,以提高組合語言之制作效率。