Eu trabalho com bioinformática em D. Para mim, o principal em D é que ela adota uma abordagem muito equilibrada das compensações e reconhece o princípio de retornos decrescentes.
Ao contrário do C ++, que segue rigorosamente o princípio de sobrecarga zero, D permite recursos que podem ter um pequeno desempenho / custo de espaço se tornarem o idioma muito mais utilizável. Isso inclui coleta de lixo, um objeto de monitor para cada classe, informações sobre o tipo de tempo de execução, etc.
Diferentemente de Ruby, Python, PHP, etc, D tenta ser quase tão rápido quanto C, mesmo que seja menos dinâmico e um pouco mais difícil de programar do que as linguagens de script.
O resultado é uma linguagem ideal quando o tempo de desenvolvimento e o tempo de execução são igualmente importantes, o que na minha área é na maioria das vezes.
Da mesma forma, D adota uma abordagem equilibrada entre segurança e flexibilidade. Parte do pressuposto de que os programadores sabem basicamente o que estão fazendo, mas cometem erros.
Ao contrário de C e C ++, ele pressupõe que você não deseja usar ponteiros, conversões inseguras, gerenciamento manual de memória etc. em todos os lugares do seu código, porque eles são propensos a erros e pressupõe que você não deseja filtrar várias de erro de modelo de página-página quando você estraga apenas para usar matrizes redimensionáveis.
Ao contrário de Java e outras linguagens de cativeiro e disciplina, D assume que, às vezes, ponteiros, elencos inseguros, gerenciamento manual de memória etc. são um mal necessário e assume que você é inteligente o suficiente para lidar com modelos reais, sobrecarga de operador etc. sem escrever código ofuscado. Ele também pressupõe que você pode estragar e acessar uma matriz fora dos limites, mas que o programador sabe melhor que compensação deve ser feita entre segurança e velocidade em qualquer situação. Portanto, se as matrizes têm limites verificados é simplesmente determinado por uma opção de compilador.