对计算机技术中的十个重要关系的剖析 (2)

2008-02-23 04:56:20来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



2.6 可移植性与兼容性

  可移植性主要是指把同一软件放置到不同系统平台(如不同的硬件平台和操作系统)并使之正常运行的难易程度。可移植性有时候被表述为跨平台性。分析软件的可移植性大概要考虑以下几种情况:不同的体系结构(如CPU的指令系统)之间二进制形式的应用软件是不可移植的,如果是源程序,必须对其进行重新编译才可以在新的环境中运行。相同体系结构的硬件平台上,如果操作系统也相同(系统调用接口一致),二进制形式的应用软件可移植, 否则必须对源程序进行相应的修改后重新编译链接生成新的可执行文件才可以在不同的操作系统下运行。对于同一种语言编写的程序在不同版本编译器之间的可移植性(无论硬件平台和操作系统是否相同),取决于该语言的标准化程度和编译器实现时对语言标准的严格遵守程度。兼容性是指不同软硬件产品在技术特征上的一致性。兼容性是分层次的,如CPU的兼容性可分为芯片的引脚级兼容(芯片引脚信号的定义一致)和指令级兼容(机器指令系统的一致性)。保持产品兼容性的是重要的,这样才能保证产品使用的连续性(对同一系列产品而言)和互用性(对同一种类的产品而言)。但很多产品为了照顾兼容性(主要指同一系列产品的向后兼容),使产品日益变得庞大而复杂。这是因为新产品不仅要提供更新的,更先进的特征,还必须保留原来产品的的特征(尽管这些特征可能是过时的,甚至与新特征由某种程度的抵触)。我们所熟知的C 语言就是一个例子,为了保持与传统C语言的兼容性,使C 在设计时不能完全抛弃C语言中不太合理的语言要素,语言的语法显得有些杂乱,而且程序员在进行程序设计时可能新旧语言要素并用,程序可读性差,而且容易出错。
  可移植性依赖于兼容性。某个软件所依赖的不同的平台的兼容性,是该软件能够在这些平台上可移植的必要条件。假设A软件可以在B平台上运行,如果 C平台与B平台兼容,则A软件也可以在B平台上运行,即A软件对于B,C而言是可移植的。一个明显的例子是,如果两个不同版本的C语言编译器是完全兼容的,那么用其中任何一个版本的C语言写的源程序,都可以在另一个版本的C编译器上不加修改的成功编译。

2.7 安全性与可用性

  信息系统或通信网络的安全性总是以牺牲系统的复杂性和可用性为代价的。安全意味着限制,使用户对某个安全系统使用的灵活性与功能的广泛性受到制约,导致系统的可用性变差。例如,制订防火墙的安全策略可以采用两种不同的原则:(1)凡是没有被安全策略明确禁止的操作都是允许的;(2)凡是没有被安全策略允许的操作都是被禁止的。显然第二种情况的限制比第一种情况要严格,采用这种策略的防火墙安全强度更高,但用户能够使用的系统功能比第一种情况少,使系统的可用性变差。再比如,有些网络传输业务的实时性要求很高,但附加的安全处理会造成很大的通信时延,在这种情况下,对该业务而言网络的可用性变差。因此任何安全系统在设计时,都必须在系统的安全性和可用性方面寻求平衡。

2.8 编程语言与API

  任何编程语言在设计时都要考虑以下情况:用户在使用此种语言编程时所需要的功能是由语言本身实现还是由语言之外的API实现。所谓”由语言本身实现”就是该功能被包括在语言文本当中(有对应的程序语句),也就是说该功能由编译程序处理。API可以表现为不同的形式,如传统的面向过程的语言开发软件包所提供的函数形式(这些标准函数的集合被称为函数库),面向对象的语言系统所提供的标准类(这些类的集合被称为类库)。原则上讲,对同一功能由语言本身实现或由外部的API实现在逻辑上是等价的。如最常见的输入输出功能,有些语言将此功能包含在了语言文本当中,象早期的BASIC语言就提供了输入输出语句。但现在大多数语言都由外部的API机制对此功能提供支持,如C语言的标准函数printf。将很多功能(特别是与系统平台密切相关的功能)由API实现,可以降低编译程序的复杂性,提高语言系统的适应性,特别是有利于语言的标准化(将与平台相关的功能要素排除在语言本身之外)。

2.9 编译与解释

  编译与解释是计算机处理编程语言的两种方式。由于编译要形成最终的可执行文件,这种对源程序的翻译是一次性的,因而程序的执行效率较高。但编译形式的语言要想跨平台执行,需要用新的平台上的编译器重新编译。解释性的语言由于每次执行时都伴随着翻译的过程,所以程序运行效率较低,但解释方式使得用该语言编写的程序容易实现跨平台运行(由解释器隐藏不同平台之间的差异)。为了在程序的运行效率和程序的跨平台性之间需求平衡,Java语言采用了一种折中的方案,先对源程序编译,生成中间形式的代码(称为字节码),程序运行时由所在系统平台的解释器(被称为虚拟机)解释执行。由于字节码是标准的,与平台无关,这样就满足了程序跨平台执行的条件。同时字节码比源程序更接近机器指令(语义差距缩小),翻译的效率变高,这样就改善了程序的运行速度。

2.10 标准与实现

  由于信息技术具有交互性和共享性的特点,在这一领域对不同技术层面进行统一性的规定就显得非常重要。计算机领域就存在着种类繁多的技术标准,目的就是要使不同的软硬件产品在实现上取得某些方面的一致性。标准是抽象的,实现就是对标准的具体实施,它具体表现为不同种类的软硬件产品。TCP/IP就是对某种网络体系结构的抽象规定,很多操作系统及相关的软硬件产品都实现了TCP/IP协议所定义的功能。ANSI C 是C 语言的标准,而Visual C 则是Windows平台上C 语言标准的具体实现。还有,POSIX对类UNIX操作系统的实用程序和系统调用等诸多方面进行了标准化,不同的 UNIX版本包括LINUX都不同程度地实现了这一标准。标准与实现在功能上并非是一一对应的,不同的实现产品往往在标准的基础上都扩充了一些附加的功能来体现自己的特色。但在一般情况下,标准总是某个具体实现的产品功能的子集。
  不同技术标准对实现要求的严格性是有差别的。有的技术标准对实现有严格的强制性,对各种技术要素的标准化比较全面,具体产品实现的灵活性和可扩展的余地很小,不同产品有高度的一致性,这样就提高了产品的可移植性和互操作性,但产品的实现缺乏灵活性,如Java就是一种强制标准化的语言。还有些技术标准为了给不同厂商实现产品的灵活性留有余地,对技术要素的规定不是很死,有些技术特征依赖于具体的实现,同时允许专有扩展,不同产品在实现时可以通过专有扩展来充分发挥该产品所依赖的平台独有的特点,提高产品的可用性和效率,C 语言标准就是这样一个例子(如同一数据类型的存储长度与不同的硬件平台有关)。但非强制性标准的缺点也是明显的,它直接带来的严重问题就是不同产品的兼容性差,这与信息技术越来越崇尚的开放性是背到而驰的。而且,允许专有扩展容易使有些厂商通过对产品大量添加自己独有的特征来绑定用户,从而垄断技术市场。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD配置基于ADSL的VPN网关+防火墙

下一篇:城域网割接及割接引起业务中断的案例整理分析