Из всего, что я видел, это сочетание практических и исторических причин. (В основном) историческая причина заключается в том, что CPython 1.0 был выпущен в 1989 году. В то время C был недавно стандартизирован. C ++ был почти неизвестен и явно непереносим, потому что почти никто не имел компилятора C ++.
Хотя C ++ сегодня гораздо более широко распространен и легко доступен, для переписывания CPython в подмножество C, совместимого с C ++, потребуется немало усилий. Сама по себе эта работа принесет мало или вообще никакой реальной выгоды.
Это немного похоже на сообщение в блоге Джоэла о том, что начинать заново и делать полное переписывание - это худшая ошибка, которую может совершить софтверная компания. Я бы возразил, указав на переход Microsoft с ядра Windows 3.0 на ядро Windows NT и переход Apple с MacOS 9 на Mac OS / X. Ни один из них не убил компанию, но оба были определенно крупными, дорогостоящими и долгосрочными проектами. Оба также указывают на то, что имеет решающее значение для успеха: достаточно долго поддерживать обе базы кода, чтобы (большинство) пользователи могли переключаться на новую базу кода на досуге, основываясь на (по крайней мере, предполагаемых) преимуществах.
Однако для команды разработчиков размером с Python такие изменения гораздо сложнее. Даже переход с Python 2 на 3 занял совсем немного времени и потребовал аналогичного совпадения. Тем не менее, по крайней мере, в этом случае есть прямые преимущества для изменений, которые не могли бы обеспечить (по крайней мере, сразу) переписывание на C ++ (само по себе).
Разговор Линуса Торвальдса против C ++ был поднят, так что я также упомяну это. Ничто из того, что я видел от Гвидо, не указывает на то, что у него такие сильные негативные чувства по отношению к С ++. О худшем, что я видел, он сказал, что преподавание C ++ часто является катастрофой - но он сразу же сказал, что это в основном потому, что учителя не знают / не знают C ++.
Я также думаю, что хотя можно относительно легко преобразовать большую часть кода C в C ++, для того, чтобы получить значительное реальное преимущество от C ++, требуется не только немного больше переписывания, чем это, но также требуется существенное переобучение большинства вовлеченных разработчиков. Большинство хорошо написанного C ++ существенно отличается от хорошо написанного C тем же. Это не только вопрос об изменении malloc
в new
и printf
к cout
, любой натяжке.