组合语言的艺术

 

                                                                             组合语言的艺术

    我个人对此感受极为深切,我原是个十足的外行,1978年第一次接触电脑,曾以不到两周的时间,就学会电脑操作,并应用「培基语言」设计完成“仓颉输入”程式。当时我认为培基语言易学易用,是电脑上最好的工具。
    后来,我开始用培基语言设计“仓颉向量组字”程式,每秒可生成两个字,当时与我合作的宏基公司建议我采用组合语言,他们说组字程式速度要快,培基语言不能胜任。如改用组合语言,效率可提高十倍,由此开始了我与组合语言的不解之缘。1979年9月我们正式推出了由国人自行设计、具有完整的电脑功能、可运用数万中文字的“天龙中文电脑”。
    宏基公司动用了三位资深工程师,采用 Z80 MCZ系统,以六个月的时间完成了向量组字及系统程式,记忆空间占60KB,处理速度每秒约组成30字。
    这是我首次发现到组合语言的威力,深究之下,才理解到电脑的全部工作原理。简单说来,组合语言就是组合电脑所有功能的控制指令,利用它,就可以直接控制电脑。
    其他高阶语言,只是让人省事,用一些格式化的手续,把人的想法化为过程的指令,这种情形就相当于为了迁就开车的人,建了密如蛛 的高速公路。本来走路只要几分钟就可到达的地方,以车代步的结果,反而需要耗费半个小时。
    1980年,我决定自己动手,又重新设计了一套字数较多,字形较美观的组字程式。只用了三个月的时间,结果不仅记忆空间缩小了三分之一,速度也快了十倍,达到每秒 300字。这个产品,就是1苹果机上用的「汉卡」。
    1983年,再经分析,我发现以往写的程式很不精简,技术也不成熟。我坚信中文字形在电脑上的应用,将是中国文化存亡兴衰的根本因素,不仅值得投注自己的时间及精力,且也有此必要。所以我又拋掉了一切,重头设计,加入更多的变化参数,并根据人的辨识原理,设计成第三代至第五代等多种字形产生器。每一代之间,速度都明显地提高,功能也不断加强。在这样一再重覆的摸索中,尝试了各种可行的途径,充份认识了组合语言的特性及长处。
    由于组合语言灵活无比的特性,我发现它就如同画家的画笔一般,只为了牟利,可以用它画成各种廉价速成的商品;一旦投入自己的理想与心智,画笔就不再只是一枝笔,而成为人心与外界的界面,画出的作品立时升华成为艺术,进入一个更高的境界!
    1985年,我再次重新设计规划,采用人的智能原则,把人写字、认字的观念化为资料结构,程式只是用来阐释资料、控制电脑的界面。该字库的字形可做到无级次放大缩小,字体、字型皆能任意变化 (每字可以产生数亿种变形) 。而且除了现今各种字典已收的六万余字外,还可以组成完全符合中文规则的新字六百万个,足敷未来新时代新观念的发挥应用。
    不仅如此,组字速度又提高了,每秒可以组成 30*30的字形两千个!当然现在用的是15mhz 80286 ,比以往的4.75 mhz的z80 已经快了近六倍。但是,改良后的新程式,其功能的增加,处理过程的繁杂性已远非当年可比。
    这些成果,用了很多特殊的资料结构技巧,不可能经由高阶语言来完成。既然用组合语言所制作的程式能一再大幅度地改进,这就说明了组合语言的弹性极大,效率相去千里。如不痛下苦功钻研,程式写完,能执行就算了事,又怎能领悟其中奥妙
    所以,我并不认为组合语言祗是一种程式语言而已,它是一种创造艺术品的工具,它能赋与无知无觉的电子机器一种「生命」,由无知进而有知,由有知而生智慧。通过对组合语言的研究探索,我整理出一些规律,写成这本书,以便于理解及应用。但是,要真正将组合语言发展成为艺术,尚有待青年朋友们继续努力,在这个资讯时代,开拓出一片崭新的天地。
    无意义的音符能编成美妙的音乐,无规律的色彩可幻化为缤纷的世界,为什么电脑的机器指令,不能架构出资讯的理性天地
    这就是艺术,作为艺术家,就必须奉献出自己的心血,以真、善、美为最高境界。
    要达到这种目的,就要认真的作好准备动作,再一步一步地追求下去。

