Orthogonality (programming)
   HOME

TheInfoList



OR:

In
computer programming Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as anal ...
, orthogonality means that operations change just one thing without affecting others. The term is most-frequently used regarding assembly instruction sets, as
orthogonal instruction set In computer engineering, an orthogonal instruction set is an instruction set architecture where all instruction types can use all addressing modes. It is " orthogonal" in the sense that the instruction type and the addressing mode vary independe ...
. Orthogonality in a programming language means that a relatively small set of primitive constructs can be combined in a relatively small number of ways to build the control and data structures of the language. It is associated with simplicity; the more orthogonal the design, the fewer exceptions. This makes it easier to learn, read and write programs in a programming language. The meaning of an orthogonal feature is independent of context; the key parameters are symmetry and consistency (for example, a pointer is an orthogonal concept). An example from IBM Mainframe and VAX highlights this concept. An IBM mainframe has two different instructions for adding the contents of a
register Register or registration may refer to: Arts entertainment, and media Music * Register (music), the relative "height" or range of a note, melody, part, instrument, etc. * ''Register'', a 2017 album by Travis Miller * Registration (organ), th ...
to a memory cell (or another register). These statements are shown below: A Reg1, memory_cell AR Reg1, Reg2 In the first case, the contents of Reg1 are added to the contents of a memory cell; the result is stored in Reg1. In the second case, the contents of Reg1 are added to the contents of another register (Reg2) and the result is stored in Reg1. In contrast to the above set of statements, VAX has only one statement for addition: ADDL operand1, operand2 In this case the two operands (operand1 and operand2) can be registers, memory cells, or a combination of both; the instruction adds the contents of operand1 to the contents of operand2, storing the result in operand1. VAX’s instruction for addition is more orthogonal than the instructions provided by IBM; hence, it is easier for the programmer to remember (and use) the one provided by VAX. The design of C language may be examined from the perspective of orthogonality. The C language is somewhat inconsistent in its treatment of concepts and language structure, making it difficult for the user to learn (and use) the language. Examples of exceptions follow: * Structures (but not arrays) may be returned from a function. * An array can be returned if it is inside a structure. * A member of a structure can be any data type (except void, or the structure of the same type). * An array element can be any data type (except void). Everything is passed by value (except arrays). Though this concept was first applied to programming languages, orthogonality has since become recognized as a valuable feature in the design of APIs and even user interfaces. There, too, having a small set of composable primitive operations without surprising cross-linkages is valuable, as it leads to systems that are easier to explain and less frustrating to use.


See also

*
Coupling (computer programming) In software engineering, coupling is the degree of interdependence between software modules; a measure of how closely connected two routines or modules are; the strength of the relationships between modules. Coupling is usually contrasted with ...
*
Cohesion (computer science) In computer programming, cohesion refers to the ''degree to which the elements inside a module belong together''. In one sense, it is a measure of the strength of relationship between the methods and data of a class and some unifying purpose or co ...


References


Further reading

* ''The Pragmatic Programmer: From Journeyman to Master'' by Andrew Hunt and David Thomas. Addison-Wesley. 2000. .


External links


"The Art of Unix Programming", chapter about Orthogonality
– Orthogonality concept well-explained {{DEFAULTSORT:Orthogonality Programming Programming language topics Software quality