Realizo trabajos de bioinformática en D. Para mí, la clave de D es que adopta un enfoque muy equilibrado para las compensaciones y reconoce el principio de rendimientos decrecientes.
A diferencia de C ++, que se adhiere rigurosamente al principio de cero gastos generales, D permite características que pueden tener un pequeño costo de rendimiento / espacio si hacen que el lenguaje sea mucho más útil. Estos incluyen recolección de basura, un objeto de monitor para cada clase, información de tipo de tiempo de ejecución, etc.
A diferencia de Ruby, Python, PHP, etc., D intenta ser casi tan rápido como C, incluso si es menos dinámico y un poco más difícil de programar que los lenguajes de secuencias de comandos.
El resultado es un lenguaje que es óptimo cuando el tiempo de desarrollo y el tiempo de ejecución son igualmente importantes, lo que en mi campo es la mayor parte del tiempo.
Del mismo modo, D adopta un enfoque de seguridad muy equilibrado frente a la flexibilidad. Asume que los programadores básicamente saben lo que están haciendo, pero cometen errores.
A diferencia de C y C ++, se supone que no desea utilizar punteros, conversiones inseguras, administración manual de memoria, etc., en todas partes de su código, porque son propensos a errores, y se supone que no desea filtrar a través de múltiples mensajes de error de plantilla de página cuando lo arruinas solo para usar matrices redimensionables.
A diferencia de Java y otros lenguajes de servidumbre y disciplina, D asume que a veces los punteros, los lanzamientos inseguros, la administración manual de memoria, etc. son un mal necesario, y asume que eres lo suficientemente inteligente como para manejar plantillas reales, sobrecarga de operadores, etc. sin escribir código ofuscado También se supone que puede equivocarse y acceder a una matriz fuera de los límites, pero que el programador sabe mejor qué compensación se debe hacer entre seguridad y velocidad en cualquier situación dada. Por lo tanto, si las matrices son límites comprobados simplemente se determina mediante un conmutador de compilación.