Ich arbeite in der Bioinformatik in D. Für mich ist das Wichtigste an D, dass es einen sehr besonnenen Ansatz für Kompromisse verfolgt und das Prinzip der sinkenden Rendite anerkennt.
Im Gegensatz zu C ++, das sich strikt an das Null-Overhead-Prinzip hält, ermöglicht D Funktionen, die möglicherweise geringe Leistungs- / Platzkosten verursachen, wenn sie die Sprache wesentlich benutzerfreundlicher machen. Dazu gehören die Speicherbereinigung, ein Überwachungsobjekt für jede Klasse, Informationen zum Laufzeittyp usw.
Im Gegensatz zu Ruby, Python, PHP usw. versucht D, fast so schnell wie C zu sein, auch wenn es weniger dynamisch und etwas schwieriger zu programmieren ist als Skriptsprachen.
Das Ergebnis ist eine Sprache, die optimal ist, wenn sowohl die Entwicklungszeit als auch die Ausführungszeit ungefähr gleich wichtig sind, was in meinem Bereich die meiste Zeit der Fall ist.
In ähnlicher Weise verfolgt D einen sehr besonnenen Ansatz in Bezug auf Sicherheit und Flexibilität. Es wird davon ausgegangen, dass Programmierer im Grunde wissen, was sie tun, aber Fehler machen.
Im Gegensatz zu C und C ++ wird davon ausgegangen, dass Sie nicht überall in Ihrem Code Zeiger, unsichere Casts, manuelle Speicherverwaltung usw. verwenden möchten, da diese fehleranfällig sind, und es wird davon ausgegangen, dass Sie Multi nicht durchsuchen möchten -Fehler der Seitenvorlage, wenn Sie es vermasseln, nur um Arrays mit veränderbarer Größe zu verwenden.
Im Gegensatz zu Java und anderen Bondage-and-Disziplin-Sprachen geht D davon aus, dass Zeiger, unsichere Casts, manuelle Speicherverwaltung usw. manchmal ein notwendiges Übel sind, und geht davon aus, dass Sie klug genug sind, um mit echten Vorlagen, Überladung von Operatoren usw. ohne Schreiben umzugehen verschleierter Code. Es wird auch davon ausgegangen, dass Sie ein Array außerhalb der Grenzen vermasseln und darauf zugreifen können, der Programmierer jedoch am besten weiß, welcher Kompromiss zwischen Sicherheit und Geschwindigkeit in einer bestimmten Situation zu treffen ist. Daher wird einfach durch einen Compiler-Schalter bestimmt, ob Arrays gebunden sind.