Почему Python написан на C, а не на C++?

Почему Python написан на C, а не на C++?
Почему Python написан на C, а не на C++? - davidclode @ Unsplash

Из всего, что я видел, это сочетание практических и исторических причин

(В основном) историческая причина заключается в том, что 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 на Python 3 потребовал немало работы и такого же дублирования. Однако, по крайней мере, в этом случае есть прямые преимущества от изменений, которые переписывание на C++ (само по себе) не дало бы (по крайней мере, немедленно).

Были подняты разглагольствования Линуса Торвальдса против C++, поэтому я также упомяну об этом. Ничто из того, что я видел от Гвидо, не указывает на то, что у него такие сильные негативные чувства по отношению к C++. Худшее из того, что я слышал от него, это то, что преподавание C++ часто оборачивается катастрофой — но он сразу же продолжил, что это в основном потому, что учителя не знали/не знали C++.

Я также думаю, что, хотя можно относительно легко преобразовать большой объем кода C в C++, для получения реальных преимуществ от C++ требуется не только гораздо больше переписывания, но и значительное переобучение большинства вовлеченных разработчиков. Наиболее хорошо написанный C++ существенно отличается от хорошо написанного C тем, что делает то же самое. Это не просто замена malloc на new и printf на cout при любом усилии воображения.

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - Стоит ли учить C++

Прикрепленное видео 2 - Для чего нужен язык C++


LetsCodeIt, 26 мая 2023 г., 13:50