Sfondo
La pagina di Wikipedia su Syntactic Sugar afferma:
In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language "sweeter" for humans to use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer.
Non capisco veramente quale sia la differenza tra Syntactic Sugar e Syntax.
Apprezzo il fatto che la versione zuccherina possa essere più chiara, più concisa, magari rimandare qualche piatto d'acciaio. Ma mi sento a un certo livello, tutta la sintassi sta essenzialmente facendo ciò per formare un'astrazione su ciò che il codice viene compilato.
Dalla stessa pagina di Wikipedia:
Language processors, including compilers, static analyzers, and the like, often expand sugared constructs into more fundamental constructs before processing, a process sometimes called "desugaring".
Come esercizio di pensiero, se prendo "spesso" in questa affermazione per significare "sempre": se la differenza fosse solo se il compilatore "desugars" la sintassi prima di passare a una fase successiva, come potrebbe un programmatore che non sapere che le componenti del compilatore sanno (o si preoccupano) cosa è la Sintassi di Sugar o no?
Una domanda molto correlata su questo sito "Definizione rigorosa dello zucchero sintattico?" ha una risposta che inizia:
IMHO I don't think you can have a definition for syntactic sugar, because the phrase is BS and is likely to be used by people that talk about "real programmers" using "real tools" on "real operating systems"
Quale potrebbe indicare che forse non c'è un'enorme differenza per il programmatore che usa la lingua? Forse la differenza è percepibile solo dallo scrittore di compilatori? Anche se ci possono essere casi in cui è utile per il programmatore usare la lingua per sapere cosa c'è sotto il cofano di Syntactic Sugar? (Ma forse in realtà qualsiasi discorso sull'argomento tende a usare il termine come esca di fiamma?)
Il cuore della domanda
Quindi ... la versione breve della domanda:
- C'è una vera differenza tra sintassi e zucchero sintattico?
- A chi importa?
Cibo extra per il pensiero
Bonus sulla contraddizione dell'argomento:
Sulla pagina di Wikipedia è riportato un esempio:
For instance, in the C language the
a[i]
notation is syntactic sugar for*(a + i)
Mentre un'altra risposta sulla domanda collegata sopra parla dello stesso esempio:
Now consider
a[i] == *(a + i)
. Think about any C program that uses arrays in any substantive way.
E riassume ciò:
The
[]
notation facilitates this abstraction. It's not syntactic sugar.
La conclusione opposta per lo stesso esempio!