Nach allem, was ich gesehen habe, ist es eine Kombination aus praktischen und historischen Gründen. Der (meist) historische Grund ist, dass CPython 1.0 1989 veröffentlicht wurde. Damals wurde C erst kürzlich standardisiert. C ++ war fast unbekannt und definitiv nicht portierbar, da fast niemand einen C ++ - Compiler hatte.
Obwohl C ++ heutzutage weit verbreiteter und leichter verfügbar ist, würde es immer noch eine Menge Arbeit erfordern, CPython in eine Teilmenge von C umzuschreiben, die mit C ++ kompatibel ist. An sich würde diese Arbeit wenig oder gar keinen wirklichen Nutzen bringen.
Es ist ein bisschen wie in Joels Blog-Post, in dem es darum geht, von vorne zu beginnen und ein komplettes Rewrite durchzuführen, was der schlimmste Fehler ist, den ein Software-Unternehmen machen kann. Ich würde dem entgegenwirken, indem ich auf Microsofts Konvertierung von Windows 3.0 auf Windows NT und auf Apples Konvertierung von MacOS 9 auf Mac OS / X verweise. Keiner von beiden tötete die Firma - aber beide waren definitiv große, teure und langfristige Projekte. Beide weisen auch auf etwas Entscheidendes für den Erfolg hin: Beide Codebasen müssen so lange erhalten bleiben, dass (die meisten) Benutzer nach Belieben auf die neue Codebasis umsteigen können, basierend auf den (zumindest wahrgenommenen) Vorteilen.
Für ein Entwicklerteam der Größe von Python ist eine solche Änderung jedoch viel schwieriger. Sogar der Wechsel von Python 2 zu 3 hat viel Arbeit gekostet und eine ähnliche Überlappung erforderlich gemacht. Zumindest in diesem Fall ergeben sich jedoch direkte Vorteile für die Änderungen, die ein (eigenständiges) Umschreiben in C ++ (zumindest sofort) nicht bieten würde.
Linus Torvalds 'Schimpfwort gegen C ++ wurde zur Sprache gebracht, deshalb erwähne ich das auch. Nichts, was ich von Guido gesehen habe, deutet darauf hin, dass er solch starke negative Gefühle gegenüber C ++ hat. Das Schlimmste, was ich von ihm gehört habe, ist, dass das Unterrichten von C ++ oft eine Katastrophe ist - aber er fuhr sofort fort, dass dies größtenteils darauf zurückzuführen ist, dass die Lehrer C ++ nicht kannten / nicht kannten.
Ich denke auch, dass es zwar relativ einfach ist, eine Menge C-Code in C ++ umzuwandeln , dass es jedoch nicht nur ein bisschen mehr Umschreiben erfordert, sondern auch eine erhebliche Umschulung der meisten beteiligten Entwickler. Die meisten gut geschriebenen C ++ unterscheiden sich wesentlich von gut geschriebenen C, um die gleichen Dinge zu tun. Es ist nicht nur eine Frage des Wechsels malloc
zu new
und printf
zu cout
von einer Strecke der Phantasie.