计算机语言的正交性,什么是“正交性”?

程序设计语言中的正交性意味着可以用相对较少的方式组合相对较小的一组基本构造,以构建语言的控制和数据结构。而且,每个基元的所有可能组合都是合法的和有意义的。例如,考虑数据类型。假设一种语言有四种基本数据类型(整型,浮点型,双精度型和字符型)以及两个类型运算符(数组和指针)。如果两个 类型运算符可以应用于自己和四种基本数据类型 可以定义大量的数据结构。 正交语言特征的含义独立于其在程序中出现的 上下文。 (正交这个词来自于正交矢量的数学概念,它与其他每个都是独立的)。正交性来自于原始数据之间关系的对称性。缺乏正交性会导致语言规则的例外。例如,在支持指针的编程语言中,应该可以使用 来定义一个指向指向该语言中定义的任何特定类型的指针。但是,如果不允许指针指向数组,则不能定义许多潜在有用的用户定义的数据结构。 我们可以通过比较IBM大型机计算机 和VAX系列小型机的汇编语言的一个方面来说明使用正交性作为设计概念。我们考虑一个简单的情况: 添加两个32位整数值,它们位于内存或寄存器中,用 替换其中一个值。的IBM大型机具有用于此目的的2个 指令,其具有形成

A Reg1, memory_cell

AR Reg1, Reg2

其中REG1和Reg2中表示寄存器。这些语义是

Reg1 ← contents(Reg1) + contents(memory_cell)

Reg1 ← contents(Reg1) + contents(Reg2)

为32位整数值的VAX加法指令是

ADDL operand_1, operand_2

其语义是

operand_2 ← contents(operand_1) + contents(operand_2)

在这种情况下,任一操作数可以是一个寄存器或存储单元。 VAX指令设计是正交的,因为单条指令可以使用寄存器或存储单元作为操作数。 有两种指定操作数的方法,可以通过所有可能的方式进行组合。 IBM设计 不正交。四种操作数组合中只有两种可能是合法的,其中两种需要不同的指令A和AR。 IBM设计 更受限制,因此可写性更低。例如,您不能添加 两个值并将总和存储在内存位置中。此外,由于限制和附加指令,IBM 设计更难以学习。正交性与简单密切相关:语言设计越正交,语言规则需要的例外就越少。更少的 例外意味着设计中的更高程度的规律性,这使得 语言更易于学习,阅读和理解。任何学过英语语言重要部分的人都可以证明很多规则例外的困难(例如,我之前,除了c之后)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值