Lo que determina el éxito y la popularidad de un lenguaje de programación para el desarrollo de software en el mundo real está solo parcialmente relacionado con la calidad del lenguaje en sí. Como lenguaje puro, D posiblemente tenga muchas ventajas sobre C ++ y Java. Como mínimo, es una alternativa creíble como lenguaje puro, todas las demás cosas son iguales.
Sin embargo, otras cosas son importantes para el desarrollo de software, casi más que el lenguaje en sí mismo: portabilidad (en cuántas plataformas se ejecuta), soporte de depurador, soporte IDE, calidad de biblioteca estándar, soporte de biblioteca dinámica, enlaces para API comunes, documentación, el desarrollador comunidad, impulso y soporte comercial, solo por nombrar algunos. En todos estos aspectos, D está irremediablemente detrás de Java, C ++ y C #. De hecho, diría que incluso está detrás de los llamados lenguajes de "scripting" como Python, Perl, PHP, Ruby e incluso JavaScript en este sentido.
Para ser franco, simplemente no puede construir una aplicación multiplataforma a gran escala usando D. Con una biblioteca estándar inmadura, no hay soporte en ningún IDE moderno (hay complementos para Visual Studio y Xamarin Studio / MonoDevelop), limitado soporte de biblioteca dinámica / compartida, y pocos enlaces a otros idiomas, D simplemente no es una opción hoy en día.
Si te gusta lo que ves de D, por supuesto, apréndelo: no debería llevarte mucho tiempo si ya conoces Java y C ++. No creo que el evangelismo sea útil: en este punto, si D va a tener éxito, lo que realmente necesita es que más personas lo utilicen en silencio y aborden sus principales deficiencias, como la biblioteca estándar y el soporte IDE.
Finalmente, en cuanto a C ++, aunque la mayoría está de acuerdo en que el lenguaje es demasiado complejo, miles de empresas están utilizando con éxito C ++ como parte de una combinación saludable de lenguajes al permitir solo un subconjunto más pequeño y bien definido del lenguaje. Todavía es difícil vencer a C ++ cuando se requiere tanto el rendimiento sin procesar como el uso de memoria pequeña.