- PVSM.RU - https://www.pvsm.ru -

Почему нельзя просто взять и перейти на Python 3

Поддержку Python 2.7 прекращают уже первого января 2020 года. Но многие компании до сих пор не перешли на его обновленную версию. В материале — обсуждаем причины сложившейся ситуации.

Почему нельзя просто взять и перейти на Python 3 - 1 [1]
Фото — Jan Kopřiva [2] — Unsplash

Не все готовы к новому «питону»

В 2020-м году будет прекращена [3] поддержка версии Python 2.7, и обновления по части безопасности приостановят [4]. Несмотря на то, что об этих планах стало известно еще пять лет назад — в 2014 году Гвидо ван Россум, автор Python, лично призывал [5] разработчиков и компании мигрировать на Python 3 — процесс адаптации новой версии идет медленно.

В начале года около 60% пакетов, скачиваемых из The Python Package Index (PyPI), относились [6] к версии 2.7. К сентябрю эта цифра уменьшилась до 40%, но, скорее всего, она не достигнет нуля до дедлайна [7].

Что тормозит миграцию

В крупных компаниях внедрение нового фреймворка или переход на обновленную технологию всегда требует существенных ресурсов и времени. В некоторых случаях процесс затягивается на месяцы и даже годы. Это связано с массивной кодовой базой и большим числом зависимостей. В Facebook начали [8] переводить сервисы компании на Python 3 еще в 2014 году. На реализацию этого проекта ушел год — пришлось переписать значительное число библиотек и поправить тысячи регрессий. После этого инженеры компании взялись за Instagram — в этом случае переход занял [9] десять месяцев. У Dropbox — миграция на Python 3 идет [10] уже целых три года.

В некоторых компаниях действуют строгие правила согласования существенных технологических обновлений со службой безопасности. Иногда это подразделение регулирует даже загрузку PIP-пакетов. «Безопасников» беспокоит, что при переходе на Python 3 в сервисах начнут появляться критические уязвимости. Действительно, в таких сферах, как банкинг и здравоохранение, цена ошибки может быть высокой. Так, в прошлом году британский TSB — в процессе внедрения новой IT-системы — столкнулся с багом, который вызвал [11] сбой в работе системы мобильного банкинга. В результате 1,9 млн человек потеряли доступ к своим счетам. Организация до сих пор разбирается [12] с последствиями.

Помимо всего прочего, Python 2 все еще поддерживают ведущие ОС на базе Linux. Например, в RHEL пользователи могут выбрать, с какой версией им работать. Хотя операционная система Red Hat постепенно мигрирует на Python 3, этот процесс идет не так гладко, как того хотелось бы. В процессе регулярно находят баги, в основном связанные с работой указателей. В Debian также остается поддержка Python 2, но переход на обновленную версию уже начался [13]. Он также продвигается медленно — инженеры последовательно тестируют библиотеки на совместимость.

В любом случае, даже после полного перехода на Python 3, многие продолжат работать с предыдущей версией — так как некоторые пакеты будут поддерживать [14] компании и энтузиасты из комьюнити.

Что думает сообщество

Резиденты Hacker News в тематическом треде отмечают [15], что главная причина медленной миграции — отсутствие (до недавнего времени) какой-либо ощутимой выгоды от этого процесса. В языке не было новых функций, которые могли бы заинтересовать разработчиков и подтолкнуть их к переходу на Python 3. При этом некоторые решения, сделанные авторами языка, наоборот, портили впечатление от программирования на нем. В частности, большую волну недовольства вызвало [16] исключение поддержки байтовых строк и переход на исключительную работу с Unicode. В Stack Overflow также отметили [6], что в экосистеме Python недоставало встроенных инструментов для автоматизированной трансляции кода с одной версии на другую. Проблему решили с появлением таких утилит, как 2to3 [17] и six [18].

Почему нельзя просто взять и перейти на Python 3 - 2
Фото — Hitesh Choudhary [19] — Unsplash

За последние годы функциональность Python 3 значительно расширилась [20]. Добавили перемножение матриц, модуль asyncio для организации конкурентного программирования, а также аннотации типов [21] переменных, полей класса, аргументов и возвращаемых значений функций. Поддержка Python 3 даже появилась для других популярных библиотек, например scikit-learn для ML. Обновленный набор функций должен убедить компании перейти на следующую версию языка. И хотя число адептов Python 3 в следующем году значительно возрастет, полный переход займет существенное время.


