De todo lo que he visto, es una combinación de razones prácticas e históricas. La razón (en su mayoría) histórica es que CPython 1.0 se lanzó en 1989. En ese momento, C fue recientemente estandarizado. 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 conseguir hoy en día, aún se necesitaría una buena cantidad de trabajo para volver a escribir CPython en el subconjunto de C que sea compatible con C ++. Por sí mismo, ese trabajo proporcionaría poco o ningún beneficio real.
Es un poco como publicación del blog de Joel sobre comenzar de nuevo y hacer una reescritura completa siendo el peor error un software empresa puede hacer. Lo contrarrestaría 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 compañía, pero ambos fueron definitivamente grandes, costosos y proyectos a largo plazo. Ambos también apuntan a algo que es crucial para el éxito: mantener las bases de código de ambos durante el tiempo suficiente para que (la mayoría) los usuarios puedan cambiar a la nueva base de código cuando lo deseen, basándose en los beneficios (al menos percibidos). / p>
Para un equipo de desarrollo del tamaño de Python's, sin embargo, ese tipo de cambio es mucho más difícil. Incluso el cambio de Python 2 a 3 ha costado bastante trabajo y requiere una superposición similar. Sin embargo, al menos en ese caso, hay beneficios directos de los cambios, que la reescritura en C ++ (por sí misma) no proporcionaría (al menos inmediatamente).
La perturbación de Linus Torvalds contra C ++ se planteó, así que lo mencionaré también. Nada de lo que he visto de Guido indica que tiene ese tipo de sentimientos fuertes y negativos hacia C ++. Lo peor que le he visto decir es que enseñar C ++ es a menudo una desastre - pero inmediatamente dijo que esto se debe en gran parte a que los maestros no sabían / no conocían C ++.
También creo que si bien es posible convertir una gran cantidad de código C a C ++ con relativa facilidad, obtener una gran ventaja real de C ++ requiere no solo un poco más de reescritura, sino 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 la C bien escrita para hacer las mismas cosas. Es no solo una cuestión de cambiar malloc
a new
y printf
a cout
, por cualquier tramo de la imaginación.