三、利人与利己

    第三节  效率定律

一、效率的定义

    在宇宙中,大至物种的演进、变化,小至个人的工作、运动等,都严格地遵守效率法则。 
    效率的定义是:
    ┌─────────────────────────┐
    │F=E/t,即特定的能量在特定的时、空中所作的「功」。 │
    └─────────────────────────┘
    由上式 F = E/t 可知,特定的「能量」在特定的「时空」中所作的「功」,是一恒定值,既为恒定值,表示不可能有任何浪费。当能量不变时,时、空的延长往往会导致「功率」的不足,从另一个角度看,可以说是能量不够,效率低。
    对电脑而言,如果写作程式的「功率」能接近此一「恒定值」,而又具有长远的使用价值,则我们可以假定,这种程式的效率最高。
    由人类文明的演进,可以看出,因为技术日渐专业化,工作的难度不仅没有减低,反而更加复杂。这种藉着职业专家的投入,以节省一般应用者宝贵时间的方法,事实上可以说就是效率的追求。
    因为人的生命仅存在于有限的时间,所以其价值极高。每一个电脑程式,其最终目的都是为了服务大多数的使用者,制作程式者仅仅是少数人,其制作时间的长短,永远无法与大多数的使用者,在操作中所耗费的时间相提并论。
    此外,以写作程式为职业的人,一生中所需写作的程式,也一定有相当的数量。如果能重复应用写过的程式,将更缩短其写作时间。无论从哪一个角度,若要追求效率,组合语言应是唯一的选择。
    作为电脑的从业者,在职业良知上,理应禀着服务人类、追求效率为最高准则。

二、电脑的效率性

    电脑的发明,是人类追求效率最具代表性的成就。
    目前电脑的机能尚局限在资料处理以及自动控制上,人们利用电脑,所期望得到的效率不外乎下述六点。
    1,节省工作时间及工作成本。
    2,取代繁琐、重覆性高或具有危险性的作业。
    3,追求精密无误的资料、讯息。
    4,贮存或运算大量的数据或资料。
    5,远距离的通讯或遥控作业。
    6,自动化工业生产或一般性服务。
    然而,电脑发展方兴未艾,上述数点难以表达于万一。因此,我们有必要将人类所期望的效率整理归类,以作为分析判断的依据。

三、四大效率定律

    兹以人类 会中,有关作业过程、生产成本及应用价值等三方面,分别假设定律如下:

    定律一:
        在作业过程上,能以最少步骤产生最大功率者,效率最高。
    定律二:
        在生产成本上,时、空间及原料最节省者,其效率最高。
    定律三:
        在应用价值上,功能及成果能一再累积者,其效率最高。
    定律四:
        最佳的效率,是最符合实际需求的最大边际效应。

    电脑的应用,纯粹是为了追求工作效率,据此,硬体、软体的设计,都应严格遵守效率定律。可是事实却不然,由于电脑发展迄今,一直是「卖方市场」,美其名为「高科技」,内行人高利、高酬,外行人则唯恐后人,亦步亦趋。
    电脑界为了谋取近利,在软件设计的过程上,常采用最缺乏工作效率的高阶语言。但是由于高阶语言易于制作,生产成本低,只是苦了「无知无觉」的买者,为了追求效率往往要花费更多的代价,购买更昂贵的、更新型的硬体,以满足其效率的需要。
    有人说高阶语言制作的程式还有一个组合语言无法比拟的优点,就是很容易「转移」到其他的机种上。事实上,目前微电脑市场仅存两种机型:一为IBM PC系列及其兼容机,另一为MACINTACH ,而这两者所有的软件,不论采用哪一种语言,都无法轻易地「转移」!
    一般说来,任何一种新的微电脑上市,其执行速度及记忆容量每增加一倍,其价格亦成正比上升。是不是有必要非改进硬体,才能达到效率的要求呢果我们能澈底瞭解程式语言的特性,当会明确地认知怎样才具最大边际效益。
    这也是进化的基本法则之一,当电脑技术成熟之时,真正的效率才会受到重视。同理,在电脑应用效率达到最高点时,也就是电脑技术成熟的时机。我们如果能掌握这个原则,自不难看到长远的发展趋势,洞烛机先。

