Zucchero sintattico

Da Wikipedia, l'enciclopedia libera.

Zucchero sintattico (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à del linguaggio, ma ne rendono più facile ("dolce") l'uso per gli esseri umani. I programmatori hanno così un modo alternativo di scrivere il codice che spesso è più pratico e produttivo, e genera programmi più facili da leggere e mantenere. Per contro il syntactic sugar non ha effetto sull'espressività del formalismo del linguaggio, né implementa nuove funzionalità.

Esempi[modifica | modifica sorgente]

Variabili[modifica | modifica sorgente]

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[modifica | modifica sorgente]

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, ed in alcuni linguaggi queste convenzioni sono più restrittive che in altri. Nel link qui riportato si trovano alcuni esempi di convenzioni adottate per manipolare le stringhe, che possono essere considerati esempi di "zucchero sintattico" [1]

Programmazione a oggetti[modifica | modifica sorgente]

Il linguaggio C è pienamente idoneo all'uso nella programmazione ad 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 ad 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 ed efficaci.

Critiche[modifica | modifica sorgente]

Alcuni programmatori pensano che queste caratteristiche siano poco importanti o addirittura frivole. Ad esempio, Alan Perlis, giocando sul significato del termine inglese "semicolon" (in italiano "punto e virgola", oppure riferito a "colon" parte 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 ad oggetti, insistono nell'usare nient'altro che il C puro.

Note[modifica | modifica sorgente]

  1. ^ Bug ID: 4472509 Add support for verbatim string literals