Ortogonalidad (informática)

La ortogonalidad es una propiedad de las unidades centrales de procesamiento. Se dice que un conjunto de instrucciones es ortogonal cuando se puede utilizar cualquier modo de direccionamiento en cualquier instrucción. La búsqueda de la ortogonalidad hace que el diseño de la unidad central de procesamiento sea más complejo pero aporta una mayor facilidad de programación.

Programación[editar]

Se refiere a la capacidad de combinar varias características de un lenguaje de programación en todas las combinaciones posibles, de manera que todas ellas tengan significado. Por ejemplo, supóngase que un lenguaje dispone de una expresión que puede producir un valor y también dispone de un enunciado condicional que evalúa una expresión para obtener un valor de verdadero o falso. Estas dos características del lenguaje, la expresión y el enunciado condicional, son ortogonales si se puede usar (y evaluar) cualquier expresión dentro del enunciado condicional.

Cuando las características de un lenguaje son ortogonales, entonces es más fácil aprender el lenguaje y escribir los programas porque hay menos excepciones y casos especiales que recordar. El aspecto negativo de la ortogonalidad es que un programa suele compilar sin errores a pesar de contener una combinación de características que son lógicamente incoherentes o cuya ejecución es en extremo ineficiente. A causa de estas cualidades negativas, la ortogonalidad como atributo de un diseño de lenguaje es todavía motivo de controversia, pues a ciertas personas les gusta y a otras no.

La no generalidad de la comparación de igualdad puede ser vista como una no ortogonalidad ya que la aplicación de “=” depende del tipo de los valores a comparar. Otros ejemplos adicionales de pérdida de ortogonalidad:

Las funciones Pascal pueden retomar solo valores escalares o apuntadores. En C valores de todo tipo, excepto de tipo arreglo, pueden ser retomados desde una función. En Ada esta no-ortogonalidad se elimina. En Pascal los tipos ficheros tienen un estatus especial que causa un número de no-ortogonalidades, por ejemplo, los ficheros no pueden ser pasados por valor y está prohibida la asignación a variables fichero. En muchos otros lenguajes los ficheros forman parte de bibliotecas (dependientes del sistema) en vez de a la definición del lenguaje evitando con ello tales no-ortogonalidades. En Modula 2 las cadenas pueden asignarse a variables de cadena de mayor longitud, pero no viceversa, este es el único caso en Modula 2 donde la asignación trabaja para objetos de igual medida. En C hay una no ortogonalidad en el traspaso de parámetros: C pasa todos los parámetros por valor excepto los arreglos que los pasa por referencia. Aquí se ve mejor la no ortogonalidad. La ortogonalidad fue la meta principal del ALGOL-68, que sigue siendo el mejor ejemplo de lenguaje donde sus constructores pueden ser combinados en todas maneras significativas.