Fondo
La página de Wikipedia en Syntactic Sugar dice:
En ciencias de la computación, el azúcar sintáctico es una sintaxis dentro de un lenguaje de programación que está diseñado para facilitar la lectura o la expresión. Hace que el lenguaje sea "más dulce" para que lo usen los humanos: las cosas se pueden expresar de forma más clara, más concisa o en un estilo alternativo que algunos prefieren.
Realmente no entiendo cuál es la diferencia entre Syntactic Sugar y Syntax.
Aprecio el punto de que la versión azucarada puede ser más clara, más concisa, tal vez hirviendo un poco de repetitivo. Pero creo que en algún nivel, toda la sintaxis es esencialmente hacer eso para formar una abstracción sobre lo que se compila el código.
Desde la misma página de Wikipedia:
Los procesadores de lenguaje, incluidos los compiladores, los analizadores estáticos y similares, a menudo expanden las construcciones azucaradas a construcciones más fundamentales antes del procesamiento, un proceso que a veces se denomina "desugaring".
Como ejercicio de pensamiento, si tomo "a menudo" en esta declaración para significar "siempre": si la diferencia fuera solo si el compilador "desugars" la sintaxis antes de pasar a la siguiente etapa, ¿cómo podría un programador que no lo hace? conocer las entrañas del compilador saber (o preocuparse) ¿qué es Sugar'd Syntax o no?
Una pregunta muy relacionada en este sitio "¿Definición rigurosa de azúcar sintáctica?" tiene una respuesta que comienza:
IMHO No creo que puedas tener una definición para el azúcar sintáctica, porque la frase es BS y es probable que la usen personas que hablan de "programadores reales" usando "herramientas reales" en "sistemas operativos reales"
¿Qué podría indicarme que tal vez no haya una gran diferencia en el codificador que usa el lenguaje? ¿Quizás la diferencia es solo perceptible para el escritor del compilador? ¿Aunque puede haber casos en los que sea útil para el programador que usa el lenguaje saber qué hay debajo del capó del azúcar sintáctica? (Pero tal vez en realidad, ¿algún discurso sobre el tema tiende a usar el término como cebo de llamas?)
El corazón de la pregunta
Entonces ... la versión corta de la pregunta:
- ¿Existe una diferencia real entre Syntax y Syntactic Sugar?
- ¿A quién le importa?
Alimento extra para el pensamiento
Bonus en la contradicción del tema:
En la página de Wikipedia se da un ejemplo:
Por ejemplo, en el lenguaje C, la notación
a[i]
es azúcar sintáctica para*(a + i)
Mientras que otra responde sobre las preguntas vinculadas anteriores habla del mismo ejemplo:
Ahora considera
a[i] == *(a + i)
. Piense en cualquier programa de C que use arreglos de cualquier manera sustancial.
Y resume que:
La notación
[]
facilita esta abstracción. No es azúcar sintáctica.
¡La conclusión opuesta para el mismo ejemplo!