序
下文来自仓颉输入法的发明人朱邦复先生,放在这里的原因是本人认为Vulkan之于汇编有着相似的地位。
一、结构基础
物质文明之有今天的成就,是因为人类掌握了物质的基本结构。物质的种类无穷,但是却都由基本元素交互组成,只要根据一定的法则,就能得到一定的结果。
计算机技术虽然日新月异,应用软件的变化也无止无尽,而其基本因子却非常有限。各种微处理器的汇编语言,正是计算机软件的基础结构,任何要通过软件以完成的动作,都是经由汇编语言的指令群,逐步执行的。
因为计算机结构复杂,各种任务分工极精,即使是一位资深的高级程序员,终其生也不过局限在若干固定的程序中钻研,很难以宏观的立场认知全貌。再加上市场压力,局外人莫名其奥妙,局中人又忙得不可开交,所以还没有任何人能作出全盘的评估。
汇编语言首先成为被误解的牺牲者,包括应用它的系统工程师在内,都一致认为它「难学难用」,(中文也是一种组合形式的应用,其所组合者是人的概念。无独有偶,人们在不求甚解之余,都视之为畏途。)事实上大谬不然,现在是科学挂帅,而科学的精义就在于系统的分类和应用。问题是我们能不能归纳出一些学习、应用的法则,将组合的过程化繁为简,以符合各种应用范畴。
二、个人体验
我个人对此感受极为深切,我原是个十足的外行,1978年第一次接触计算机,曾以不到两周的时间,就学会计算机操作,并应用「培基语言」设计完成"仓颉输入"程序。当时我认为培基语言易学易用,是计算机上最好的工具。
后来,我开始用培基语言设计"仓颉向量组字"程序,每秒可生成两个字,当时与我合作的宏碁公司建议我采用汇编语言,他们说组字程序速度要快,培基语言不能胜任。如改用汇编语言,效率可提高十倍,由此开始了我与汇编语言的不解之缘。1979年9月我们正式推出了由国人自行设计、具有完整的计算机功能、可运用数万中文字的"天龙中文计算机"。
宏碁公司动用了三位资深工程师,采用 Z80 MCZ系统,以六个月的时间完成了向量组字及系统程序,记忆空间占60KB,处理速度每秒约组成30字。
这是我首次发现到汇编语言的威力,深究之下,才理解到计算机的全部工作原理。简单说来,汇编语言就是组合计算机所有功能的控制指令,利用它,就可以直接控制计算机。
其它高级语言,只是让人省事,用一些格式化的手续,把人的想法化为过程的指令,这种情形就相当于为了迁就开车的人,建了密如蛛网的高速公路。本来走路只要几分钟就可到达的地方,以车代步的结果,反而需要耗费半个小时。
1980年,我决定自己动手,又重新设计了一套字数较多,字形较美观的组字程序。只用了三个月的时间,结果不仅记忆空间缩小了三分之一,速度也快了十倍,达到每秒 300字。这个产品,就是1苹果机上用的「汉卡」。
1983年,再经分析,我发现以往写的程序很不精简,技术也不成熟。我坚信中文字形在计算机上的应用,将是中国文化存亡兴衰的根本因素,不仅值得投注自己的时间及精力,且也有此必要。所以我又拋掉了一切,重头设计,加入更多的变化参数,并根据人的辨识原理,设计成第三代至第五代等多种字形产生器。每一代之间,速度都明显地提高,功能也不断加强。在这样一再重复的摸索中,尝试了各种可行的途径,充份认识了汇编语言的特性及长处。
由于汇编语言灵活无比的特性,我发现它就如同画家的画笔一般,只为了牟利,可以用它画成各种廉价速成的商品;一旦投入自己的理想与心智,画笔就不再只是一枝笔,而成为人心与外界的界面,画出的作品立时升华成为艺术,进入一个更高的境界!
1985年,我再次重新设计规划,采用人的智能原则,把人写字、认字的观念化为数据结构,程序只是用来阐释数据、控制计算机的界面。该字库的字形可做到无级次放大缩小,字体、字型皆能任意变化 (每字可以产生数亿种变形) 。而且除了现今各种字典已收的六万余字外,还可以组成完全符合中文规则的新字六百万个,足敷未来新时代新观念的发挥应用。
不仅如此,组字速度又提高了,每秒可以组成 30*30的字形两千个!当然现在用的是15MHZ 80286 ,比以往的4.75 MHZ的Z80 已经快了近六倍。但是,改良后的新程序,其功能的增加,处理过程的繁杂性已远非当年可比。
这些成果,用了很多特殊的数据结构技巧,不可能经由高级语言来完成。既然用汇编语言所制作的程序能一再大幅度地改进,这就说明了汇编语言的弹性极大,效率相去千里。如不痛下苦功钻研,程序写完,能执行就算了事,又怎能领悟其中奥妙?
所以,我并不认为汇编语言只是一种程序语言而已,它是一种创造艺术品的工具,它能赋与无知无觉的电子机器一种「生命」,由无知进而有知,由有知而生智能。通过对汇编语言的研究探索,我整理出一些规律,写成这本书,以便于理解及应用。但是,要真正将汇编语言发展成为艺术,尚有待青年朋友们继续努力,在这个信息时代,开拓出一片崭新的天地。
无意义的音符能编成美妙的音乐,无规律的色彩可幻化为缤纷的世界,为什么计算机的机器指令,不能架构出信息的理性天地?
这就是艺术,作为艺术家,就必须奉献出自己的心血,以真、善、美为最高境界。
要达到这种目的,就要认真的作好准备动作,再一步一步地追求下去。
三、利人与利己
任何一种商业产品,当然是以利益为先,利己后而利人。如果是艺术品创造,则刚刚相反,唯有能忽视己利,沥血泣心地探索,虔诚狂热地奉献,才会迸发出人性的光辉,创造不朽的杰作。
艺术家之伟大,在于此,人性之可贵,在于此。
对组合程序语言,有人视为商品,将写作技巧当作专利,轻不示人。相信这也是迄今尚无一本象样的参考书籍之根本原因,我买了不少这类书,但书中除了指令介绍以及编程、侦错的手续外,完全没有技巧的说明,好象懂得指令就可以把程序写好一般。当我自己下了不少功夫,得到了一些心得,再回过头来看那些参考书,才发现连作者本人所举的例子,都是平铺直叙,毫无技巧可言。
(更正,在序言中我曾提到有本最近出版的"禅-汇编语言",是唯一的例外,希望读者不要错过。)
多年来,我一直想写本有关汇编语言写作技巧的书,可惜都得不到机会。这次,为了实现「整合系统」革命性的计划,所有招收的工程师,一概从头训练。由于没有可用的教材,只好自己动手,于是初步有了讲义,再经修改,便成此书。
我认为,既然汇编语言是种艺术,我们不仅不应该藏私自珍,而且要相互探讨,交流切磋,以期发扬光大。
不过,技术本身与利用该技术所创造的产品却不能混为一谈,产品是借以谋生的工具,能够生存,大家才有研究发展的机会,也才能把成果贡献给社会。如果国人不尊重别人的产品权利,只是互相抄袭盗用,或能受惠于一时,但影响所及,人人贪图现成,不事发展,则观念停顿,技术落伍,其后果不堪设想。