De tudo o que vi, é uma combinação de razões práticas e históricas. A (principalmente) razão histórica é que o CPython 1.0 foi lançado em 1989. Naquela época, o C foi recentemente padronizado. C ++ era quase desconhecido e decididamente não portátil, porque quase ninguém tinha um compilador C ++.
Embora o C ++ seja muito mais difundido e facilmente disponível hoje em dia, ainda seria necessário um bom trabalho para reescrever o CPython no subconjunto de C que é compatível com o C ++. Por si só, esse trabalho proporcionaria pouco ou nenhum benefício real.
É um pouco como post de Joel no blog sobre começar de novo e fazer uma reescrita completa como sendo o pior erro de um software empresa pode fazer. Eu contaria isso apontando para a conversão da Microsoft do núcleo do Windows 3.0 para o núcleo do Windows NT e a conversão da Apple do MacOS 9 para o Mac OS / X. Nenhum dos dois matou a empresa - mas ambos eram projetos grandes, caros e de longo prazo. Ambos também apontam para algo que é crucial para o sucesso: manter ambas bases de código por tempo suficiente para que (a maioria) os usuários possam mudar para a nova base de código, com base nos benefícios (pelo menos percebidos). / p>
Para uma equipe de desenvolvimento do tamanho do Python, no entanto, esse tipo de mudança é muito mais difícil. Até mesmo a mudança do Python 2 para o 3 deu muito trabalho e exigiu uma sobreposição similar. Pelo menos nesse caso, entretanto, há benefícios diretos para as mudanças, que reescrever em C ++ (por si só) não proveria (pelo menos imediatamente).
O discurso de Linus Torvalds contra o C ++ foi levantado, então vou mencionar isso também. Nada do que vi de Guido indica que ele tem esse tipo de sentimento strong e negativo em relação ao C ++. Sobre o pior que eu o vi dizer é que o ensino de C ++ é muitas vezes um desastre - mas ele imediatamente passou a dizer que isso é em grande parte porque os professores não sabiam / não sabem C ++.
Eu também acho que, embora seja possível converter muito código C para C ++ com facilidade relative , obter uma vantagem real do C ++ requer não apenas muito mais reescrita do que isso, mas também requer uma reeducação substancial da maioria dos desenvolvedores envolvidos. O C ++ mais bem escrito é substancialmente diferente do C bem escrito para fazer as mesmas coisas. Não é apenas uma questão de mudar malloc
para new
e printf
para cout
, em qualquer extensão da imaginação.