四、组合语言之效率

    根据定律一,组合语言之效率是不容置疑的,因为组合语言相当于电脑运行的「机器命令」,能直接产生「功率」。
    生产成本有多种意义,在此我们仅讨论其中两点:一是生产过程所需的时间,一是产品的直接成本。
    组合语言能以最小的空间,发挥最大的功能。显然,在等效的功能下,其成品所占空间最小,成本最低。但是对生产过程所需时间而言,组合语言就处于相当不利的地位。除非能有一种方法,可以改进组合语言制作的效率。
    这正是本书的主要目的:介绍一种方法,以提高组合语言之制作效率。
    我们的目标不仅在提高数倍的制作效率,并且还要证明,用一种特殊的手段,能将组合语言设计的「模组」,如同砌砖一般,建造出资讯的金字塔来。这样不仅能满足定律三,而且完全符合定律四的要求。
    最重要的,是这种效率的达成,在于利用人的「智力」。我认为在宇宙进化的过程中,到目前为止,「人智」就是最高效率的结晶。任何人若要追求效率,应自己先下手,与其坐待硬体的改进,不如充实程式写作的方法及技巧,至少,这些都操纵在自己的手里。

五、模组的效率

    模组并不是一个新观念,在人类文明发展史上,人一直致力于瞭解自己身处的宇宙。这种瞭解,实际上就是模组应用的观念,将宇宙大环境,分解成为人所能认知的小环境,进而将小环境再分解成为个人的经验素材。
    这样一层层地分解下去,便有了「概念、知识」。换句话说,概念及知识,就是一个个代表人类对客观认知的模组。
    基于模组的特性,人才能灵活地加以应用,因而产生了「人类文明」。同理,当电脑的软件,也演化为模组方式,进一步大量推广运用时,电脑文明的时代,即将到来。
    模组的效率是结构性效率的最高表现,在我们处身的宇宙中,无处没有结构,无一不受到结构的支配。有关模组规划、制作和应用,将在第四章第三节、模组观念中详加讨论。

    第四节  程式价值

一、程式的种类

    因为目的不同,一般说来,程式可以分为以下四种。

  1,应用程式:
        凡专门提供给用户,作某种特殊应用的软件,皆称为用程式。通称「套装软件」( Application Package),即成套包装的软件。

  2,系统程式:
        即为系统所提供的「通用程式」,包括在 DOS环境下运行的「命令」(Command) 及「基本中断程式」等。这些程式都是支援系统硬体,供用户应用的工具。

  3,介面程式:
        介面意为「介」于多个「面」之间,凡电脑各系统、硬体与软体、软体与软体之间,皆可称之为介面。
        对程式师而言,写作程式需要「程式语言」的发展环境,所谓的介面程式,即为此类发展环境所必需者。
        此外诸如 络及通讯等,也可以称为介面程式。

