-->

什么是“正交性”?(What is “Orthogonality”?)

2019-07-21 03:51发布

什么是“正交”的意思是在谈论编程语言的时候?

什么是正交的一些例子吗?

Answer 1:

正交性是指“更改不会改变B”的属性。 正交系统的一个例子是无线电设备,其中,改变所述站不改变体积,反之亦然。

非正交系统将是像直升机,其中改变所述速度可以改变方向。

在编程语言中,这意味着,当你执行一条指令,不过该指令的动作(调试非常重要)。

还有一个特定的参照意义时, 指令集 。



Answer 2:

从埃里克雷蒙的“UNIX编程的艺术”

正交性,可以帮助甚至复杂的设计紧凑的最重要特性之一。 在纯粹的正交设计,操作没有副作用; 每个动作(无论是API调用,宏调用,或语言操作)改变的只有一件事,而不会影响其他人。 有一个且只有一个办法改变任何系统正在控制的每个属性。



Answer 3:

想想它能够改变一两件事,而对另一部分的影响看不见。



Answer 4:

从广义上讲,正交是两件事情,使得它们对彼此的影响最小之间的关系。

这个术语来自数学,其中两个载体是如果它们以直角相交正交。

考虑一个典型的2维笛卡儿空间(你用X / Y轴典型网格)。 情节两行:X = 1和y = 1。 这两条线是正交的。 您可以通过更改X更改X = 1,而这将会对其他线路没有影响,反之亦然。

在软件方面,该术语可以适当地在你谈论的是两部分彼此独立的行为的系统的情况下使用。



Answer 5:

如果你有一组构建的。 甲的langauge被认为是正交 ,如果它允许程序员这些构建体自由地混合。 例如,在C则不能返回一个数组(静态数组),C被认为是在这种情况下unorthognal:

int[] fun(); // you can't return a static array.
// Of course you can return a pointer, but the langauge allows passing arrays.
// So, it is unorthognal in case.


Answer 6:

大部分的答案是很啰嗦,甚至是模糊的。 问题的关键是:如果一个工具是正交的,它可以被添加,替换或删除,有利于更好的工具,而无需拧一切了。

这是有锤子和锯子,可用于锤击或锯,或有一些新发明的锤/锯组合,其目的是看到木材木匠之间的差异,然后捣碎一起。 无论是将锯,然后锤击一起工作,但如果你得到一些任务,需要锯开,但不能骂,那么只有正交工具将工作。 同样,如果你需要螺丝代替锤击,你将不再需要扔掉你的锯子,如果它(与不混淆)正交你的锤子。

典型的例子是UNIX命令行工具:你有一个工具,得到一个磁盘(DD)的内容,另一个是从文件(grep的)滤波线路,另一个用于写这些线路到文件(CAT)等。这些都可以混合和随意匹配。



Answer 7:

从维基百科 :

计算机科学

正交性是系统设计特性促进可行性和复杂的设计紧凑。 正交性保证了修改由一个系统的部件所产生的技术效果既不产生也不传播副作用到系统的其它部件。 应由副作用从积分差,即模块和接口的非正交设计所得严格其逻辑的正式定义,而不是由控制部件的系统的出射行为。 正交减少测试和开发的时间,因为它是容易验证,无论引起副作用,也不依赖于他们的设计。

例如,有车有正交组件和控件(例如车辆加速不会影响任何东西,但只与加速功能所涉及的部件)。 在另一方面,非正交的设计可能具有其转向影响它的制动(例如,电子稳定性控制),或它的速度调整其悬浮液。 1因此,这种用法都被看作是从数学上使用的正交导出:一个可以通过它分别投影到一组基向量的每个成员和添加突起投射向量到子空间,当且仅当基向量相互垂直。

的指令集被认为是正交如果任何指令可以在任何寻址模式使用任何寄存器。 该术语从考虑作为其分量是指令字段的向量指令产生的。 一个字段标识要操作的寄存器,和另一个指定寻址模式。 正交指令唯一地设置编码寄存器和寻址模式的所有组合。



Answer 8:

从维基百科 :

正交性是系统设计特性促进可行性和复杂的设计紧凑。 正交性保证了修改由一个系统的部件所产生的技术效果既不产生也不传播副作用到系统的其它部件。 应由副作用从积分差,即模块和接口的非正交设计所得严格其逻辑的正式定义,而不是由控制部件的系统的出射行为。 正交减少测试和开发的时间,因为它是容易验证,无论引起副作用,也不依赖于他们的设计。

例如,有车有正交组件和控件(例如车辆加速不会影响任何东西,但只与加速功能所涉及的部件)。 在另一方面,非正交的设计可能具有其转向影响它的制动(例如,电子稳定性控制),或它的速度调整其悬浮液。[1] 因此,这种用法都被看作是从数学上使用正交的衍生:一个可以通过它分别投影到一组基向量的每个成员和添加当且仅当基本向量是突起投射向量到子空间相互正交的。

