El Arte de Programar en Unix, Capítulo 4. La modularidad, ortogonalidad, Página 89:
ortogonalidad
ortogonalidad es uno de los más importantes propiedades que pueden ayudar a hacer aún diseños complejos compactos. En un diseño puramente ortogonal, las operaciones no tienen efectos secundarios; cada acción (ya sea una llamada a API, una invocación a macro o una operación de lenguaje ) cambia una sola cosa sin afectando a otras. Hay una y solo una forma de cambiar cada propiedad del sistema que sea de control.
Lenguaje de programación pragmática, Capítulo 6, página 228:
ortogonalidad significa que características pueden pueden utilizar en cualquier combinación, que los todas las combinaciones tienen sentido, y que la el significado de una característica dada es consistente, independientemente de las otras características de con las que se combina.
En Lisp, 5.2 Ortogonalidad:
Un lenguaje ortogonal es aquella en la que puede expresar una gran cantidad mediante la combinación de un pequeño número de operadores en un montón de maneras diferentes .
creo que un lenguaje de programación ortogonal sería aquel en cada una de sus características tienen efectos secundarios mínimos o nulos, por lo que se puede utilizar sin pensar en cómo afectará que el uso de otras características. Tomo prestado esto de la definición de una API ortogonal.
En Java tendría que evaluar, por ejemplo, si existe una combinación de palabras clave/construcciones que podrían afectarse entre sí cuando se utilizan simultáneamente en un identificador.Por ejemplo, al aplicar public
y static
a un método, no interfieren entre sí, por lo que estos dos son ortogonales (sin efectos secundarios además de lo que la palabra clave está destinada a hacer)
Tendría que hacer eso para todos sus características para demostrar la ortogonalidad. Esa es una forma de hacerlo. No creo que exista un claro corte es o tampoco es ortogonal en esta materia.
Proporcione una explicación o enlace directo a su definición de ortogonal. –
La ortogonalidad raramente (si es que alguna vez) es booleana ("¿Es X ortogonal?") Pero una cuestión de (generalmente comparativa) grado ("X es más ortogonal que Y.") –
pero ¿los lenguajes de programación también pueden ser lineales? – mvds