一、結構基礎
物質文明之有今天的成就,是因為人類掌握了物質的基本結構。物質的種類無窮,但是卻都由基本元素交互組成,只要根據一定的法則,就能得到一定的結果。 電腦技術雖然日新月異,應用軟件的變化也無止無盡,而其基本因子卻非常有限。各種微處理器的組合語言,正是電腦軟體的基礎結構,任何要通過軟件以完成的動作,都是經由組合語言的指令群,逐步執行的。 因為電腦結構複雜,各種任務分工極精。即使是一位資深的高級程式師,終其生也不過局限在若干固定的程式中鑽研,很難以宏觀的立場認知全貌。再加上市場需求的壓力,局外人莫名其奧妙,局中人又忙得不可開交,所以還沒有任何人能作出全盤的評估。 組合語言首先成為被誤解的犧牲者,包括應用它的系統工程師在內,都一致認為它「難學難用」(中文也是一種組合形式的應用,其所組合者是人的概念。無獨有偶,人們在不求甚解之餘,都視之為畏途。)事實上大謬不然,現在是科學掛帥,而科學的精義就在於系統的分類和應用。問題是我們能不能歸納出一些學習、應用的法則,將組合的過程化繁為簡,以符合各種應用範疇。
二、個人體驗
我個人對此感受極為深切,我原是個十足的外行。1978年第一次接觸電腦,曾以不到兩週的時間,就學會電腦操作,並應用「培基語言」設計完成“倉頡輸入”程式。當時我認為培基語言易學易用,是電腦上最好的工具。 後來,我開始用培基語言設計“倉頡向量組字”程式,每秒可生成兩個字。當時與我合作的宏碁公司建議我採用組合語言,他們說組字程式速度要快,培基語言不能勝任。如改用組合語言,效率可提高十倍,由此開始了我與組合語言的不解之緣。1979年9月我們正式推出了由國人自行設計、具有完整的電腦功能、可運用數萬中文字的“天龍中文電腦”。 宏碁公司動用了三位資深工程師,採用 Z80 MCZ系統,以六個月的時間完成了向量組字及系統程式。記憶空間佔60KB,處理速度每秒約組成30字。 這是我首次發現到組合語言的威力,深究之下,才理解到電腦的全部工作原理。簡單說來,組合語言就是組合電腦所有功能的控制指令,利用它,就可以直接控制電腦。 其他高階語言,只是讓人省事,用一些格式化的手續,把人的想法化為過程的指令。這種情形就相當於為了遷就開車的人,建了密如蛛網的高速公路。本來走路只要幾分鐘就可到達的地方,以車代步的結果,反而需要耗費半個小時。 1980年,我決定自己動手,又重新設計了一套字數較多,字形較美觀的組字程式。只用了三個月的時間,結果不僅記憶空間縮小了三分之一,速度也快了十倍,達到每秒 300字。這個產品,就是1蘋果機上用的「漢卡」。 1983年,再經分析,我發現以往寫的程式很不精簡,技術也不成熟。我堅信中文字形在電腦上的應用,將是中國文化存亡興衰的根本因素,不僅值得投注自己的時間及精力,且也有此必要。所以我又拋掉了一切,重頭設計,加入更多的變化參數,並根據人的辨識原理,設計成第三代至第五代等多種字形產生器。每一代之間,速度都明顯地提高,功能也不斷加強。在這樣一再重覆的摸索中,嚐試了各種可行的途徑,充份認識了組合語言的特性及長處。 由於組合語言靈活無比的特性,我發現它就如同畫家的畫筆一般,只為了牟利,可以用它畫成各種廉價速成的商品。一旦投入自己的理想與心智,畫筆就不再只是一枝筆,而成為人心與外界的界面。所畫出的作品立時昇華成為藝術,進入一個更高的境界! 1985年,我再次重新設計規劃,採用人的智能原則,把人寫字、認字的觀念化為資料結構,程式只是用來闡釋資料、控制電腦的界面。該字庫的字形可做到無級次放大縮小,字體、字型皆能任意變化 (每字可以產生數億種變形) 。而且除了現今各種字典已收的六萬餘字外,還可以組成完全符合中文規則的新字六百萬個,足敷未來新時代新觀念的發揮應用。 不僅如此,組字速度又提高了,每秒可以組成 30*30的字形兩千個!當然現在用的是15MHZ 80286 ,比以往的4.75 MHZ的Z80 已經快了近六倍。但是,改良後的新程式,其功能的增加,處理過程的繁雜性已遠非當年可比。 這些成果,用了很多特殊的資料結構技巧,不可能經由高階語言來完成。既然用組合語言所製作的程式能一再大幅度地改進,這就說明了組合語言的彈性極大,效率相去千里。如不痛下苦功鑽研,程式寫完,能執行就算了事,又怎能領悟其中奧妙? 所以,我並不認為組合語言祗是一種程式語言而已,它是一種創造藝術品的工具。它能賦與無知無覺的電子機器一種「生命」,由無知進而有知,由有知而生智慧。通過對組合語言的研究探索。我整理出一些規律,寫成這本書,以便於理解及應用。但是,要真正將組合語言發展成為藝術,尚有待青年朋友們繼續努力,在這個資訊時代,開拓出一片嶄新的天地。 無意義的音符能編成美妙的音樂,無規律的色彩可幻化為繽紛的世界,為什麼電腦的機器指令,不能架構出資訊的理性天地? 這就是藝術,作為藝術家,就必須奉獻出自己的心血,以真、善、美為最高境界。 要達到這種目的,就要認真的作好準備動作,再一步一步地追求下去。
三、利人與利己
任何一種商業產品,當然是以利益為先,先利己而後利人。如果是藝術品創造,則剛剛相反;唯有能忽視己利,瀝血泣心地探索,虔誠狂熱地奉獻,才會迸發出人性的光輝,創造不朽的傑作。 藝術家之偉大,在於此,人性之可貴,在於此。 對組合程式語言,有人視為商品,將寫作技巧當作專利,輕不示人。相信這也是迄今尚無一本像樣的參考書籍之根本原因,我買了不少這類書,但書中除了指令介紹以及編程、偵錯的手續外,完全沒有技巧的說明,好像懂得指令就可以把程式寫好一般。當我自己下了不少功夫,得到了一些心得,再回過頭來看那些參考書,才發現連作者本人所舉的例子,都是平舖直敘,毫無技巧可言。 (更正,在序言中我曾提到有本最近出版的“禪-組合語言”,是唯一的例外,希望讀者不要錯過。) 多年來,我一直想寫本有關組合語言寫作技巧的書,可惜都得不到機會。這次,為了實現「整合系統」革命性的計劃,所有招收的工程師,一概從頭訓練。由於沒有可用的教材,只好自己動手,於是初步有了講義,再經修改,便成此書。 我認為,既然組合語言是種藝術,我們不僅不應該藏私自珍,而且要相互探討,交流切磋,以期發揚光大。 不過,技術本身與利用該技術所創造的產品卻不能混為一談。產品是藉以謀生的工具,能夠生存,大家才有研究發展的機會,也才能把成果貢獻給社會。如果國人不尊重別人的產品權利,只是互相抄襲盜用,或能受惠於一時。但影響所及,人人貪圖現成,不事發展,則觀念停頓,技術落伍,其後果不堪設想。
|