五、模組的效率
模組並不是一個新觀念,在人類文明發展史上,人一直致力於瞭解自己身處的宇宙。這種瞭解,實際上就是模組應用的觀念,將宇宙大環境,分解成為人所能認知的小環境,進而將小環境再分解成為個人的經驗素材。
這樣一層層地分解下去,便有了「概念、知識」。換句話說,概念及知識,就是一個個代表人類對客觀認知的模組。
基於模組的特性,人才能靈活地加以應用,因而產生了「人類文明」。同理,當電腦的軟件,也演化為模組方式,進一步大量推廣運用時,電腦文明的時代,即將到來。
模組的效率是結構性效率的最高表現,在我們處身的宇宙中,無處沒有結構,無一不受到結構的支配。有關模組規劃、制作和應用,將在第四章第三節、模組觀念中詳加討論。
第四節 程式價值
一、程式的種類
因為目的不同,一般說來,程式可以分為以下四種。
1,應用程式:
凡專門提供給用戶,作某種特殊應用的軟件,皆稱為用程式。通稱「套裝軟件」( Application Package),即成套包裝的軟件。
2,系統程式:
即為系統所提供的「通用程式」,包括在 DOS環境下運行的「命令」(Command) 及「基本中斷程式」等。這些程式都是支援系統硬體,供用戶應用的工具。
3,介面程式:
介面意為「介」於多個「面」之間,凡電腦各系統、硬體與軟體、軟體與軟體之間,皆可稱之為介面。
對程式師而言,寫作程式需要「程式語言」的發展環境,所謂的介面程式,即為此類發展環境所必需者。
此外諸如網絡及通訊等,也可以稱為介面程式。
4,控制程式:
利用程式控制機器運作者,此類程式完全依賴硬體獨特的機能,專業性極強。
二、價值觀念
不論什麼程式,都應該以「正確、精簡、效率」為基本原則。但在目前,除了系統程式比較重視精簡及效率外,其他的程式多半只重視正確性而已。
人們往往以為只有硬體才具有價值,其實大謬不然。硬體的變化有限,軟體則永無止境;硬體的價值容易衡量,軟體卻祗有行家才能判斷其良窳。在商業利益掛帥的今天,所謂的「行家」,經常就是「既得利益者」。消費大眾是盲目的,也是無辜的,行家為了自身的利益,很少願意道破其中原委。
此外還有另一層原因,硬體生產需要技術、材料、資金及設備環境,而軟件則人人都可以隨手盜用。對一個從事軟件設計的程式師,盡管有心將工作做得盡善盡美,但一想到其嘔心瀝血發展出來的精品,很可能剎時之間就被不尊重軟件價值的消費者偷抄盜賣,哪裡還有興致去精雕細琢?
如果我們能先將軟體的價值觀建立起來,且人人尊重軟體應有的價值,如此真正受惠的,將是廣大的消費大眾。否則,這樣惡性循環下去,電腦只能靠硬體的改進,來達到效率的追求,軟體不過是一種「速食」性的消費品,永遠沒有價值。
以金額來看,硬體的市場邊際價值遠不如軟體為高。因為硬體的生產成本高,用戶每購買一台,就滿足了基本需求。故此必須經常推陳出新,以資獲利。當然,市場也有其平衡的法則,高利之下,競爭者多,過時的、效率低的硬體又因恐遭市場淘汰而大幅度的降價。
從過去的經驗中可以推出,硬體效率的改進,大約每年一次,而軟體則完全建立在其「價值觀」之上。如果值得,設計者願意投入,軟體可以在很短的周期中,或因觀念的突破,或因工具的特性,功能及效率立即提高了十百倍!問題在於,連從事程式設計的程式師,對軟體的認識都不夠充分,所制作的軟件尚無法滿足使用者的需求,充其量只是速成品罷。故不論是程式師或使用者,對軟件的價值觀都難以建立。
上述的工具是指「組合語言」,而觀念則是將組合語言視作「藝術」。當然,這些只是理想,基於人性,理想永遠祇屬於少數人。可是,少數人的理想經常會推動時代,為多數人謀取福利。
三、創造價值
資訊時代方興未艾,可以預期到只要有人類存在,電腦將是不可或缺的伴侶,永遠伴著人類不斷朝向超高效率的境地邁進。且不論硬體技術如何改進、變化,應用軟體才是電腦生命的靈魂。一個有價值的軟件,在千錘百煉之下,經過人智的洗禮,其意義絕不是物質報酬可以比擬的。
再換一個角度來看,電腦的硬體技術日新月異,體積日趨輕巧。雖然記憶量也在不斷增加,但是軟件卻剛剛相反,由於對高階語言的依賴,程式占用系統的空間越來越大,以致於抵消了硬體演進所創造的價值。
當然這都是軟件工程師的責任,如果從事軟件開發者,不立時覺悟,電腦將不過是「金玉其表,敗絮其內」。同理,從事軟件開發者,如果僅顧眼前的方便、急功近利,能抄就抄,能偷就偷,長此以往,電腦永遠不能形成氣候。
因此,鑽研軟體的制作技術,創造軟件的實用價值,才是資訊時代的主導方向。從這個角度上來看,組合語言所具備的效率優勢,遠較高階語言容易制作的優點更有意義。
對程式師而言,僅把程式當作一種工作,而不追求效率價值,則其技術及境界將止於此,其成就亦可想而知。唯有殚精竭慮,不斷追求完美的人,無論觀念和技術都將逐步提升,則在未來的資訊時代中,將會占有一席之地。
四、追求價值
那麼,究竟應該如何去追求最高的價值呢?我們不妨從幾個不同的角度來分析。
1,程式價值的定義:
前面說過,組合語言是一種藝術工具,用組合語言所寫的程式則是藝術品。而藝術品的價值是很難加以衡量。可是,程式又是一種工具,對工具而言,它是客觀存在,必然具有客觀的價值。
因此,我們可以站在客觀的立場,將用組合語言所制作的程式、以及其應有的價值,分門別類予以定義。在此我們不考慮其他程式語言所制作的軟件,並不表示這些價值定義不適用,而是認為這種比較不公平。因為以下的定義,都是根據組合語言的特性而考慮的。
1-1 成本價值=目標1×目標2/成本
「成本價值」是一種人人都知其然而不知其所以然的觀念,是指以某一固定成本,在目標1與2兩者之間,根據效率定義,何者價值高,即為其成本之代價。
在現實世界裡,人所從事的工作,有抽象的精神或心理代價,也有金錢或物質代價,甚至兩者兼而有之。不論如何,也不論成本為何,其價值高者,經常是人所追求的目標。在這種基礎上投入的成本,其價值的高低,將視人所追求的目標而定。