Nella programmazione, zucchero sintattico (in inglese syntactic sugar) è un termine coniato dall'informatico inglese Peter J. Landin per definire costrutti sintattici di un linguaggio di programmazione che non hanno effetto sulla funzionalità o sull'espressività del linguaggio, ma ne rendono più facile ("dolce") l'uso per gli esseri umani; è quindi un modo alternativo di scrivere il codice, spesso più pratico e produttivo e che genera programmi più facili da leggere e gestire.
Esempi
Variabili
Consideriamo il modo di manipolare gli array di variabili in C. In C gli array sono trattati come blocchi di memoria, ai cui elementi si accede specificando l'offset rispetto all'indirizzo del punto iniziale del blocco. Tuttavia questi puntatori aritmetici sono scomodi, ineleganti e fonte di errori; per questo motivo il C mette a disposizione la notazione a[i]
in sostituzione della *(a + i)
che si sarebbe dovuta usare. Analogamente la notazione a[i][j]
è più facile da capire della *(*(a + i) + j)
.
Valori letterali
Una caratteristica comune a molti linguaggi di programmazione è la capacità di specificare direttamente nel sorgente valori letterali di tipo stringa (string literals) o di altro tipo (numerico, ecc.). Le convenzioni adottate variano da linguaggio a linguaggio, e in alcuni linguaggi queste convenzioni sono più restrittive che in altri.
Programmazione a oggetti
Il linguaggio C è pienamente idoneo all'uso nella programmazione a oggetti, mediante le funzionalità di cui dispone, come ad esempio l'impiego dei puntatori, il cast dei tipi, e le strutture di dati. Tuttavia altri linguaggi, come il C++, sono più adatti poiché dispongono di una sintassi progettata espressamente per questo stile di programmazione. Inoltre queste sintassi altamente specializzate rendono più agevole l'approccio alla programmazione a oggetti da parte dei nuovi programmatori. Analogamente alcune caratteristiche del C#, come le proprietà e le interfacce, non aggiungono nuove funzionalità ma piuttosto rendono queste particolari tecniche di programmazione più intuitive e efficaci.
Critiche
Alcuni programmatori pensano che queste caratteristiche siano poco importanti o addirittura frivole. Ad esempio, Alan Perlis, giocando sul significato del termine inglese "semicolon" (lett. "punto e virgola" ma ricorda il colon, cioè un tratto dell'intestino), commentando i cosiddetti "linguaggi bracket-delimited" affermò che «lo zucchero sintattico provoca il cancro del semicolon». Gli sviluppatori del kernel di Linux, pur utilizzando ampiamente la programmazione a oggetti, insistono nell'usare nient'altro che il C puro.
Collegamenti esterni