奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> 汇编 >> 汇编语言---程式设计 (1)
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • JDBC专题介绍(1)

  • 全面解析JDBC(9)

  • 全面解析JDBC(6)

  • 全面解析JDBC(5)

  • 全面解析JDBC(4)

  • 全面解析JDBC(1)

  • MySQL中修改密码及访问

  • SQL语法参考

  • 汇编语言---程式设计 (1)
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-21

    汇编语言---程式设计 (1):    学习任何一种艺术,只能从瞭解观念及熟练地运用工具、技巧上下功夫。至于个人的成就及表现,有待于不断地自我要求和探索,不是仅仅通过学习就可以轻易获得的。
        组合程式的写作亦然,虽说尚有时、空效率的客观标准,但是一个功能复杂、应用广泛的程式,其价值的全面评估却非如此单纯。要言之,目前这种组合程式艺术仅在启蒙阶段,尚无成规可循,必须到大众都认识到其价值时,才会有定论。
        因此,我只能在此举一个例子,说明程式写作的观念,希望读者能够举一反三,灵活应用。

        第一节    主题认识

    一、任务

        兹假定有一任务,是要设计一些应用符号,其过程由编码到将符号绘制完成为止。这是一个实际且实用的例子,我利用仓颉码定义符号码,并以程式处理之,既精简,又快速。事实上,字形产生器就是利用类似原理设计的,在此特为参考。
        这些应用符号,是用来画表格,要与文字混用,故将各种表格符号,分解成为文字字符,并予以定码。
        首先考虑编码,在此,「编码」就是前面所说的「资料设计」。一种考虑周全的编码,在程式处理上,可以节省大量的时间和空间; 对使用的人而言,循着一种规则,也可达到易记易用效果。
        要达到上述目的,必须先瞭解一些相关的因素,只要把这些因素纳入考虑范围,且其结果能表现在所编的「码」中,上述的任务就达成了。
        这些相关的因素是:
      1,编码的限制:
        仓颉码取一至五码,限用 24 个字母,此类符号也不      能例外。要能与中文字同时输入,而且不能混淆,故不能    与已存在的中文字码有重码的情况发生。

      2,功能的需求:
        假定要设计四种不同粗细的格子,且每种皆能相互配      合。如:

        ┌    ┬  ┬    ┬  ┬    ┐     ┌  ┬  ┬  ┬  ┬  ┐

        ├    ┼  ┼    ┼  ┼    ┤     ├           ┤

        ├    ┼  ┼    ┼  ┼    ┤     ├           ┤

        ├    ┼  ┼    ┼  ┼    ┤     ├           ┤

        ├    ┼  ┼    ┼  ┼    ┤     ├           ┤

        └    ┴  ┴    ┴  ┴    ┘     └  ┴  ┴  ┴  ┴  ┘
                图  一
        ┌    ┬  ┬    ┬  ┬    ┐     ┌  ┬  ┬  ┬  ┬  ┐

        ├            ┤     ├           ┤

        ├            ┤     ├           ┤

        ├            ┤     ├           ┤

        ├            ┤     ├           ┤

        └    ┴  ┴    ┴  ┴    ┘     └  ┴  ┴  ┴  ┴  ┘

          │  │  │  │      ─  ─  ─  ─
                图    二

    二、分析

        以上符号共有 104种形状(后来我发现不敷应用,又加入一些图形)可以细分为四类,分别为:

        横向,左右延伸,上下等距。
        纵向,左右等距,上下延伸。
        横向,或左或右,上下等距。
        纵向,或上或下,左右等距。

        由此可知,我们已经能够定出其规律:
        1,只有纵向横向,皆连接于格子的中央点。
        2,只有四个位置,即上、下、左、右。
        这种归纳方法相当有用,因为我们发现了二进位的影子,正该加以利用。
        先以四个位置来考虑,上下形即为纵向,左右形为横向,是个标准的二进位结构,如果以对角线来看,左、上,右、下又可以组成另一维二进位,可以各用一个位元来表示。我选用了四种粗细,以凑成四个位元。以一字元示意(x 表与该性质无关的位元)如下:

        凡属细点者:      xxxxxxx0
        凡属粗点者:      xxxxxxx1
        凡前述点不加粗:  xxxxx0xx
        凡前述点粗细加倍:xxxxx1xx
        凡属于横向者:    xxxxxx0x
        凡属于纵向者:    xxxxxx1x
        凡属于左上者:    xxxx0xxx
        凡属于右下者:    xxxx1xxx

        以上各值用了四个位元,共有16种组合,若以码代表之,其组合数当视取码数而定。再参考图一,每种因素取一码,横、直、位置共有四种,结论是最多应取四码。
        取四码虽然理想,但仓颉码的设计原本是为了全部六、七万个中文字,而文字的产生为约定俗成,不可能恰好有一连续空余的四码区段,可以安排表格码。
        我在输入码的组合中,好不容易找到一区,即YYX 码后,没有已存在的中文字,故此决定把表格码安排在此区。
        仓颉码最多取五码,YYX 已用去三码,仅余两码可用。
        再看前面的分析,只有16种组合,而符号有24个之多。这种搭配很不理想,需要再加考虑。
        需要取三、四码的,都是要贯穿格子中心的形状,如果再设几个贯穿格子的形状,也当作基本图形,则每个图形仅取两码即可。
        到底我们要多少贯穿形呢?八个!(见图二)八加十六,恰恰好廿四个,完全符合我们前面所强调的精简法则。
        这几种定义,实际上仅需将第五个位元设为一即可:
        凡属半形者:     xxx0xxxx
        凡属贯穿形者:   xxx1xxxx
        最后,这24个码再加 41H就可以得到与文字相等的码值,读者如有兴趣,不妨试着将这些码的值求出,今后应用时就可循着这种思路得出其输入码,而不必死记。
        不过,编码还没有完成,因为在电脑中,一字一代码是相当重要的原则,精确、效率都建立在这个原则上。假如有一代码所代表的形状,与其他代码所代表者相同,就相当于有「重码」字,这种情况应设法避免。此外,为了便于使用,取码也应依一定规则,配合字母顺序,且以符合程式的处理为宜。
        例如 YYXAK与 YYXKA所得形状完全相同,要避免困扰,应规定依字母顺序,只有 YYXAK为有效码。
        又如 YYXAI所得之形,为左侧细横加右侧细横,相当于一条贯穿的细横。而这种横与 YYXU 一码完全雷同。必要时,可以仅以 YYXU 为正确码,将YYXAI, YYXBJ, YYXCK, YYXDL, YYXEM, YYXFN, YYXGO, YYXHP等码建表拦掉。
        注:关于这一点,由于我当年的疏忽,编错了几个,若现在改过来,就会造成过去所建资料不能再用的痛苦,所以从事规划者,千万慎始!
    三、改进

        上述的编码方式,是否很理想呢?绝对不是,不仅由于当年的经验不足,考虑的不够周全,已经有了一些错误的编码,而且观念上也有疏忽处。希望读者能进一步的研究出更好的方法,至少,应该能把我个人所发生的缺点加以改进。关于这一点,不妨当作考试题目,在参考本章第五节程式写作时,留心一点,就会发现其中大有文章。
        编码确定以后,就可以写程式了。由于编码时已经把程式的「位元资料」一并考虑,所以立刻分支,利用绘图的程式,轻松愉快地,用几条指令,就完成了任务。

        第二节    系统分析

        所谓系统分析,即为有系统、有规则地去分析「对象」,以电脑术语而言,对象指的是所使用的硬体及软体。
        系统是一系列有组织且统属的整体,从宏观角度来看,系统所涵盖的有:
      1,目的:
        任何一种系统,必然有一个特定的目的,如果不能对其目的先作分析,甚至于不知道目的为何,又怎能发挥系统的功能?

      2,结构:
        系统之组成,是基于其特殊结构,也可以说是组件、部件或或部门,端视其系统特性而定。瞭解结构,分析结构的性质,再配合各种条件,才能达到目的。

      3,效应:
        效应指预期的结果,系统分析的意义是为了实现,唯有透过对目的的认识,对结构的瞭解,才能设计出方案。可是这种方案所产生的效应,如不能料于机先,又怎知是否符合理想?
        同时,系统分析还有另一层意义,天下所有的事都是相互的,单一的系统没有分析的可能与必要。比如说分析一部汽车而不理会其行经的路况,不顾使用的条件、油料、配件、人员素养等因素。则我们可以断言,这种分析的结果,除了提供参考外,毫无实用价值。
        在电脑上亦不例外,电脑术语上的系统分析,概指对硬体机种的性质、设备以及使用者的需求范围等的分析、瞭解和设计而言。在下面我们将对这些一一进行分析。

    一、硬体机种

        以 IBM PC/AT作为发展对象,本来不必讨论其硬体机种。只是,站在系统分析的立场,则不能不加以说明,因为这是系统分析必要的步骤之一。
        根据市场分析,国内 IBM及与其兼容的微电脑几乎占 80%以上,中文系统是特为国人发展的,而且是种「附属程式」。以目前的形势看来,可以说是别无他途。
        既然决定了系统,进一步是探讨系统的规格。
        硬体系统的规格,不妨参考随机而来的手册或说明书,资料越齐全,对工作越方便。尤其是「程式师手册」(Programm-er's Manual)更是必备,应事先收集妥当,随时可以取用。
        有了硬体的规格资料,再看哪些与程式本身有关,摘录下来,一条一条地比对,直到全部有了答案,机体的系统分析才算完成。
        兹以一、所述的任务为目标,并假定使用的机种为 IBM的AT 兼容机。
        其相关的规格有:
        系统记忆体      640KB
        硬磁盘      20 MB
        软磁盘      360KB
        萤幕显示卡      Hercules Graphic Card
        键盘      101键,型号 CSK-1101
        操作系统      dos 3.3 版本
        其他周边无关宏旨,从略。
        此外,为了应用中文,假定采用了“聚珍整合系统”,本系统程式包括所有中文字形及七大应用软件,占 440KB。
        作为一个系统,使用者能支配的空间越大越好,既然要用中文,而中文系统程式又是一种附属程式,难免就会占用部份空间。
        因此,要想使中文的应用功能不弱于原系统,必须非常有效地利用时间及空间。既然已经用了 440KB,千万不要再多事浪费。
        有些中文系统的设计,是把中文字形存贮在硬磁盘中,从表面上看来,空间并没有浪费多少。但是不要忘了,硬盘的读写次数有其极限,如果每个中文字要读取一次,大概不到半年的时间,硬盘就会损坏。不仅如此,这种方法速度很慢,用起来也不方便。
        有些设计为了避免上述的缺点,便以扩充记忆体的办法,先将「常用字」装入扩充区内。这样速度加快了,硬盘的损耗也减低了,可是成本却大大增加。也有人认为,硬体在不断改进,光盘问世后,容量不再是问题,何必多虑?
        软体工程师的责任,是要在自己的技术能力上,发挥最大的边际效益。不论硬体是否能够改进,都应该不辞辛劳,努力将程式写好。一方面当目前硬体尚不够理想时,效率高的软件有立足之地,即使未来硬体改进了,优良的软件仍然占有高效率的优势。
        当今电脑的应用观念尚未充份发挥,似乎光盘的容量大得超过我们的想像。可是,在未来的电脑时代,才真是「寸土寸金」,分秒必争的关头。尤其是一旦电脑成为普遍使用的「大众化产品」后,成本之高低将决定产品的成败。中国本来就贫穷,需要的电脑数量又多,能节省一分钱,对整个市场说来,就是一笔天文数字。更何况硬体技术越进步,电脑的体积越缩小,笔记型、口袋型电脑相继问世,其所面临的储存问题并不是光盘能解决的。
        假如真能因为多花一点钱,一劳永逸地解决了问题,倒也值得,事实上却不然。文字是民族、文化的根本,收字不足将形成「残缺文化」。同时,电脑技术在进步,使用者的需求也跟着增加,私人用的排版软件以及「视窗」的方兴未艾,中文还能梦想徒以增加记忆体的方式去与拼音文字竞争吗?
        那么,有没有其他的办法,用少量的空间,一次解决中文字形的困境呢?
        所谓中文系统分析,就是要针对这类问题,提出正确的答案。最理想的答案,就是用事实来证明,我们已经完成了全部中文字形的字库,共收能见诸字典的「有效字」六万余,且能组合出符合仓颉输入法的字形「六百万」个!不仅如此,每个字的大小、长宽级次不限,(即所谓「无级次放大」)字型、字体也无限!而这些功能,仅用了 260KB的空间,每秒钟可组字 500至1000个!
        我们还在努力改进,几十年的苦工算不了什么,只要我们还有余力,只要能保中国文化源远流长,这一切都是值得的。
        前面所提到的任务,正是这些技术之一,因为其范围小,不涉及文字的专门知识,所以特地摘取作为分析的例证,以供有心人士参考。
        因为我们能用 440KB完成任务,20MB的硬盘就可以完全由使用者支配了。反过来说,如果我们的中文字形要占用20MB硬盘,对客户而言,等于没有硬盘可用。于是,除了改变系统的规格,便得宣告该系统无法设计。
        能不能使用软磁盘来存放字形呢?显然也行不通,软磁盘的读取速度慢,容量也嫌小,一般只用来做资料转换。
        至于 Hercules 图形板,只是显示模组的一小段程式,我们提示在此,是因为这种显示板很适合中文系统。
        键盘是一项经常被系统分析所忽略的组件,我个人过去就如此,这次特别提出,并在下文中详细说明。

    二、原则

        由前面任务已知有一种编码,能利用仓颉码特色,加入所有的表格符号,现在要找出一种有效率的设计及应用方式。
        谁都知道在电脑作业过程上,产生功率最直接的步骤是机器码。而组合语言就是机器码的介面,根据效率定律一,组合语言的作业效率最高。
        任务前面已经详细说明,效率的要求非常高,因此,我们决定利用组合语言作为基本工具。
        再看效率定律二,生产成本的效益,取决于工作时间及损耗。如果采用组合语言写作,能不能在时间上有所改进?我们可以用事实证明,只要受过良好的训练,掌握了所有的技术,而且一切工具准备齐全,用组合语言写作所需要的时间,绝对不会比高阶语言多。
        根据效率定律三,要达到应用方便的目标,在于功能的累进。不论将来硬体多进步,人类对其速度及容量的要求永远不会满足。采用组合语言只是第一步,举凡模组、介面等结合的技巧,及「整合」的观念,都有待大家努力去研究、开发。

    三、工作性质
        在谈到实际工作前,我们先说明一下中文系统。有人认为此为一系统程式,但我个人认为不如称之为附属程式。附属程式是一种环境,透过这种环境,可以增加中文的功能。因此,这种程式一定要驻留在系统中,而且,要改变原系统程式的中断程式位址。
        所有的附属程式都需要一种「介面」,我们的工作自不例外。此处首先根据工作的性质,将所需的介面列举如下:
        1,初始化系统图形态。
        2,检查系统使用空间,决定是否能够执行。
        3,检查和安排所有必要的参数值。
        4,改变必要的中断入口位址。
        5,申请程式的驻留,并回到系统。
        在中文系统上,改变最大的首推图形字符显示INT 10H和列印INT 17H,其次是键盘处理INT 16H,和利用时序中断 INT 1CH 作为图形游标。这些本属系统功能,加以修改后,成为新的中断入口,在此仍称之为系统程式。
        我们过去曾犯了一个很大的错误,为了想全面控制系统的功能,在改键盘中断程式时,把 INT 9H 也改了。原因在于对系统分析不够彻底,以致对该段程式的瞭解有了偏差。
        INT 9H是在键盘输入后,每键产生两个字元的讯号,分别称为:「扫瞄码」(Scan Code) 及「字符码」(ASCII Code)。早期的机种,其键数不多,字符码完全符合 ASCII  的规定,即最高位的位元保持为0。
        中文系统之所以能与若干英文软件兼容,就是利用该最高位元做分辨。我们当时误认为字符码不可能再改变,所以在写INT 9H时,该位元并未一一检查。不料新键盘的键数增加了,由于字符码不够,新加的「页控制键」,即键盘右中一列、键色较深的一区,其字符码皆为0E0H,亦即其高位不为0。这一来,在中文系统下,一碰到那些键,就被当作中文,事实上却又非中文码,因而天下大乱。
        但是,在经过IBM BIOS的处理后,INT 16H 所得到的值却不然。那是为了与以往的系统兼容,把高位的位元放到一个缓冲器里去了。如果我们不改 INT 9H ,就不会有任何问题,而改了以后,又没有注意到这种情况,以致产品性能极不稳定,为人所诟病。
        因为程式本身非常简单,介面解决以后,就只是程式的安排了。

    四、相关问题

        再来看看我们的工作还有什么应该注意的,除了程式本身的制作外,还要把前述的编码放到“聚珍整合系统”中。该系统的规格,请参考2聚珍整合系统操作手册。
        我们已再三强调,表格之加入,一定要精简,否则喧宾夺主,就不值得了。
        这104 种图形如果用点阵来画,共需 21,632B,竟占了系统空间的百分之廿。这还不说,点阵不能放大缩小,就无法供绘图、排版用。
        于是决定了第一个原则,这些形状必须用程式绘制而不是存点阵资料,而且程式越小越好。
        由于中文系统已经是图形态,且具备多种功能,所以不必再写绘图的程式,只要将输入码转换成该程式可以接受的资料结构即可。
        “聚珍整合系统”内表格的制作,与下面所举的例子差异不大。为便于说明,在此以早期另一中文系统的表格符为例,使用的技术虽不成熟,但较为简洁。
        当时所定的结构,是以暂存器的性质为本,规格如下:
        AX=图形指令,如:横、直、斜、捺、点以及卅多种复杂          的字形
        BX=X1,X2
        DX=Y1,Y2
        SI= 指令贮存区起始位址
        DI= 图形点阵贮存区起始位址
        因此,只要资料结构符合,就可以运用原有的子程式。
        第二个原则也因之决定,本程式应纳入原组字程式中,作为其中一个模组。
        第三个原则,是在内码及资料表中,要增加一组表格码的资料。这并不难办到,因为 YYX后没有其他有效的中文字码,所以不会妨碍中文字码的排序。
        凡是涉及编码的作业,千万不可忽略排序的功能。对系统分析来说,排序的功能是资料处理上,有关效率的重要手段。例如有个人口达一百万的都市,这一百万人的各种资料,都需要极为昂贵的电脑来处理。假定排序的功能良好,每天能够准时完成其固定的工作,而且排序的结果能令人一目瞭然,我们可以认定其效率正常。
        再假设文字资料并不具备排序的功能,或者说其排序的结果,与使用者的观念无法配合,则电脑所处理的资料就等于废物。再若为了要用这些资料,须要用「对照表」的方式,重新排序,那么又要一倍以上的时间,也可以说还要耗费钜资增购一套电脑。
        问题还没有解决,人所能接受的「文字序列」倒底又是什么呢?中文本身并不具备序列观念,这才是中文处理效率不足的,最严重的症结所在! 仅以字典为例,国人查字典时每个字要多久时间?一个「一」字,有多少同音字?如果有一个字,不知其正确读音,又该怎样去查?再问下去,恐怕能回答的人不多了,就是包括大学生以及学有专长的知识份子在内,到底能正确地读出多少音?我不讳言自己的无知,对我而言,只有三千个。
        我承认当年研究仓颉输入码时,采用了拼音字母的排序优点。任何人只要能够正确地输入,就能与拼音文字一般快速地在经过排序的资料中,找到该中文字的位置。
        目前中文电脑的发展还在字码输入,及字形显示中留连徘徊,但是,从事这项工作的人,有几个曾认真地考虑过这些问题?有几个真正瞭解系统分析的要求?所以,我期望读者们能够不贪急功,不求近利,扎扎实实地先把各种问题考虑清楚,然后再一步一步地研究解决之。

        第三节    模组观念

        当宇宙中还没有人类文明时,是一个整体,循着一定的规律,无休无止地运行。人类的出现,因为意识到自我与非我的分别,就产生了是、非,有、无,善、恶,好、坏的认知。世事的复杂性,即源自于这种分辨心,而忽略了本体的完整及规律性。
        人类对知识的追求,是利用概念作为工具,有系统地对宇宙各种现象分门别类的分析。而分析的结果,可以视为各种模组,人则藉着各式模组,来认知宇宙这个大环境。
        因此模组并不局限于具体的、客观的事物,任何可以经由分析、归纳而认知者,均具有模组结构。而且每每在一些模组的结构上,又有另一层次的模组展开。
        电脑软件的模组,则是一些功能或性质独立的「目标档」(OBJ Files )。此类目标档与介面模组相互联接后,即可执行。为了追求工作效率,将此类模组有系统的予以分类整理,公开上市,不仅可以避免程式的重复制作,且可便利程式师的组合应用。
        「集装货柜」增进了航运的效率,其原因就在于将货物「模组」化,有的以运送目的地、有的以货物性质而定。此外,如「预铸房屋」,甚至于流水线式的生产等,都具有相同的观念。这和程式制作时,为了效率所作的模组分割,有异曲同工之妙。
        软件模组化的要求由来已久,此与工业生产的经验有关,但是迄今很少有具体的成功先例。因为软件的变化无穷,很难建立一种「工业标准」,既没有标准,就难以统一规划。
        因为标准是人制订的,在初,不论如何深思熟虑,不周之处在所难免。但只要有了先例,而且能提供大家参考、应用,集合众人之智慧,总会有完善的一天。
        问题在于,当今有经验的程式师们太忙了,有的忙于自我创造,有的忙于模仿抄袭,有的则忙于享受、玩乐。学校里所教的,全是与现实脱节的理论,而一出校门,由于软体程式师供不应求,炙手可热,立刻就投入了市场的洪流,推波逐澜,还有谁管什么模组!

    一、模组定义

      1,空间小、结构完整,能独立调用的程式。
        模组不能太大,否则无法灵活应用,程式的结构又必须独立且完整,以便于分解、组合,供二次开发的程式自由调用。
        有些模组需要与公用模组配合使用,由于公用模组为全部模组设计的基础,故仍可视为独立调用。

      2,效率高、弹性大,便于其他程式调用者。
        二次开发的程式系建立在模组结构上,如果模组的效率不佳,必然会影响其操作。同时,各种应用程式都有特殊的需求和条件,而模组则要考虑通用性,否则很难符合各种条件。所以,在设计模组时,要考虑应用的弹性,使之既能适应各种需求,又能达成特殊的任务。

      3,功能明确,其变化以参数设定实现。
        功能不明确,将会令应用者困惑,也就达不到预期的目的。功能明确与否,除了程式本身外,手册及说明也占了极大的比重。
        所谓功能明确,并非指明确的单一功能,而是指功能的分类。在分类时,需要有一种容易分辨的方式,而最简单的,便是设置参数,凭参数作分支的条件。

      4,程式之间必须利用暂存器传送资料者。
        基于程式、模组之间相互独立,各自应用的缓冲器无法统筹运用。故在执行时,必须利用暂存器以传资料或参数,完成彼此的沟通。

    二、模组种类

        将模组分类,为的是便于说明,以下的分类法,并非一成不变。原则上,模组可分为:
      1,功能模组:以所执行的功能加以分割者。
        此类模组要考虑应用上的方便及功能的完整。然而,所谓功能的完整,祇限于独立、单一的目标,绝不可将多个不同的功能,设计在一个难以分割的模组中。

      2,公共模组:没有明确的功能,但具有共用的效益,或其他某种特殊的目的,也可以设计成为模组。
        这种模组经常附属于其他模组中,设计时应注意其调用的灵活性,并应专设一目录,详细记载其用途,以便随时查寻。

      3,介面模组:介于两「面」之间,以解决两者问题之模组。一般在程式中,凡属资料与资料间、程式与程式间、硬体与硬体间者,皆为介面关系,处理这种关系的模组即为介面模组。

      4,应用模组:应用者为人,工作者为程式,故提供给应用者操作的模组,概称应用模组。
        此种模组在实质上,仍属一种介面,但因为其实用价值关系到一个程式的成败,必须独立考虑。
        这种模组变化最大,随时有必要根据使用者的需求修改增减,故设计时要特别留意。

    三、模组分割的基本原理

        中国文化之博大精深,可以由古人的思想略窥一二,许多人自以为学了一点西方科学技术的皮毛,就像夜郎一样了不得了。其实,除了知识在不断累积外,从古至今,人的智慧并没有丝毫增长。
        模组是一种极有价值的观念,任何事物的形体、结构、步骤,甚至于概念、认知等,都可在以某个目标为前提之下,分析成为若干模组。有了模组,范围就会缩小、问题也就变得单纯,比较容易掌握。如果能有效地利用模组,以之作为解决问题的手段,将是无往而不利。
        庄子早见于此,曾经以寓言的方式,在其内篇《养生主》中,就曾对模组的分割,作了透彻的剖析介绍。时到今日,科学昌明之际,读来仍有「振聋起聩」,一新耳目之慨。
        为此,特将原文抄录于下,再作浅释。

        养生主第三

        吾生也有涯,而知也无涯。以有涯随无涯,殆已。已而为知者,殆而已矣。为善??近名,为恶??近刑。缘督以为经。可以保身,可以全生,可以养亲,可以尽年。
        庖丁为文惠君解牛,手之所触,肩之所倚,足之所履,膝之所踦。砉然向然,奏刀騞然,莫不中音,合于桑林之舞,乃中经首之会。
        文惠君曰:『嘻,善哉,技盖至此乎?』
        庖丁释刀对曰:『臣之所好者道也,进乎技矣。始臣之解牛之时,所见??非牛者。三年之后,未尝见全牛也。方今之时,臣以神遇,而不以目视。官知止而神欲行,依乎天理。批大却,导大窾,因其固然。技经肯綮之未尝,而况大軱乎?良庖岁更刀,割也;族庖月更刀,折也。今臣之刀十九年矣,所解数千牛矣,而刀刃若新发于硎。彼节者有闲,而刀刃者??厚;以??厚入有闲,恢恢乎其游刃必有余地矣,是以十九年而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒。视为止,行为迟。动刀甚微,謋然已解,如土委地。提刀而立,为之四顾,为之踌躇满志,善刀而藏之。』
        文惠君曰:『善哉!吾闻庖丁之言,得养生焉。』

      1,前文释义
        人的生命有限,而知识无尽,以有限之生命追求无尽的知识,是自陷于绝地。既已自陷,还妄想藉助于知识,以求自救,当然更是匪夷所思了。
        其实,只要瞭解事物的道理,以及各种问题的症结。不要执着于表象,不要迷惑于现状,顺理而行。如是,不仅可以安身立命,且能功成名就。
        梁惠王有一厨师,宰牛时,姿态潇洒,动作俐落,颇有艺术家的风采。梁惠王见了,赞不绝口:
        『真了不起!你的刀法神奇到这个地步!』
        厨师听了,忙把刀放下,向梁惠王禀告说:
        『臣子我一向重视观念,并不在意小技巧。最初,臣宰牛时,只看到牛的全身。又过了三年,每宰牛时,所看到的只是牛的结构。现在,臣已能心领神会,按照自然的原则,不论是剖肉、卸骨,刀尖只要顺着关键的间隙轻轻一挑,其组织立即迎刃而解。
        好的厨师每年换刀,这是因为切割过多,难免有所损耗;技术较差的,经常用力砍,刀锋易折,每月都需要换一次。而臣所用之刀,已经有十九年了,宰牛不下千头,而刀刃锋利如昔。
        其实,道理很简单,牛体是由很多不同的组织组成,其间必然有衔接的空间。因为刀锋很薄,在组织间隙中移动,轻轻松松,甚至还有多余的地方。
        当然,也有碰到棘手时。臣就会全神贯注,先找到问题所在,小心谨慎地处理。一旦刀锋稍动,剎时之间,组织分离,大功告成。
        那种成就之后欣慰的感受,简直难以比拟。最后,为了下次的工作,把刀擦拭干净,好好保护收存。』
        梁惠王听了,道:『好极了,听你一席话,领悟到不少人生的大道理。』

      2,主旨精要
        人生是有限的,为了有效的利用精力,以解决一切问题,应该学习掌握事物的原理。原理之一,即为事物皆具有模组的结构,模组是事物组成之基础。有能力的人,一定善于分析事理,瞭解事物的结构基础,得以从容不迫,在面对问题时,找到有问题的模组,在其症结上下刀,问题便会迎刃而解。
    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.