|
Panoramica sul linguaggio D |
|
|
Page 2 of 2 Caratteristiche principali del linguaggio DVediamo adesso di analizzare una per una le caratteristiche più interessanti del linguaggio D.
Assenza di un preprocessore: il linguaggio D non dispone di un preprocessore, come in C e C++, e tutte le feature ritenute utili e che venivano implementate a livello di preprocessore sono state incluse nel linguaggio stesso. Ciò rende la compilazione più semplice e veloce e il linguaggio più coerente. Garbage collection: questa feature permette al D di gestire la memoria in maniera automatica minimizzando il lavoro del programmatore e quindi la probabilità di bug oltre che a rendere più leggero il codice sorgente. Il programmatore può comunque, se lo ritiene opportuno, allocare e deallocare esplicitamente ogni tipo di oggetto. Template: come il C++ anche il D permette l'utilizzo di classi e funzioni template. La sintassi è stata completamente rivista e resa più leggibile e coerente con il resto del linguaggio. Espressioni regolari: pur non facendo propriamente parte della grammatica del linguaggio le espressioni regolari sono gestite in maniera ottimale attraverso funzioni ad hoc. Array e stringhe: gli array e le stringhe (trattate come comuni array di caratteri) sono dei tipi fondamentali nel linguaggio D. In particolare il D rende estremamente semplici operazioni come ridimensionare un array, leggere o scrivere una porzione di array, concatenare array, array associativi etc. Grazie a ciò molti dei problemi che il C++ aveva nel gestire le stringhe sono stati eliminati. Programming by contracts: questa feature del linguaggio permette di specificare le condizioni che devono essere soddisfatte all'entrata e all'uscita da una funzione. Ciò permette di controllare e debuggare in maniera più efficiente il codice. Ciò aiuta anche a rendere più chiaro il codice. Unit testing: questa feature rende più semplici i test di regressione per programmi e librerie attraverso l'esecuzione automatica di procedure che ne verificano il corretto funzionamento. Eccezioni: il linguaggio D utilizza il paradigma try-catch-finally al contrario del C++ che utilizza il semplice try-catch. Thread synchronization: il D mette a disposizione dei programmatori la possibilità di regolare l'accesso a una funzione da parte di thread multipli attraverso l'uso della parola chiave synchronize. Funzioni e classi annidate: questa feature permette di definire classi e funzioni rispettivamente all'interno di altre classi e funzioni. Ciò permette tra l'altro l'utilizzo di funzioni delegate (closures).
Ereditarietà: al contrario del C++ il D non implementa l'ereditarietà multipla ma quella singola combinata con l'uso di interfacce. Ciò non comporta rilevanti perdite di funzionalità e rende il compilatore considerevolmente più semplice ed efficiente.
Documentazione: attraverso una sintassi estremamente
semplificata e studiata ad hoc è possibile estrarre la documentazione dai sorgenti D
utilizando degli appositi tools come il Ddoc della Digital Mars. Front end opensource: il front end del compilatore D, che ne definisce l'implementazione ufficiale, è distribuito sotto licenza opensource. Ciò ha reso possibile ad esempio lo sviluppo del compilatore GNU GDC e rende possibile lo sviluppo di tool di analisi e refactory del codice D.
ConclusioniIl linguaggio D dispone di moltissime altre feature che vi invito a verficare di persona. Molto interessante a questo proposito è la pagina D vs Other Languages. Che dire, il linguaggio D ha sicuramente un ottimo pedigree, sfoggia feature di prim' ordine ed è giunto a livelli di considerevole stabilità. Speriamo di vederlo presto diffondersi come merita. Riferimenti - Sito ufficiale della Digital Mars - D Links
- Documentazione D
- Wiki4D
- D Programming Wikibook
<< Start < Prev 1 2 Next > End >> |