Orthogonality (programming)
In computer programming, 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. 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 to a memory cell (or another register). These statements are shown below: In the first case, the contents of codice_1 are added to the contents of a memory cell; the result is stored in codice_1. In the second case, the contents of codice_1 are added to the contents of another register (codice_4) and the result is stored in codice_1. In  contrast to the above set of statements, VAX has only one statement for addition: In this case the two operands (codice_6 and codice_7) can be registers, memory cells, or a combination of both; the instruction adds the contents of codice_6 to the contents of codice_7, storing the result in codice_6. 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: 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.