Por todo lo que he visto, es una combinación de razones prácticas e históricas. La razón (principalmente) histórica es que CPython 1.0 se lanzó en 1989. En ese momento, C se estandarizó recientemente. C ++ era casi desconocido y decididamente no portátil, porque casi nadie tenía un compilador de C ++.
Aunque C ++ está mucho más extendido y es más fácil de obtener hoy en día, aún requeriría una gran cantidad de trabajo reescribir CPython en el subconjunto de C que es compatible con C ++. Por sí mismo, ese trabajo proporcionaría poco o ningún beneficio real.
Es un poco como la publicación del blog de Joel sobre volver a escribir y hacer una reescritura completa como el peor error que puede cometer una empresa de software. Contrarrestaría eso señalando la conversión de Microsoft del núcleo de Windows 3.0 al núcleo de Windows NT, y la conversión de Apple de MacOS 9 a Mac OS / X. Ninguno de los dos mató a la empresa, pero ambos fueron definitivamente proyectos grandes, caros y a largo plazo. Ambos también apuntan a algo que es crucial para el éxito: mantener ambas bases de código durante el tiempo suficiente para que (la mayoría) de los usuarios puedan cambiar a la nueva base de código a su gusto, en función de los beneficios (al menos percibidos).
Sin embargo, para un equipo de desarrollo del tamaño de Python, ese tipo de cambio es mucho más difícil. Incluso el cambio de Python 2 a 3 requirió bastante trabajo y requirió una superposición similar. Sin embargo, al menos en ese caso, hay beneficios directos a los cambios, que la reescritura en C ++ (por sí sola) no proporcionaría (al menos de inmediato).
El discurso de Linus Torvalds contra C ++ fue mencionado, así que lo mencionaré también. Nada de lo que he visto de Guido indica que tenga ese tipo de sentimientos fuertes y negativos hacia C ++. Lo peor que le he visto decir es que enseñar C ++ a menudo es un desastre , pero inmediatamente continuó diciendo que esto se debe principalmente a que los maestros no sabían / no sabían C ++.
También creo que, si bien es posible convertir una gran cantidad de código C a C ++ con relativa facilidad, obtener mucha ventaja real de C ++ requiere no solo un poco más de reescritura que eso, sino que también requiere una reeducación sustancial de la mayoría de los desarrolladores involucrados. La mayoría de C ++ bien escrito es sustancialmente diferente de C bien escrito para hacer lo mismo. Es no sólo una cuestión de cambiar malloc
a new
y printf
a cout
, por cualquier tramo de la imaginación.