的指令集被认为是正交如果任何指令可以在任何寻址模式使用任何寄存器。 该术语从考虑作为其分量是指令字段的向量指令产生的。 一个字段标识要操作的寄存器,和另一个指定寻址模式。 正交指令唯一地设置编码寄存器和寻址模式的所有组合。

把它尽可能以最简单的术语,有两件事是正交的,如果改变一个人在另一个没有影响。



Answer 9:

在谈到对编程语言的项目决策,正交性可以被看作是多么容易让你预测有关的语言为你在过去所看到的其他东西。

例如,在一个语言,你可以有:

str.split

对于拆分一个字符串,

LEN(STR)

用于获取lenght。

在语言更是正交的,你总是使用str.x或X(STR)。

当你将克隆对象或做别的事,你会知道是否使用

克隆(OBJ)

要么

obj.clone

这是对编程语言正交的要点之一。 这避免了您咨询手册或询问别人。

维基百科的文章更多地谈论正交于复杂的设计或低级语言。 正如有人以上建议在评论中,Sebesta书干净谈到正交性。

如果我只用一句话,我会说一门编程语言是正交时,其未知部分充当根据你所见到的预期。 还是......没有惊喜。

;)



Answer 10:

正交编程:

正交性是一个重要的概念,解决了组件的数量相对较少的可在相对较少的方式来获得所期望的结果相结合。 它是用简单相关联; 更正交设计,较少的例外。 这使得它更容易学习,读,写的编程语言程序。 正交特征的含义独立于环境; 关键参数是对称和一致性(例如,指针是正交的概念)。

来自维基百科



Answer 11:

在编程语言编程语言功能,据说如果没有任何限制(或例外)界是正交的。 例如,在Pascal函数不能返回结构类型。 这是从函数返回值的限制。 因此,我们就被视为非正交特性。 ;)



Answer 12:

作为一个高层次的语言,缺乏正交性的例子,考虑下以下规则和例外虽然ç有两种结构化数据类型,数组和记录(结构)中,记录可以从函数返回,但数组不能。 一个结构的构件可以是除空隙的任何数据类型或相同类型的结构。 数组元素可以是除空隙或功能的任何数据类型。 参数由值来传递,除非它们是阵列,在这种情况下它们被,实际上,通过引用传递(因为数组名,而不在C程序标外观被解释为数组的第一元素的地址)



Answer 13:

正交性是指由一组独立的原始构建体可以组合根据需要来表达的程序,以哪个语言的程度。 特点是正交的,如果有关于它们如何组合没有任何限制

Example : non-orthogonality

PASCAL:函数不能返回结构类型。 函数式语言高度正交。



Answer 14:

正交的基本思想是,未概念相关的事情不应该在系统有关。 该架构的部分真的什么都没有做与其他诸如数据库和用户界面,不应该需要改变在一起。 一个改变应该不会造成一个换向等。



Answer 15:

正交性的编程语言意味着相对小的一组原始构建体可以在相对小的数量的方式来构建该语言的控制和数据结构进行组合。 此外,原语的每一个POS-锡布尔赫丁组合是合法的和有意义的。 例如,考虑数据类型。 假设一个语言具有四个原始数据类型(整数,浮点,双精度和字符)和两个型操作符(阵列和指针)。 如果两个运营商类型可以应用到自己和四个原始数据类型,可以定义大量的数据结构。 正交的语言特性的意思是独立于其在一个程序的外观的情况下的。 (字正交来自正交向量,其是相互独立的数学概念。)从primi-表3-6之间的关系的对称正交如下。 缺乏正交性导致例外语言的规则。 例如,在支持指针一种编程语言,它应该有可能定义一个指针指向该语言定义的任何特定的类型。 但是,如果指针是不允许指向阵列,许多潜在有用的用户定义的数据结构不能被定义。 我们可以通过compar-荷兰国际集团的IBM大型计算机和VAX系列小型机的汇编语言的一个方面说明了使用正交性作为设计理念。 我们考虑一个简单的情况:将驻留在内存或寄存器和替换用的总和的两个值中的一个的两个32位整数值。 在IBM大型机为此具有两个指令,它有形式

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的设计是比较难学,因为限制和附加指令的。 正交性是密切相关的简单:一个语言的多个正交设计,较少的例外语言规则要求。 更少的例外是指在设计,这使得语言更容易学习,阅读和理解了更高程度的规律性。 任何人谁也学会了英语语言的SIG- nificant部分可以(E之前例如,我除了c)之后,证明了其学习规则的许多异常的困难。



Answer 16:

校验矩阵的正交性:

正交性也可以是相对于基质,

Matrix *(transpose of matrix)= identity matrix. 

点击以下链接以查看正交YouTube视频。
https://youtu.be/tNekLaxnfW8



文章来源: What is “Orthogonality”?