C é uma linguagem muito simples, e é por isso que, junto com sua longevidade, é rápido e otimizado. Também é extraordinariamente suportado, em preocupações com ambientes incorporados, microprocessadores, etc.
É difícil superar uma linguagem muito simples e rápida. A única coisa que melhora uma linguagem como essa é a usabilidade: diminua o tempo que leva para criar um código genérico semelhante e torne mais fácil modelar com abstrações.
É aí que entra o C ++. O C ++ pode ser tão rápido quanto o C. O problema é que o C ++ é uma linguagem muito mais complexa, o que significa que definitivamente aumenta a produtividade; desde que as pessoas saibam como usá-lo. C ++ e C não são quase a mesma linguagem.
Agora, D foi outro passo em frente. Mesma capacidade de código rápido, coleta de lixo opcional, etc., mas nunca pegou. Espero que isso mude, porque ele cai o que aflige o C ++: compatibilidade com versões anteriores do C.
Então, para responder à sua pergunta, "melhor" é algo difícil de julgar. Em termos de simplicidade e velocidade, o C é provavelmente o melhor que podemos fazer. Em termos de produtividade versus simplicidade, o C ++ é provavelmente o melhor que podemos fazer, embora essa opinião varie muito mais. Por fim, em termos de uma linguagem aprimorada e limpa, com a velocidade e a simplicidade de C, D ganha esse contexto.