Почему нельзя просто взять и перейти на Python 3 - 3Мы в 1cloud.ru предлагаем услугу DNS-хостинга [22]. Зарегистрированные пользователи получают её бесплатно.


Почему нельзя просто взять и перейти на Python 3 - 4На любые вопросы, связанные с работой сервиса, ответят специалисты [23] из нашего центра компетенции.


Дополнительное чтение в блоге 1cloud:

Почему нельзя просто взять и перейти на Python 3 - 5 Спасет ли облако ультра-бюджетные смартфоны [24]
Почему нельзя просто взять и перейти на Python 3 - 6 «Как мы строим IaaS»: материалы о работе 1cloud [25]

Почему нельзя просто взять и перейти на Python 3 - 7 Досмотр электронных устройств на границе — необходимость или нарушение прав человека? [26]
Почему нельзя просто взять и перейти на Python 3 - 8 Вот это поворот: почему Apple изменила требования к разработчикам приложений [27]


Автор: 1cloud

Источник [28]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/338188

Ссылки в тексте:

[1] Image: https://habr.com/ru/company/1cloud/blog/477944/

[2] Jan Kopřiva: https://unsplash.com/photos/81KRiuf4cRQ

[3] прекращена: https://legacy.python.org/dev/peps/pep-0373/

[4] приостановят: https://www.zdnet.com/article/uk-cybersecurity-agency-warns-devs-to-drop-python-2-due-to-looming-eol-security-risks/

[5] призывал: https://www.zdnet.com/article/programming-language-python-2s-end-looms-so-why-will-many-miss-the-deadline/

[6] относились: https://stackoverflow.blog/2019/11/14/why-is-the-migration-to-python-3-taking-so-long/

[7] до дедлайна: https://pythonclock.org/

[8] начали: https://lwn.net/Articles/758159/

[9] занял: https://thenewstack.io/instagram-makes-smooth-move-python-3/

[10] идет: https://blog.dropbox.com/topics/company/thank-you--guido

[11] вызвал: https://www.theguardian.com/business/2019/nov/19/tsb-it-meltdown-report-computer-failure-accounts

[12] разбирается: https://www.computerworld.com/article/3412197/top-software-failures-in-recent-history.html#slide4

[13] уже начался: https://lists.debian.org/debian-python/2019/10/msg00043.html

[14] поддерживать: https://access.redhat.com/solutions/4455511

[15] отмечают: https://news.ycombinator.com/item?id=21538858

[16] вызвало: http://lucumr.pocoo.org/2014/1/5/unicode-in-2-and-3/

[17] 2to3: https://docs.python.org/2/library/2to3.html

[18] six: https://pypi.org/project/six/

[19] Hitesh Choudhary: https://unsplash.com/photos/D9Zow2REm8U

[20] расширилась: https://docs.python.org/3/whatsnew/3.5.html

[21] аннотации типов: https://docs.python.org/3/library/typing.html

[22] DNS-хостинга: https://1cloud.ru/services/dns?utm_source=habrahabr&utm_medium=cpm&utm_campaign=python&utm_content=site

[23] ответят специалисты: https://1cloud.ru/company/contact?utm_source=habrahabr&utm_medium=cpm&utm_campaign=python&utm_content=site

[24] Спасет ли облако ультра-бюджетные смартфоны: https://1cloud.ru/blog/oblako-i-budgetnie-smartfoni?utm_source=habrahabr&utm_medium=cpm&utm_campaign=python&utm_content=blog

[25] «Как мы строим IaaS»: материалы о работе 1cloud: https://1cloud.ru/blog/materiali-kak-mi-stroim-iaas?utm_source=habrahabr&utm_medium=cpm&utm_campaign=python&utm_content=blog

[26] Досмотр электронных устройств на границе — необходимость или нарушение прав человека?: https://1cloud.ru/blog/dosmotr-elektronnih-ustroistv-na-granice?utm_source=habrahabr&utm_medium=cpm&utm_campaign=python&utm_content=blog

[27] Вот это поворот: почему Apple изменила требования к разработчикам приложений: https://1cloud.ru/blog/apple-izmenila-trebovania-k-razrabotchikam-prilogenii?utm_source=habrahabr&utm_medium=cpm&utm_campaign=python&utm_content=blog

[28] Источник: https://habr.com/ru/post/477944/?utm_campaign=477944&utm_source=habrahabr&utm_medium=rss