En programación de computadoras , la ortogonalidad significa que las operaciones cambian solo una cosa sin afectar a otras. [1] El término se usa con mayor frecuencia con respecto a conjuntos de instrucciones de ensamblaje, como conjunto de instrucciones ortogonales .
La ortogonalidad en un lenguaje de programación significa que un conjunto relativamente pequeño de construcciones primitivas se puede combinar en un número relativamente pequeño de formas para construir las estructuras de control y datos del lenguaje. [2] Está asociado con la simplicidad; cuanto más ortogonal sea el diseño, menos excepciones. Esto facilita el aprendizaje, la lectura y la escritura de programas en un lenguaje de programación. El significado de una característica ortogonal es independiente del contexto; los parámetros clave son la simetría y la coherencia (por ejemplo, un puntero es un concepto ortogonal).
Un ejemplo de IBM Mainframe y VAX destaca este concepto. Un mainframe de IBM tiene dos instrucciones diferentes para agregar el contenido de un registro a una celda de memoria (u otro registro). Estas declaraciones se muestran a continuación:
Un Reg1, memory_cellAR Reg1, Reg2
En el primer caso, el contenido de Reg1
se agrega al contenido de una celda de memoria; el resultado se almacena en Reg1
. En el segundo caso, el contenido de Reg1
se agrega al contenido de otro registro ( Reg2
) y el resultado se almacena en Reg1
.
A diferencia del conjunto de declaraciones anterior, VAX tiene solo una declaración para agregar:
ADDL operando1, operando2
En este caso, los dos operandos ( operand1
y operand2
) pueden ser registros, celdas de memoria o una combinación de ambos; la instrucción agrega el contenido de operand1
al contenido de operand2
, almacenando el resultado en operand1
.
La instrucción de VAX para sumar es más ortogonal que las instrucciones proporcionadas por IBM; por lo tanto, es más fácil para el programador recordar (y usar) el proporcionado por VAX.
El diseño del lenguaje C puede examinarse desde la perspectiva de la ortogonalidad. El lenguaje C es algo inconsistente en su tratamiento de los conceptos y la estructura del lenguaje, lo que dificulta que el usuario aprenda (y use) el lenguaje. A continuación se muestran ejemplos de excepciones:
- Las estructuras (pero no las matrices) pueden devolverse desde una función.
- Se puede devolver una matriz si está dentro de una estructura.
- Un miembro de una estructura puede ser cualquier tipo de datos (excepto void o la estructura del mismo tipo).
- Un elemento de matriz puede ser de cualquier tipo de datos (excepto vacío). Todo se pasa por valor (excepto matrices).
Aunque este concepto se aplicó por primera vez a los lenguajes de programación, desde entonces la ortogonalidad se ha reconocido como una característica valiosa en el diseño de API e incluso interfaces de usuario. Allí, también, es valioso tener un pequeño conjunto de operaciones primitivas componibles sin reticulaciones sorprendentes, ya que conduce a sistemas que son más fáciles de explicar y menos frustrantes de usar.
Ver también
Referencias
- ^ "Compacidad y ortogonalidad" . www.catb.org . Consultado el 6 de abril de 2018 .
- ^ Sebesta, Robert W. (2010). Conceptos de lenguajes de programación (9ª ed.). Boston: Addison-Wesley. pag. 10 . ISBN 9780136073475. OCLC 268788303 .
Otras lecturas
- El programador pragmático: de oficial a maestro por Andrew Hunt y David Thomas. Addison-Wesley. 2000. ISBN 978-0-201-61622-4 .
enlaces externos
- "El arte de la programación Unix", capítulo sobre Ortogonalidad - Concepto de ortogonalidad bien explicado