З усього, що я бачив, це поєднання практичних та історичних причин. Історична причина (в основному) полягає в тому, що 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 ++ істотно відрізняються від добре написаних C, щоб робити те саме. Це НЕ тільки питання про зміну malloc
в new
і printf
до cout
, будь-натяжки.