Además de la convención de “multiplicación antes de la suma” que nos permite escribir polinomios sin introducir paréntesis, los lenguajes de programación utilizan las reglas de orden de operaciones, no los humanos que se comunican entre sí. En la vida real, nadie escribiría algo como 20/2 (5 + 5), o incluso las formas totalmente inequívocas 20 / (2 (5 + 5)) o (20/2) (5 + 5); ellos escribirían
[matemáticas] \ frac {20} {2 (5 + 5)} [/ matemáticas] o [matemáticas] \ frac {20} {2} (5 + 5) [/ matemáticas]
dependiendo de lo que se quiso decir. Y antes del advenimiento de las computadoras personales, encontrará mucha menos discusión sobre las convenciones de orden de operaciones en los textos matemáticos elementales. El acrónimo PEMDAS parece haberse introducido alrededor de 1980:
Aquí está el matemático George Bergman sobre el tema:
- Cómo demostrar que la ecuación [matemáticas] x ^ 5 + x = 10 [/ matemáticas] tiene solo una raíz real que es irracional
- Si x e y son enteros impares positivos y raíz cuadrada (x) + raíz cuadrada (y) = 10, ¿cuál es un valor posible de x más y?
- ¿Es posible dibujar gráficos de álgebra de Cayley con dos operaciones?
- Las gráficas de las funciones fyg son líneas, como se muestra en la figura a continuación. Si la función f de x = (m veces x) + b para algunas constantes m y b, ¿cuál de las siguientes opciones podría definir la función g?
- Cómo mostrar (matemáticamente) que el polinomio [matemático] x ^ 8 – x ^ 7 + x ^ 2 – x +15 [/ matemático] no tiene raíz real
Dicho esto, en cada lenguaje de programación que conozco, 20/2*(5+5)
se interpretará como
[matemáticas] \ frac {20} {2} (5 + 5) [/ matemáticas]
porque la multiplicación y la división generalmente comparten precedencia y, por lo tanto, se evalúan de izquierda a derecha.