¿Qué tan útiles son los operadores infix en un lenguaje de programación? ¿Merecen la complejidad adicional que proporcionan? ¿Puede proporcionar algún ejemplo en el que los operadores infijos se adapten mejor al problema que no se puede manejar simplemente sobrecargando a los operadores normales?
programming-languages
syntax
operators
Casebash
fuente
fuente
arg1.method(arg2)
lugar demethod(arg1, arg2)
.Respuestas:
Creo que los operadores infijos provienen de las matemáticas.
Esta:
es más legible para la mayoría de las personas, que
porque la mayoría de las personas están familiarizadas con las matemáticas.
Lo suficientemente interesante en Haskell puede saltar entre infijo y prefijo. Esto está usando la misma función "(+)":
y esto está usando la misma función "elem":
fuente
(+ 1 2)
mucho más legible que1 + 2
. Por lo menos(+ 1 2 3 4 5)
es mejor que1 + 2 + 3 + 4 + 5
.1 2 +
o1 2 3 4 5 +
más típicamente para el último caso1 2 + 3 + 4 + 5 +
. En realidad, hay una ventaja ingeniosa para aquellos en que modela perfectamente un sistema basado en pila y rara vez (¿alguna vez?) Necesita paréntesis para ajustar la precedencia del operador.Los lenguajes de computadora están diseñados para humanos, no para máquinas. Y los humanos están más acostumbrados a infijar operadores que pre o postfixes.
fuente
La única razón real para los operadores de infijo es que los humanos generalmente los encuentran más fáciles de leer. Esto se debe en gran parte a dos hechos:
2 * 2 = 4
etc.(some complex expression) + (some other complex expression)
Desde una perspectiva lógica / máquina, los operadores infijos realmente no agregan ningún valor y en algunos casos son una molestia:
(* 1 2 3 4 5)
en Lisp, por ejemplo, se podría decir que es una sintaxis mucho más limpia para multiplicar un conjunto de números.fuente