Antecedentes
La página de Wikipedia sobre el azúcar sintáctico dice:
En informática, el azúcar sintáctico es la 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 más claramente, de manera más concisa o en un estilo alternativo que algunos prefieran.
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 hervir un poco. Pero siento que, en algún nivel, toda la sintaxis lo está haciendo esencialmente 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 en construcciones más fundamentales antes del procesamiento, un proceso a veces llamado "desugaring".
Como ejercicio de reflexión, si considero "a menudo" en esta declaración que significa "siempre": si la diferencia fuera solo si el compilador "desugará" la sintaxis antes de pasar a la siguiente etapa, ¿cómo podría un codificador que no conoce las entrañas? del compilador sabe (o le importa) ¿cuál es la sintaxis de Sugar'd o no?
Una pregunta muy relacionada en este sitio "¿Definición rigurosa de azúcar sintáctico?" tiene una respuesta que comienza:
En mi humilde opinión, no creo que pueda tener una definición para el azúcar sintáctico, porque la frase es BS y es probable que sea utilizada por personas que hablan de "programadores reales" que usan "herramientas reales" en "sistemas operativos reales".
¿Qué podría indicarme que quizás no hay una gran diferencia para el codificador que usa el idioma? ¿Quizás la diferencia solo es perceptible para el escritor del compilador? ¿Aunque puede haber casos en los que es útil que el codificador use el lenguaje para saber qué hay bajo el capó del Syntactic Sugar? (¿Pero quizás en realidad algún discurso sobre el tema tiende a usar el término como cebo de fuego?)
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?
Comida extra para el pensamiento
Bonificación por contradicción de tema:
En la página de Wikipedia se da un ejemplo:
Por ejemplo, en el lenguaje C la
a[i]
notación es azúcar sintáctica para*(a + i)
Mientras que otra respuesta a la pregunta vinculada anteriormente se refiere al mismo ejemplo:
Ahora considera
a[i] == *(a + i)
. Piense en cualquier programa de C que use matrices de cualquier manera sustantiva.
Y resume que:
La
[]
notación facilita esta abstracción. No es azúcar sintáctico.
¡La conclusión opuesta para el mismo ejemplo!