二、价值观念

    不论什么程式,都应该以「正确、精简、效率」为基本原则。但在目前,除了系统程式比较重视精简及效率外,其他的程式多半只重视正确性而已。
    人们往往以为只有硬体才具有价值,其实大谬不然。硬体的变化有限,软体则永无止境;硬体的价值容易衡量,软体却祗有行家才能判断其良窳。在商业利益挂帅的今天,所谓的「行家」,经常就是「既得利益者」。消费大众是盲目的,也是无辜的,行家为了自身的利益,很少愿意道破其中原委。
    此外还有另一层原因,硬体生产需要技术、材料、资金及设备环境,而软件则人人都可以随手盗用。对一个从事软件设计的程式师,尽管有心将工作做得尽善尽美,但一想到其呕心沥血发展出来的精品,很可能剎时之间就被不尊重软件价值的消费者偷抄盗卖,哪里还有兴致去精雕细琢
    如果我们能先将软体的价值观建立起来,且人人尊重软体应有的价值,如此真正受惠的,将是广大的消费大众。否则,这样恶性循环下去,电脑只能靠硬体的改进,来达到效率的追求,软体不过是一种「速食」性的消费品,永远没有价值。
    以金额来看,硬体的市场边际价值远不如软体为高。因为硬体的生产成本高,用户每购买一台,就满足了基本需求。故此必须经常推陈出新,以资获利。当然,市场也有其平衡的法则,高利之下,竞争者多,过时的、效率低的硬体又因恐遭市场淘汰而大幅度的降价。
    从过去的经验中可以推出,硬体效率的改进,大约每年一次,而软体则完全建立在其「价值观」之上。如果值得,设计者愿意投入,软体可以在很短的周期中,或因观念的突破,或因工具的特性,功能及效率立即提高了十百倍!问题在于,连从事程式设计的程式师,对软体的认识都不够充分,所制作的软件尚无法满足使用者的需求,充其量只是速成品罢。故不论是程式师或使用者,对软件的价值观都难以建立。
    上述的工具是指「组合语言」,而观念则是将组合语言视作「艺术」。当然,这些只是理想,基于人性,理想永远祇属于少数人。可是,少数人的理想经常会推动时代,为多数人谋取福利。

三、创造价值

    资讯时代方兴未艾,可以预期到只要有人类存在,电脑将是不可或缺的伴侣,永远伴着人类不断朝向超高效率的境地迈进。且不论硬体技术如何改进、变化,应用软体才是电脑生命的灵魂。一个有价值的软件,在千锤百炼之下,经过人智的洗礼,其意义绝不是物质 酬可以比拟的。
    再换一个角度来看,电脑的硬体技术日新月异,体积日趋轻巧。虽然记忆量也在不断增加,但是软件却刚刚相反,由于对高阶语言的依赖,程式占用系统的空间越来越大,以致于抵消了硬体演进所创造的价值。
    当然这都是软件工程师的责任,如果从事软件开发者,不立时觉悟,电脑将不过是「金玉其表,败絮其内」。同理,从事软件开发者,如果仅顾眼前的方便、急功近利,能抄就抄,能偷就偷,长此以往,电脑永远不能形成气候。
    因此,钻研软体的制作技术,创造软件的实用价值,才是资讯时代的主导方向。从这个角度上来看,组合语言所具备的效率优势,远较高阶语言容易制作的优点更有意义。
    对程式师而言,仅把程式当作一种工作,而不追求效率价值,则其技术及境界将止于此,其成就亦可想而知。唯有殚精竭虑,不断追求完美的人,无论观念和技术都将逐步提升,则在未来的资讯时代中,将会占有一席之地。

