Мова програмування Python починалася з пет-проєкту й більш ніж за 30 років стала однією з найпопулярніших серед розробників. Невеликий поріг входу, простота та зручний синтаксис відносно швидко зібрали навколо себе велику й зацікавлену спільноту. Однак в історії цього інструменту були й дуже неочікувані повороти, як-от реліз третьої версії, який додав головного болю всім розробникам.
У цьому матеріалі ділимося історією розвитку Python, та разом з директором та співзасновником Design and Test Lab Володимиром Обрізаном пояснюємо особливості популярної мови.
Різдвяні канікули
Взимку 1989 року 35-річний нідерландський розробник Гвідо ван Россум зовсім не мав планів на різдвяні канікули. Близьке коло його спілкування зводилося до нуля, тож програміст вирішив присвятити вихідні роботі.
На той момент Гвідо уже три роки працював у Науково-дослідному інституті математики та інформатики в Амстердамі (CWI). Спочатку він займався проєктуванням ABC — простої мови програмування зі зручним синтаксисом, яку могли швидко опанувати люди без досвіду в розробці. Утім, проєкт закрили — і Гвідо перейшов до команди, яка працювала над Amoeba, розподіленою операційною системою для великих компаній.
Робота потроху просувалася, однак розробникам бракувало розширеної скриптової мови. Саме за такий проєкт і взявся Ван Россум. За основу він обрав напрацювання ABC з елементами C та Pascal. Через кілька місяців пет-проєкт був готовий.
Найперша версія містила базовий синтаксис, оператори, словники, списки, рядки та інші типи даних. Крім того, Гвідо створив просту віртуальну машину, парсер та середовище виконання. Колеги Гвідо, яким він показав свої напрацювання, оцінили новий інструмент. Особливості мови давали розробникам інноваційну для свого часу можливість — вони могли самостійно додавати до системи потрібні типи об’єктів. Тому багато з них пропонували покращення та пробували використовувати мову для своїх проєктів.
Monty Python і священна мова програмування
Новий проєкт потребував назви, і Гвідо обрав перше, що спало на думку. Попри очевидні асоціації, неймінг не мав нічого спільного з плазунами. Програміст був палким шанувальником комедійного шоу «Летючий цирк Monty Python», тож назвав нову мову на честь нього. Подібний хід також відповідав моді того часу називати мови програмування іменами відомих людей (так, наприклад, з’явилися Pascal, Ada чи Eiffel).
Ще одна річ, яка потрібна була новонародженій технології, — логотип. Гвідо не став перейматися і тут: він обрав рандомний шрифт та написав ним слово Python. Однак юзери вперто не хотіли використовувати текстове зображення — їм подобалося асоціювати мову зі зміями. Останню крапку поставило видавництво O’Reilly, відоме своїми книжками з програмування та традицією зображати тварин на обкладинках. Python, без сумніву, мала представляти змія — і Гвідо здався.
Перші кроки молодої технології
У лютому 1991 року Ван Россум опублікував вихідний код Python на ресурсі alt.sources. Так виникла версія 0.9.0, яка обслуговувала винятки, функції, базові типи даних, володіла механізмом обміну функціональності між класами. Пропонувати покращення та зміни могли всі охочі, тож за пару років з’явився comp.lang.python — користувацький форум, який став початковою віхою в розвитку потужної Python-спільноти.
Першу версію мови остаточно фіналізували у січні 1994 року. На той момент вона мала нові функції простої обробки списку даних, як-от зіставлення, фільтрація і скорочення. Багато відгуків від програмістів ще кілька років давали змогу Гвідо та іншим Python-ентузіастам оновлювати та вдосконалювати інструмент. Але один допис вплинув на цей процес значно суттєвіше за всі інші.
Позбутися bus-фактора
У червні 1994 року один з учасників форуму опублікував розлогий допис з провокативною назвою «Що, якби Гвідо збив автобус?». Автор статті, Майкл МакЛей, писав, що попри певну «фанатську базу» та кількох волонтерів, Ван Россум залишався єдиним ключовим творцем Python. З цим, на думку МакЛея, була пов’язана інша проблема: попри зручність та простоту мови, великі бізнеси та академічні спільноти не хочуть нею користуватися, побоюючись ризиків. Якщо Гвідо «зникне», то незрозуміло, що далі буде з мовою, а отже — з їхньою роботою.
Спілкування програмістів вилилося в пропозицію для Гвідо стати запрошеним дослідником у Національному інституті стандартів та технологій США (NIST). Пізніше, у 1995-му Ван Россум переїхав до США, аби продовжувати роботу над Python у Корпорації національних дослідницьких ініціатив (CNRI).
Навколо Ван Россума та МакЛея поступово почали збиратися програмісти, що призвело до створення Python Software Foundation — некомерційної організації, яка відповідає за розвиток та «процвітання» Python. Її основу складає core-команда розробників, яка відповідає за підтримку інтерпретатора CPython, розробку мови та стандартних бібліотек, а також випускає нові версії. Таким чином технологію убезпечили від прив’язки до однієї людини.
Сам Гвідо отримав жартівливу посаду «великодушного довічного диктатора» (англ. Benevolent Dictator For Life). Вона передбачала, що всі ключові рішення щодо розробки мови лишаються за ним.
Нині Python Software Foundation продовжує опікуватися розвитком мови. Її команда розробляє основний дистрибутив Python, займається правами інтелектуальної власності, організовує конференції для розробників та забезпечує стипендіями розробників-початківців. PSF має кілька ступенів членства (детальніше про це можна почитати ось тут). Діяльність організації фінансується завдяки донатам від спільноти та компаніям-спонсорам.
Легендарні версії
У травні 2000 року Гвідо та основна команда розробників Python перейшли працювати до BeOpen.com. На базі цієї компанії сформувалася BeOpen PythonLabs, команда якої реалізувала Python 2.0. Версія суттєво спростила процес створення коду: вона містила значні покращення PEP, повну підтримку Unicode, концепції генераторів, list comprehensions, нові модулі та удосконалення стандартної бібліотеки та інше.
Приблизно у цей період з’явилася «філософія Python» — набір принципів, відповідно до якого працює мова. Її називають «The Zen of Python». Ключові принципи цієї філософії зводяться до кількох речей:
прагнення до простоти та інтуїтивності у сприйнятті коду;
прості, але суворі правила з мінімумом винятків та багатозначних трактувань;
орієнтація на практичні завдання та пошук очевидних рішень.
Повний текст можна побачити в інтерпретаторі Python, для цього потрібно скористатися командою import this.
BeOpen PythonLabs згодом об’єдналася з компанією Digital Creations, під «дахом» якої з’явилася Python 2.1. Поступово виходили інші версії, спільнота зростала, а вживаність мови набирала обертів. Здавалося б, усе йшло чудово, однак у грудні 2008 року стався колапс.
Розробники зарелізили Python 3.0. Вона містила функцію print, додаткову підтримку розподілу чисел та обробки помилок, але в цілому мета створення нової версії полягала у виправленні критичних несправностей попередніх. Працюючи над нею, програмісти суттєво змінили всю архітектуру мови. Характер змін був такий, що нова версія виявилася повністю несумісною з попередньою, що спричинило низку проблем для розробників.
Щоби полегшити розробникам перехід на нові версії, Python-спільнота 12 років випускала оновлення для старої версії. З кінця 2020 року офіційно підтримується лише третя версія, а Python 4, за словами Ван Россума, скоріше за все, ніколи не вийде.
«Я почав працювати з Python у 2012 році. Тоді у нас були невеликі проєкти на Python 2.7. Вони закінчувалися, а нові ми вже починали на мові з третьою версією. Тому, на щастя, я не встиг напрацювати велику кількість кодової бази, щоби відчути всі труднощі переходу. Але це не означає відсутність труднощів переходу з мінорних версій, наприклад, останній перехід з 3.11 на 3.12.
Змінити інтерпретатор загалом доволі легко — треба завантажити файл з сайту та встановити. Це завдання на дві хвилини. Та й сумісність самої мови між мінорними версіями дуже гарна. Я не памʼятаю, щоб треба було щось взагалі змінювати в коді, коли міняєш версію з 3.10 на 3.11, наприклад.
Однак є одне велике «але». Близько 85% коду в бекенд-додатках, які ми розробляємо — це сторонні бібліотеки, їх десь 100. Тому коли ми змінюємо версію мови, є дуже велика ймовірність, що десь там в однієї з них є поганий код, який зламається від зміни мови. Тому ми переходимо на нові версії мови, але робимо це повільно: тобто не одразу як виходить нова версія, а за півроку-рік, коли більшість бібліотек теж адаптується до змін», — каже Володимир Обрізан, директор та співзасновник Design and Test Lab.
Палиця з двома кінцями
«Я почав вивчати цю мову досить випадково, — розповідає Володимир. — До цього встиг попрограмувати на Basic, Pascal, C/C++, C# та Objective-C. У 2012 ми почали розробляти прості вебсервіси та адмінпанелі для наших замовників, та мені треба було обрати якийсь фреймворк. Я вирішив обрати Google App Engine для розробки вебсайтів та вебсервісів. Тоді вони мали SDK для мов Java та Python».
Спочатку Володимир обрав Java. Відкрив т’юторіал, почав робити усе за інструкцією, завантажив IDE Eclipse, завантажив Java, але після 3-4 годин без успіху не зміг запустити навіть Hello, world. Тоді він вирішив дізнатися, як це робиться на Python — і зміг запустити Hello, world-застосунок за 15 хвилин. «Тоді я зрозумів, що на Python багато чого робиться швидко та без великої кількості зайвого коду», — каже програміст.
Python дійсно має низку переваг перед іншими мовами, головна з яких — зручність та простота. Серед інших сильних сторін Володимир Обрізан виокремив такі:
стандартна бібліотека та велика кількість пакетів із відкритим вихідним кодом, завдяки чому можна підібрати готове рішення під практично будь-яке завдання;
популярність мови, яка виражається в інтересі людей до професії Python-програміста, різноманітті технічної документації та рішень на Stack Overflow;
мова часто використовується як механізм скриптингу для розширення можливостей програм, що вже існують. Наприклад, геоінформаційна система QGis використовує Python для розробки розширень та автоматизації завдань;
підтримка Python SDK від різних вебсервісів, як-от бібліотека boto3 для роботи з будь-яким сервісом Amazon Web Services.
Водночас Python має і слабкі сторони. Окрім складної системи публікування власних пакетів Open Source та специфічної контейнеризації, серед недоліків можна позначити:
брак інформації про те, як розробляти на Python великі програми з інтеграцією безлічі доменів та сервісів — у ніші розробки вебсайтів і вебсервісів Python більше асоціюється з невеликими програмами та MVP;
слабка сторона анотацій типів (type hints). Те, що код, якщо проанотований, не дає гарантії, що там немає помилок типізації, адже типізація перевіряється тільки на етапі введення інструкцій і під час лінтингу, а в момент виконання можна підставити об'єкт будь-якого типу.
«Мова добре підходить для розвʼязання алгоритмічних завдань, роботи з операційною системою, розробки вебсервісів, автоматизації тестування. Однак якщо потрібно максимально ефективно використовувати ресурси комп’ютера (памʼять та процесор) — тут Python, на жаль, програє. Попри зусилля, навіть в теорії Python не зможе наздогнати такі мови як C, C++, та Rust», — пояснює Володимир Обрізан.
Python сьогодні
У 2021 році Python виповнилося 30 років. Нині він посідає перше місце у рейтингах мов програмування ТІОBE та IEEE Spectrum. Простота у вивченні, велика кількість бібліотек та активна спільнота зробили технологію популярною у багатьох галузях — від вебу до машинного навчання.
«Мова стала такою популярною завдяки низькому порогу входу. Для неї не треба роками вивчати компʼютерні науки та розумітись на тому, як працює віртуальна памʼять комп'ютера та вказівники. Тому Python почали використовувати багато фахівців, які не є професійними програмістами. Їм не треба було вивчати програмування, а треба було вирішувати робочі завдання. Також спрацювала філософія відкритості — навіть я з 10-річним досвідом роботи з Python не можу пригадати жодної комерційної бібліотеки. Усі завдання вже розвʼязали за допомогою Python та виклали у вільний доступ. Шукай потрібне, встановлюй та використовуй», — каже Володимир Обрізан.
Головним автором мови все ще залишається Гвідо ван Россум, хоча внесок у її розвиток зробили багато інших людей. 2018 року Ван Росум відмовився від свого «титулу» і нині допомагає розвивати спільноту та мову як простий розробник. 2019 року він попросив не включати себе до ради директорів та підтримав інших кандидатів, остаточно зробивши Python незалежною технологією, яка більше не потребує засновника.
Сила спільноти
Спільнота розробників Python складається з великої кількості розробників та ентузіастів з усього світу, які активно співпрацюють між собою.
Навіть у Python Software Foundation всі стратегічні рішення наразі приймаються колективно, а контроль за дотриманням порядку здійснює рада керівників — тимчасовий орган, який регулярно переобирається та складається з п'яти осіб. Якщо з одним керівником щось трапиться, його місце займе інший. На розвиток Python-спільноти це не вплине.
У Python є PEP-індекс — задокументований регламент щодо внесення змін до структури та синтаксису мови. Будь-який розробник може запропонувати покращення, аргументувати їх цінність та надіслати текст на перевірку редакторам Python-спільноти. Якщо пропозиція пройде попередню перевірку, вона з'явиться на офіційному сайті спільноти. Тоді всі учасники зможуть вивчити її, обговорити майбутню цінність та проголосувати за заміни.
«На жаль, особисто я ніколи не працював та й не спілкувався з core-розробниками. Але хочу зазначити, що українці працюють над інтерпретатором Python навіть в умовах обстрілів та війни. Наприклад, у релізі Python 3.11 (жовтень 2022) український core-розробник Сергій Сторчака зробив понад 20 змін в інтерпретаторі мови, працюючи з Конотопу на Сумщині. В релізі Python 3.12 (жовтень 2023) він зробив понад 10 змін, в релізі 3.13 (очікується восени 2024) — біля 30 змін», — розповідає Володимир.
Майбутнє Python
«Те, що я бачу останні роки — Python стає «дорослою» мовою. Тут я маю на увазі, що розробляють механізми, щоб за допомогою Python можна було створювати великі проєкти. Наприклад, коли додали анотації типів, та можливість їх перевіряти, — це стало обовʼязковим в нашій компанії для розробників: за дві хвилини можна перевірити 100 000 рядків коду, що там ніде не наплутано з типами даних та вони сумісні між собою. Тому код стає більш надійним.
Ще я бачу, що багато робиться для оптимізації продуктивності інтерпретатора. Багато бібліотек переведено на асинхронну роботу з вводом-виводом інформації, тобто значно підвищилась продуктивність додатків, які обробляють велику кількість мережевих запитів.
Те, що Python — найпопулярніша мова (за TIOBE), не означає, що вона найкраща. Але, якщо нас всіх не замінить штучний інтелект, вона буде залишатися найбільш затребуваною ще багато років», — розмірковує Володимир Обрізан.
Comments