Чому не можна просто взяти і перейти на Python 3

  • 29 ноября, 16:13
  • 1221
  • 0

Підтримку Python 2.7 припиняють вже першого січня. Але багато компаній досі не перейшли на його оновлену версію. Обговорюємо причини ситуації, що склалася.

Чому не можна просто взяти і перейти на Python 3

Не всі готові до нового «пітона»

На початку 2020 року буде припинено підтримку версії Python 2.7, і оновлення по частині безпеки призупинять. Незважаючи на те, що про ці плани стало відомо ще п'ять років тому - в 2014 році Гвідо ван Россум, автор Python, особисто закликав розробників і компанії мігрувати на Python 3 - процес адаптації нової версії йде повільно. На початку року близько 60% пакетів, скачуваних з The Python Package Index (PyPI), ставилися до версії 2.7. До вересня ця цифра зменшилася до 40%, але, швидше за все, вона не досягне нуля до дедлайну.

У великій компанії впровадження нового фреймворка або перехід на оновлену технологію завжди вимагає істотних ресурсів і часу. У деяких випадках процес затягується на місяці і навіть роки. Це пов'язано з масивною кодової базою і великим числом залежностей.

У Facebook почали переводити сервіси компанії на Python 3 ще в 2014 році. На реалізацію цього проекту пішов рік - довелося переписати значне число бібліотек і поправити тисячі регрессий. Після цього інженери компанії взялися за Instagram - в цьому випадку перехід зайняв десять місяців. У Dropbox - міграція на Python 3 йде вже цілих три роки.

У деяких компаніях діють суворі правила узгодження істотних технологічних оновлень зі службою безпеки. Іноді цей підрозділ регулює навіть завантаження PIP-пакетів. Служби безпеки компаніі турбує, що при переході на Python 3 в сервісах почнуть з'являтися критичні баги.

Дійсно, в таких сферах, як банкінг і охорона здоров'я, ціна помилки може бути високою. Так, в минулому році британський TSB - в процесі впровадження нової IT-системи - зіткнувся з багом, який викликав збій в роботі системи мобільного банкінгу. В результаті 1,9 млн людей втратили доступ до своїх рахунків. Організація досі розбирається з наслідками і заявами від клієнтів.

Python 2 до сих пір підтримують провідні ОС на базі Linux. Наприклад, в RHEL користувачі можуть перемикатися між двома версіями мови. При цьому процедура не позбавлена багів, в основному пов'язаних з роботою покажчиків. У жовтні схожу помилку знайшли в Debian. Тому тут ще є над чим працювати.

Що думає спільнота

Резиденти Hacker News в тематичному форумі відзначають, що головна причина повільної міграції - відсутність (до недавнього часу) будь-якої відчутної вигоди від цього процесу. У мові не було нових функцій, які могли б зацікавити розробників і підштовхнути їх до переходу на Python 3. При цьому деякі рішення, зроблені авторами мови, навпаки, псували враження від програмування на ньому. Зокрема, велику хвилю невдоволення викликало виключення підтримки байтових рядків і перехід на роботу з Unicode.

Фахівці з Stack Overflow також відзначають, що в екосистемі Python бракувало вбудованих інструментів для автоматизованої трансляції коду з однієї версії на іншу. Проблему вирішили з появою таких утиліт, як 2to3 і six .

Відзначимо, що за останні роки функціональність Python 3 значно розширилася. Додали множення матриць, модуль asyncio для організації конкурентного програмування, а також анотації типів змінних, полів класу, аргументів і значень функцій. Підтримка Python 3 навіть з'явилася для інших популярних бібліотек, наприклад scikit-learn для ML.

Оновлений набір функцій повинен переконати компанії перейти на наступну версію мови. І хоча число адептів Python 3 в наступному році значно зросте, ще довгий час будуть зустрічатися компанії, що працюють з Python 2.7.


0 комментариев
Сортировка:
Добавить комментарий