四、追求价值

    那么,究竟应该如何去追求最高的价值呢们不妨从几个不同的角度来分析。

  1,程式价值的定义:
        前面说过,组合语言是一种艺术工具,用组合语言所写的程式则是艺术品。而艺术品的价值是很难加以衡量。可是,程式又是一种工具,对工具而言,它是客观存在,必然具有客观的价值。
        因此,我们可以站在客观的立场,将用组合语言所制作的程式、以及其应有的价值,分门别类予以定义。在此我们不考虑其他程式语言所制作的软件,并不表示这些价值定义不适用,而是认为这种比较不公平。因为以下的定义,都是根据组合语言的特性而考虑的。

    1-1 成本价值=目标1×目标2/成本
            「成本价值」是一种人人都知其然而不知其所以然的观念,是指以某一固定成本,在目标1与2两者之间,根据效率定义,何者价值高,即为其成本之代价。
            在现实世界里,人所从事的工作,有抽象的精神或心理代价,也有金钱或物质代价,甚至两者兼而有之。不论如何,也不论成本为何,其价值高者,经常是人所追求的目标。在这种基础上投入的成本,其价值的高低,将视人所追求的目标而定。
            由于「理想」很有可能只是某种特殊的目标或影响,其利益经常远大于经济上的获利。因此,要提高成本价值,绝非仅仅降低成本而已,而是如何提高其影响力。
            再若经济上的获利高于理想,以现实的角度而来看,人不可能轻易放弃利益,而去追求价值不足的「理想」。
            在这种理论下,人的发展方向,是从事理想的追寻抑或物质利益的满足,端视理想与获利两者,对个人的成本价值而定。同理,人工作的方式及对工作的要求,亦因成本价值而有所取舍。
            采用组合语言制作程式,就是明显的成本价值观念。因为组合语言的效率高,追求效率的实现就是一种理想,为此,投下时间及各种难以估计的成本,对那些有能力牟利者说来,当然是不值得。可是在不知「阿堵物」为何者,除了理想的追求,还待何为
            以上面的公式来看,降低成本仍可提高其价值,获利的增加亦然,这是必然的,即所谓的「附加价值」。关键在于如果「理想」的价值低于获利,自然而然,其目标将转移为获利。反之,为了牟利,也可能在发现了理想价值后而改途转向。
            附带的产生了一个话题,若矢志追求理想的人又想兼顾金钱利益,一旦金钱利益的成本价值超过了理想时,根据前述理论,此人随时可能变节。至少,在我个人的见闻中,还没有例外的。

    1-2 功能价值
        绝对价值=采用后效益/未采用前效益
        相对价值=各软件间绝对价值比
            任何软件,如果没有实用的功能,就不可能有真正的价值。至于软件的功能价值如何测定,多多少少要看使用者的主观条件而定。
            在这里,我们提出一个简单的方法,先要知道在采用软件的前后,是否真具有效益种效益,是绝对的,没有大、小的比较。
            然而,如果一个软件没有效益,就不可能成为商品。所以,任何软件的功能价值,应该是比较性的,在类似软件中,取其绝对价值之比值即可。

    1-3 效率价值=程式功能价值/占用空间×执行时间
            效率是可以精确衡量的,只要得到前述的功能价值,其它诸如程式占用的系统空间、执行所需要的时间等参数,都可以透过测试得到。
            当程式的功能价值极高时,相对的看来,其空间及速度的影响不大,但这种程式迄今尚未诞生。尤其是目前电脑硬体的机能还在启蒙阶段,一般说来,现有的软件占有的空间太大,而且速度太慢,故效率不高。正当这个关头,软件所扮演的角色,可以说是举足轻重,效率自然不能忽视了。
            由于软件界还没有注意到这一点,有识之士可以想见,只要能掌握住效率价值,就可以出人头地。

    1-4 累进价值=效率价值×使用频率×软件生命期
            硬体是消耗品,用到一定的时限后,就失去了再利用的价值。而软体则永远没有损耗,除非应用观念的改变,其实用的价值如常。
            不仅如此,应用观念虽然会改变,只要软件是由模组结合而成,其中的共用模组永远不变。略作适当的修改,或再增加功能后,又面貌一新。
            这种共用模组就具有累进价值,也就是说,用模组方式制作的软件,只要分割适当,就应具有累进价值。凡是有累进价值的程式,其边际效益最高。因此品质的要求也相对加高。如上面公式所表示的,累进价值等于该程式本身的效率,以及在不断累积使用下频率和生命期的乘积。只有基于组合语言的高效率,才可能产生这种价值。
        在资讯时代,程式师必须认识软件的重要性及其所具有的价值,才能充份发挥。
  2,程式师应有的态度:
    自动自发,谦虚学习,掌握重点,认真负责,追求完美

  3,软件开发的原则:
    分工合作,量材施用,慎重计划,严格执行,市场导向

  4,工作环境的建立:

    环境安静,资料齐全,消息流通,压力合宜

 

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2009年7月5日
下一篇 2009年7月5日

相关推荐