D'après tout ce que j'ai vu, c'est une combinaison de raisons pratiques et historiques. La raison (principalement) historique est que CPython 1.0 est sorti en 1989. À cette époque, C n’était que récemment normalisé. C ++ était presque inconnu et décidément non portable, car presque personne n'avait de compilateur C ++.
Bien que le C ++ soit beaucoup plus répandu et facilement disponible aujourd'hui, il faudrait encore beaucoup de travail pour réécrire CPython dans le sous-ensemble de C compatible avec C ++. En soi, ce travail apporterait peu ou pas d'avantages réels.
C'est un peu comme le blog de Joel sur le fait de recommencer et de réécrire complètement la pire erreur qu'une société de logiciels puisse commettre. Je contrerais cela en soulignant la conversion de Microsoft du noyau Windows 3.0 vers le noyau Windows NT et la conversion d'Apple de MacOS 9 à Mac OS / X. Aucune des deux n’a tué la société - mais c’était définitivement des projets de grande envergure, coûteux et à long terme. Les deux points soulignent également un élément essentiel à la réussite: maintenir les deux bases de code assez longtemps pour que la plupart des utilisateurs puissent passer à leur guise à la nouvelle base de code, en fonction des avantages (au moins perçus).
Pour une équipe de développement de la taille de Python, ce type de changement est beaucoup plus difficile. Même le passage de Python 2 à 3 a demandé pas mal de travail et a nécessité un chevauchement similaire. Au moins dans ce cas, toutefois, les modifications ont des avantages directs, mais une réécriture en C ++ (par elle-même) n’apporterait pas (du moins immédiatement).
Le discours de Linus Torvalds contre C ++ a été évoqué, je le mentionnerai donc également. Rien de ce que j'ai vu de Guido n'indique qu'il ait ce genre de sentiments négatifs et forts envers le C ++. Le pire que je l’ai vu dire est que l’ enseignement de C ++ est souvent un désastre - mais il a immédiatement ajouté que c’était en grande partie parce que les enseignants ne connaissaient pas / ne connaissaient pas le C ++.
Je pense également que s'il est possible de convertir beaucoup de code C en C ++ avec une relative relative facilité, obtenir de réels avantages du C ++ nécessite non seulement un peu plus de réécriture que cela, mais nécessite également une rééducation substantielle de la plupart des développeurs impliqués. Le C ++ le mieux écrit est très différent du C bien écrit pour faire les mêmes choses. Ce n’est pas seulement une question de changement malloc
vers new
et printf
vers cout
, par un effort d'imagination.