Eu curto C++, mas acho que uma coisa atrapalha a popularidade é que as melhorias na linguagem correm muito lentamente.
Por exemplo, lançam uma versão nova a cada 2 ou 3 anos, geralmente revisada por muita gente e bem burocrática. O que tá certo, dado o impacto que essas mudanças tem.
Mas aí o que complica é que qualquer facilidade que a linguagem poderia ter, acaba ficando dependendo de alguma lib externa (tipo a Boost). E isso acho que é uma barreira para muita gente.
Por exemplo:
- Não tem uma forma de controle de dependências oficial. Você fica por conta de usar Conan, CMakeFiles, ou qualquer outra coisa que ainda sim não é padrão.
- Não tem uma forma de fazer testes unitários oficial. Aí de novo, fica pedendendo de outra lib.
- Tipagem bagunçada. Exemplo: no seu projeto você pode usar
std::string
, mas em uma lib que você tiver usando podem estar usandoQString
(do Qt),wxString
ou alguma outra que reinventaram. - Faltam alguns syntax sugar que várias linguagens têm. Tipo um simples "take(3)" acaba virando 3 linhas porque tem que chamar uma função específica de algum include.
Dentre outras barreiras que outras linguagens acabam não tendo.