sfondo
La pagina Wikipedia su Syntactic Sugar afferma:
In informatica, lo zucchero sintattico è sintassi all'interno di un linguaggio di programmazione progettato per rendere le cose più facili da leggere o da esprimere. Rende il linguaggio più "dolce" da usare per l'uomo: le cose possono essere espresse in modo più chiaro, più conciso o in uno stile alternativo che alcuni potrebbero preferire.
Non capisco davvero quale sia la differenza tra Syntactic Sugar e Syntax.
Apprezzo il punto che la versione zuccherata può essere più chiara, più concisa, forse far bollire un po 'di piastra. Ma mi sento ad un certo livello, tutta la sintassi lo sta facendo essenzialmente per formare un'astrazione su ciò a cui il codice viene compilato.
Dalla stessa pagina di Wikipedia:
I processori di linguaggio, inclusi compilatori, analizzatori statici e simili, spesso espandono i costrutti zuccherati in costrutti più fondamentali prima dell'elaborazione, un processo a volte chiamato "desugaring".
Come esercizio di pensiero, se prendo "spesso" in questa affermazione significhi "sempre": se la differenza fosse solo se il compilatore "desugar" la sintassi prima di passare a una fase successiva, come potrebbe un programmatore che non conosce le viscere del compilatore sa (o cura) cos'è la sintassi di Sugar o no?
Una domanda molto correlata su questo sito "Definizione rigorosa di zucchero sintattico?" ha una risposta che inizia:
IMHO Non penso che tu possa avere una definizione di zucchero sintattico, perché la frase è BS ed è probabile che venga usata da persone che parlano di "programmatori reali" usando "strumenti reali" su "sistemi operativi reali"
Cosa potrebbe indicarmi che forse non c'è un'enorme differenza nel programmatore che usa la lingua? Forse la differenza è percepibile solo dallo scrittore del compilatore? Sebbene ci possano essere casi in cui è utile che il programmatore che usa la lingua sappia cosa c'è sotto il cofano dello zucchero sintattico? (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 Syntax e Syntactic Sugar?
- A chi importa?
Cibo extra per il pensiero
Bonus sulla contraddizione argomento:
Sulla pagina di Wikipedia viene fornito un esempio:
Ad esempio, nel linguaggio C la
a[i]
notazione è zucchero sintattico per*(a + i)
Considerando che un'altra risposta alla domanda sopra collegata parla dello stesso esempio:
Adesso considera
a[i] == *(a + i)
. Pensa a qualsiasi programma C che utilizza array in modo sostanziale.
E riassume che:
La
[]
notazione facilita questa astrazione. Non è zucchero sintattico.
La conclusione opposta per lo stesso esempio!