汇编语言的艺术之一:观念正误

来源:互联网  作者:本站整理
摘要:汇编语言的艺术之一:(组合语言的艺术)观念正误第一节 电脑一、前言电脑的到来,被喻为人类文化的第三波革命,由于它具有强大的资讯机能和弹性,正好弥补了人类记忆不足、反应迟钝、厌于重覆和受限于时空的缺点。遂在当今世事繁杂、变化多端的动态社会中,……

四、美国市场的程式语言应用

我手头唯一的资料,是美国 COMPUTER 杂志在1983年五月刊载于第65页的文章,讨论当时的 362种软件发展工具,存贮在一个「相关性资料库」中,并且对该资料库中工具的利用情况,一一分析。

文中列举了34种程式语言,以及其他各种应用工具,兹将程式语言部份,抄录如后。

┌─────────┬──┬─────────┬──┐
  │  程  式  语  言  │数量│  程  式  语  言  │数量│
  ├─────────┼──┼─────────┼──┤
  │FORTRAN         │ 110│COBOL           │  41│
  │JOVIAL          │  15│Structured FORTRAN│  10│
  │Assembly        │   8│Basic           │   5│
  │CICS            │   4│Object Code Input │   4│
  │PL/1            │   3│IFTRAN          │   3│
  │SRTRAN          │   3│PASCAL          │   3│
  │Structured COBOL  │   3│ADA             │   3│
  │Compass         │   2│RATFOR          │   2│
  │LISP            │   2│C               │   2│
  │DMATRAN         │   2│Memory Dump     │   2│
  │BAL             │   1│SMAL/80         │   1│
  │PCL             │   1│SCOBOL          │   1│
  │APL             │   1│HAL/S           │   1│
  │CHILL           │   1│ALGOL           │   1│
  │SNOBOL          │   1│JCVS            │   1│
  │CSL             │   1│MODULA          │   1│
  │MEFIA           │   1│CMS-2           │   1│
  └─────────┴──┴─────────┴──┘

经过了七年的市场选择,C已是目前最主要的系统工具,PASCAL则取代了 COBOL成为商业软件的发展工具。BASIC 仍为学生及业余玩家的伴侣;只有组合语言,大约仍停留在原有的水准上。除了少数的系统程式,如IBM BIOS ( Basic Input  Output Services 基本中断服务程式) 以及 DOS (Disk Operating System 磁盘作业系统) 等外,使用者不多。

这种现象导致了国人极大的偏见,咸认为美国观念、技术遥遥领先,他们对软件发展工具的选择,必然有独到的眼光。学校教学,系统公司应用,莫不亦步亦趋、拾人牙慧。

美国是以商业为导向,利用逐年更新设备的手段,以加速产品的改进。所以,他们重视硬体的效率,以及程式写作的成本,但对程式语言本身的特性,并未受到应有的重视。

不容讳言,目前我们在软体上,处于相当落后的地位。如果在这个关键的时刻,我们还看不清事实的真相,妄想东施效颦,其后果未卜可知。

我认为,只有采用组合语言,大力开发各种应用程式,将最低档微电脑的性能提升到极致。这样,我们才能发挥人多势众的优点,提升高科技水准。

五、各种语言的性能比较

为了具体瞭解各种常用电脑语言间性能之优劣,我们选用了五种为测试对象,下表即为测试所得之各种统计数据。表中以一为基数,效率高者,其数值相对增加。

在附录一、二中,我们将各种测试的原程式、所采用的技巧、以及考虑的细节,分别列举,并一一说明。主要的目标是为了认识程式写作的技术,和追求效率的手段。

我们测试的指标有二,一是针对各种程式语言本身的适用范围;一是程式语言之间的差异。根据对时、空效率的分析,我们发现,程式语言之间,有着极大的差异。就是使用同一语言,程式写作的技巧,也显着地有所不同。至于程式语言的适用范畴,则因取材有限,未能得出可靠的结论。

我们选了两个题目,一是点阵图形处理,将一个 24X24点阵字形,左右、上下各放大一倍,以得到 48X48的字形。这种点阵处理,有很多高阶语言难以胜任,所以只好在常用的语言中,选了五种。另一是排序,一般语言都能处理,只是效率相去甚远。

┌─┬────┬────┬────┬────┬────┬────┐
│  │语言类别│执行速度│占用空间│制作时间│通用机种│应用限制│
├─┼────┼────┼────┼────┼────┼────┤
│  │assembly│   1.0  │  1.0 │  2.1 │限于机种│  无限  │
│图├────┼────┼────┼────┼────┼────┤
│  │turbo c │   7.2  │  3.2 │  1.4 │  不限  │  无限  │
│形├────┼────┼────┼────┼────┼────┤
│  │pascal  │   6.8  │  8.1 │  1.4 │  不限  │工商应用│
│处├────┼────┼────┼────┼────┼────┤
│  │fortran │   8.0  │  6.9 │  1.0 │  不限  │科学计算│
│理├────┼────┼────┼────┼────┼────┤
│  │basic   │ 720.0  │  8.1 │  1.0 │  不限  │  有限  │
├─┼────┼────┼────┼────┼────┼────┤
│  │assembly│   1.0  │  1.0 │   10.0 │限于机种│  无限  │
│排├────┼────┼────┼────┼────┼────┤
│  │c     │   3.0  │  3.0 │  1.5 │  不限  │  无限  │
│序├────┼────┼────┼────┼────┼────┤
│  │pascal  │   6.0  │  6.0 │  2.0 │  不限  │一般应用│
│处├────┼────┼────┼────┼────┼────┤
│  │fortran │   8.0  │  7.5 │  3.0 │  不限  │科学计算│
│理├────┼────┼────┼────┼────┼────┤
│  │basic   │  10.0  │  8.0 │  1.0 │  不限  │  有限  │
└─┴────┴────┴────┴────┴────┴────┘

由于个人写作能力,以及程式不同的特性,这种比较并无绝对的价值。不论从什么角度看,组合语言效能最佳,但制作时间较长,且限于机种,是其不利之处。据统计,C语言近年来有取代组合语言的趋势,尤其在系统设计上,由于硬体速度的改进,组合语言的边际效益已日渐减少。

然而,从附录的程式测试中可以看出,只有组合语言的写作变化多、弹性大,能够精雕细琢,将程式的效率发挥得淋漓尽致。纯以技术的立场、以及成本的分析来看,真正有实用、推广的价值的软件,其初期的开发费用及时间等成本根本微不足道。

硬体之速度及记忆空间每增进一倍,其产品之售价亦上涨一倍,故组合语言仍有其绝对的优势。至于通用性问题,以目前发展的趋势来看,机种日渐统一,故丝毫不足为虑。

还有一点也常被忽视的,是程式的积累价值。效率不高、功能不强的程式,很容易就被扬弃掉。反之,则可以不断地重覆利用,甚至累积起来,成为日后软件继续发展的基石。像这样,程式的制作效率将会随着累积的程度而直线增加。当然,没有长远的眼光和妥善的规划,是难以竟功的。

要发挥组合语言真正的效益,必须先澈底认识其特性及机能,并应用各种技巧,整理出一套法则,以便推广应用。这样虽然辛苦,但是,以未来社会对电脑的需求量,不论成本、效益,也不论硬体发展到什么程度,唯有组合语言才能使软体更上一层楼。

【相关文章】好搜一下
成功网络广告设计的8项原则

成功网络广告设计的8项原则

现在乃至将来都是一个过剩的消费时代。在一个相对富裕的社会里,消费者的消费目的,不…