Better Batteries: правильный вопрос о стандартной библиотеке — не размер, а социальная архитектура
В эссе о стандартных библиотеках утверждается, что вечный спор между минимализмом и полнотой — ложная дилемма. Ключевой фактор — социальная архитектура, обеспечивающая качество. Python страдает от неравномерного качества stdlib, но его ранняя доступность функциональности привела к революции в науке о данных. Go демонстрирует институциональную способность проектировать качественные API, а Rust, несмотря на блестящие API 1.0, испытывает трудности с реализацией новых дизайн-решений, например, до сих пор нет API для получения случайных байтов от ОС.
Проблема стандартной библиотеки Python — это не размер, а её, хм, неравномерное качество.
- nicoburns
Сейчас у нас, как правило, есть компромисс между:
- Стандартной библиотекой, которая одновременно и доверенная/благословенная, и постоянно стабильная
- Экосистемой пакетов, которая не является ни тем, ни другим
Я бы очень хотел увидеть больше исследований промежуточного пространства:
- Расширенная стандартная библиотека, которая поставляет версионированные библиотеки, использующие semver, а не постоянную стабильность.
- Лучшая поддержка управления проверкой и гарантиями экосистем пакетов.
- exceptione
«Включенные батарейки» и типобезопасность — не единственные, но, по моему мнению, самые важные критерии для программных проектов (я исключаю одноразовый код и скрипты). Статья поднимает важный вопрос, но не знакомит читателя с экосистемами JVM и .NET Core. Стандартные библиотеки этих двух зоопарков языков программирования значительно затмевают то, что предлагают обсуждаемые языки (Go, Python и Rust).
Например, вот ASP.NET Core: <https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetco...>. Это стандартная библиотека: <https://learn.microsoft.com/en-us/dotnet/api/?view=net-10.0>. Это EF Core: <https://learn.microsoft.com/en-us/ef/core/>.
Есть еще много (опциональных) технологий, встроенных в систему. Ваш код обычно на 98% зависит от официального, проверенного и одобренного кода. Это может звучать как преувеличение, но разумно утверждать, что у JVM и .NET Core нет конкурентов, если выбирать по этим критериям.
Я знаю, языки программирования и религия... Так что делайте с этой информацией что хотите.
- karlsefni
Я полностью ожидал сравнения последних химических составов батарей и забыл, что фраза «batteries included» используется в программировании.
Как человек, который не часто использует упомянутые языки, удивительно слышать, что стандартная библиотека Python непоследовательна, учитывая, насколько она старая и сколько работы, вероятно, в нее вложено.