Несмотря на то, что у него есть всего четыре года до конца жизни, Python 2.7 продолжает цепляться за него, причем загрузки намного превышают загрузки для новой ветви Python 3.x. Рассматривая ситуацию под другим углом, недавний опрос пришел к выводу, что к середине мая Python 3 будет поддерживаться лучше, чем Python 2.
Это открытие несколько удивительно из блога Microsoft MSDN, где оно было опубликовано Кристофером Уилкоксом, членом команды инструментов Python в Microsoft.
Он начинает свой пост со сценария, который мы ранее описали на I Programmer, что, несмотря на то, что Python 3 доступен с 2008 года, мы:
все еще глядя на мир, где люди используют Python 2, и говорят о том, что Python 3 не работает для них.
Повторяющееся оправдание, приводимое теми, кто цепляется за ветвь Python 2.x, самым последним членом которой является 2.7, заключается в том, что пакеты, на которые они полагаются, не относятся к Python 3.0. Однако анализ ситуации Уилкокса показывает, что это часто ошибочное убеждение.
Недавно мы попали в эту самую ловушку на прошлой неделе, когда критиковали Mathics, новый пакет символьной математики с открытым исходным кодом, за то, что он требует Python 2.7. Мы были быстро исправлены — его последняя версия действительно может использоваться с Python 3.3 и выше. Тем не менее, чтобы дать ему тестовый запуск, мы рекомендуем установить Python 2.7 из PyPI!
Недавний запрос на получение информации о Reddit о текущем запуске загрузок Python 2 по сравнению с загрузками Python 3 привел следующую статистику за двухнедельный период, охватывающий конец января/начало февраля 2016 года, на основе около 133 миллионов загрузок:
Комментируя эти цифры, защитник Pythonista и Python 3 Хайнек Шлавак заявляет в своем блоге:
ситуация с Python 3 кажется мрачной: все версии Python 3 вместе взятые примерно так же популярны, как Python 2.6, который больше никто не должен использовать.
Его выводы таковы:
Это означает, что в обозримом будущем нам придется писать гибридные библиотеки для PyPI.
Это означает, что статистика загрузки PyPI не будет выглядеть намного лучше в ближайшее время из-за огромного количества написанного кода только на Python 2 и Python 2.7, который все еще растет.
Но это также означает, что Python 3 растет. Новому поколению разработчиков Python это нравится, и они не понимают, зачем кому-то понадобилось подклассировать объект в каждом классе.
И, наконец, это означает, что Python 3-это не смерть Python. Но нам придется довольно долго жить с двумя Питонами. Если нам удастся не убить друг друга из-за этого, все будет в порядке.
Вместо того, чтобы смотреть на загрузки пользователей, Кристофер Уилкокс посмотрел на данные PyPI, чтобы исследовать обслуживание пакетов и количество активности.:
Таким образом, мы можем посмотреть на опережающий индикатор принятия-создание пакета, а не на конечный индикатор-загрузку пакета. Используя создание пакетов, мы можем обнаружить, что мир, в котором Python 3 лучше поддерживается, не так уж далеко.
Используя эту диаграмму Уилкокс показывает, что среди пакетов, загруженных за последние 5 лет, поддержка Python увеличивается, а поддержка Python 2 уменьшается:
(нажмите, чтобы увеличить)
Далее он извлекает две линии тренда, которые указывают на то, что поддержка Python 3 сходится с поддержкой Python 2:
Уилкокс пишет:
при запуске с данными, доступными по состоянию на 22 февраля 2016 года, анализ вернул дату 21 мая 2016 года, чтобы Python 3 поддерживался лучше, чем Python 2. Теперь это не включает пакеты, которые не классифицируются с помощью классификаторов сокровищ. Это также придает больший вес обслуживаемым упаковкам. Эта дата кажется оптимистичной, но данные, безусловно, указывают на то, что Python 3 вступит в силу в самом ближайшем будущем.
Другой сторонник Python 3, Ян Освальд, чьи взгляды мы изложили почти два года назад в Python 3.3, Обгоняет 2.7 — Время для переключения? обсуждается еще одна потенциальная тенденция, которая может ускорить внедрение Python 3.x — предоставление бесплатной поддержки Python 3.x при одновременной оплате поддержки Python 2.7.
Его рекомендации, на которые он указывает, исходят от старшего специалиста по промышленным данным с более чем 15-летним коммерческим опытом и более чем 10-летним использованием Python)::
Где это возможно – все новые проекты должны использовать Python 3.5+
Если требуется совместимость с Python 2.7 – напишите весь новый код совместимым с Python 3.5+ способом, сделайте обширные тесты для последующей неизбежной миграции
Примите во внимание, что поддержка Python 2.7 будет отключена через 3,5 года и что весь код Python 2.7, написанный сейчас, скорее всего, придется перенести позже (это стоимость бизнеса, которую вы можете оценить сейчас)
Примите во внимание, что по мере приближения к 2020 году все больше программистов (как новых, так и опытных) будут использовать Python 3.5+, поэтому поддержка библиотек на основе Python 2.7 неизбежно снизится (здесь есть большой риск для бизнеса)
Этот слайд из недавнего выступления Освальда под названием «Переход на Python 3!» суммирует преимущества, как он их видит:
Наконец, есть и другие признаки растущего энтузиазма в отношении этого шага. См., Например, сообщение о переключении с 2 на 3: Love, asyncio и многое другое от питониста, который, катаясь на линии 2.x, испытывал желание написать код Python 3.
И да, он был впечатлен.