Faccio lavoro di bioinformatica in D. Per me, la cosa chiave di D è che adotta un approccio molto equilibrato ai compromessi e riconosce il principio dei rendimenti decrescenti.
A differenza del C ++, che aderisce rigorosamente al principio zero overhead, D consente funzionalità che possono avere un piccolo costo di prestazioni / spazio se rendono il linguaggio molto più utilizzabile. Questi includono la garbage collection, un oggetto monitor per ogni classe, informazioni sul tipo di runtime, ecc.
A differenza di Ruby, Python, PHP, ecc., D cerca di essere quasi veloce come C, anche se è meno dinamico e leggermente più difficile da programmare rispetto ai linguaggi di scripting.
Il risultato è un linguaggio ottimale quando sia il tempo di sviluppo che il tempo di esecuzione contano allo stesso modo, cosa che nel mio campo è la maggior parte delle volte.
Allo stesso modo, D adotta un approccio molto diretto alla sicurezza rispetto alla flessibilità. Presuppone che i programmatori sappiano sostanzialmente cosa stanno facendo, ma commettono errori.
A differenza di C e C ++, si presume che non si desideri utilizzare puntatori, cast non sicuri, gestione manuale della memoria, ecc. Ovunque nel codice, poiché sono soggetti a errori e si presume che non si desideri vagliare più -pagina i messaggi di errore del modello quando si rovina solo per usare array ridimensionabili.
A differenza di Java e di altri linguaggi di schiavitù e disciplina, D presume che a volte puntatori, cast non sicuri, gestione manuale della memoria, ecc. Siano un male necessario e presume che tu sia abbastanza intelligente da gestire modelli reali, sovraccarico dell'operatore, ecc. Senza scrivere codice offuscato. Presuppone anche che si possa rovinare e accedere a un array fuori limite, ma che il programmatore sappia meglio quale compromesso dovrebbe essere fatto tra sicurezza e velocità in una determinata situazione. Pertanto, se gli array sono controllati dai limiti è semplicemente determinato da uno switch del compilatore.