top of page

Пряма мова. Творець Python Гвідо ван Россум — про еволюцію мови, програмування 90-х та роль Python в епоху ШІ

Оновлено: 1 день тому




Творець мови програмування Python Гвідо ван Россум дав ексклюзивне інтерв’ю High Bar Journal. Він поділився думками про сучасне програмування, розповів про свої погляди на стрімкий розвиток ШІ, роль Python у цьому та розказав про свої улюблені проєкти на Python. Наприкінці на вас чекає бонус: перелік улюблених музичних виконавців творця найпопулярнішої мови програмування. 



«Я просто хотів створити зручний інструмент»


Чи передбачали ви на старті, що з часом Python будуть використовувати аж так багато людей


Упродовж 15 років після першого релізу мене часто питали: «Чому ти не перетворив Python на компанію? Ти ж фактично маєш скарб та віддаєш його безкоштовно!» А я відповідав: «Мені байдуже. Я добре заробляю, а мільярдером ставати не планую».


Усе, чого я хотів — це створити зручний інструмент для розробників. Жодних амбіцій, окрім як поділитися проєктом, не було. Мені завжди було цікавіше створювати інструменти для програмістів, а не просто писати програми. Під час роботи в Google я написав повноцінну систему для код-рев’ю, яка працювала як сайт. 


Крім того, нові мови програмування не матимуть успіху без відкритого коду. Усі більш-менш популярні мови зараз, як-от Java, TypeScript, C# — із відкритим кодом. Навіть C++ має принаймні два повністю відкриті компіляторні набори: старий GCC та Clang. 


Коли ви вперше усвідомили, що Python став вагомою частиною розробницької культури?


Приблизно 1994 року. Тоді ми з іншими ентузіастами спілкувалися в групі в Usenet. На той момент це була найбільш сучасна технологія для взаємодії в інтернеті, доступна переважно науковцям.


Одного разу люди почали обговорювати, що буде, якщо мене «зіб’є автобус» (bus factor). Жарт, за яким, утім, крилося серйозніше питання: що, як я вже не зможу брати участь у розвитку Python? Одні вважали, що це не проблема, інші пропонували створити систему управління проєктом. 


Пізніше з цієї ж групи надійшло запрошення провести семінар у Меріленді, США, і два-три місяці пробути науковим гостем у Національному інституті стандартів і технологій (NIST). Тоді я вперше усвідомив потенціал створеної мови, адже люди були готові заплатити за мою присутність на заході.


Чи змінилось би щось у вашій діяльності, якби не було Python?


У 1989-1990 роках, коли власне розроблявся Python, я вже близько семи років працював у Науково-дослідному інституті математики та інформатики в Амстердамі (CWI) — і мені подобалася моя робота. Якби не Python та його успіх, я, ймовірно, залишився б там до пенсії. Інший варіант — пішов би працювати в стартапи, утворені у CWI, як деякі мої колеги. 



Науково-дослідний інститут математики та інформатики в Амстердамі
Науково-дослідний інститут математики та інформатики в Амстердамі


Який ваш улюблений проєкт на Python? 


Найбільше я ціную не проєкти з елегантним кодом, а ті, що мають соціальний вплив. Наприклад, PyLadies та Django Girls — чудові ініціативи, що навчають жінок і дівчат програмуванню та допомагають їм потрапити до IT-спільноти, яка досі переважно чоловіча.


Які рішення у розвитку Python вас здивували найбільше?


Я знав, що NumPy буде важливим, але це окремий проєкт, який розвивається незалежно. Мої взаємодії з NumPy насправді почалися ще в середині 90-х, коли один із засновників першої числової бібліотеки для Python звернувся з кількома пропозиціями щодо покращення. Він висловив кілька невеликих побажань, які, на його думку, варто додати до Python. Я реалізував їх усі, навіть не до кінця розуміючи, навіщо вони потрібні.


Ось чому в Python з'явилися комплексні числа та extended slicing. А пізніше спільнота NumPy запропонувала додати спеціальний оператор @ для множення матриць. Тепер можна писати a @ b, і якщо a та b — матриці (наприклад, NumPy-масиви), виконується відповідна математична операція.


Остання наша співпраця стосувалася створення кращого інтерфейсу для передачі даних, переважно масивів. У результаті ми запропонували PEP 3118, який у Python 3 став новим стандартом буферного протоколу. Це дозволило різним модулям, які обробляють масиви, узгоджуватися на спільному форматі даних у пам’яті. Наприклад, інша бібліотека для лінійної алгебри може використовувати row-major формат, але завдяки протоколу вона все одно може обмінюватися даними з NumPy без копіювань. Це одна з небагатьох змін, які я вніс особисто.



Від ядерних досліджень до генеративного ШІ


Python став основною мовою для наукових обчислень і машинного навчання. Якими були ключові фактори, що зробили це можливим?


Популярність Python значною мірою зумовлена його стандартизацією як мови для проєктів штучного інтелекту. Попри те, що LLM здебільшого написані на C++, дослідники, які проводять експерименти та контролюють роботу бібліотек, послуговуються саме Python. 

Подібний підхід почав розвиватися в другій половині 90-х. Першим, хто його застосував, був Пол Дюбуа, який працював у Ліверморській національній лабораторії в Каліфорнії, де займаються ядерними дослідженнями. У них, як і в багатьох інших наукових установах, було багато коду на C++. Дюбуа зрозумів, що дослідники, які хотіли працювати з кодом на C++, не хотіли писати складний код лише для з’єднання бібліотек та обробки даних. Їм більше підходила проста мова, що давала б змогу використовувати потужні числові бібліотеки. Тоді розпочалася робота над «контрольною мовою» — простою для науковців, але здатною залучити всю функціональність наявних числових бібліотек.


Дюбуа відкрив для себе Python і усвідомив: це саме те, що йому потрібно, навіть краще. Це стало початком тенденції створення гібридних застосунків: кінцевий користувач писав програми та функції на Python, але цей код зрештою викликав числові операції над великими масивами даних, реалізованими на C або C++.


Згодом з'явилося багато бібліотек, спеціально розроблених для швидкої та гнучкої обробки числових масивів. Першою такою бібліотекою була Numeric Python. Згодом вона еволюціонувала у NumPy. Зараз її багато хто використовує: коли я переглядаю чужі проєкти, постійно бачу в коді рядок import numpy as np.


Зрештою Python став логічним вибором для спеціалістів з машинного навчання, і використовується для управління тренуванням моделей, експериментами та їх викликами. Наскільки мені відомо, OpenAI використовує Python для більшої частини свого внутрішнього коду, хоча їх команда розробників на C та C++ також відповідає за реалізацію основної функціональності.





Як розвиток інструментів штучного інтелекту впливає на еволюцію самого Python?


Зараз йде активна робота над важливою зміною, яка теж прийшла зі світу ШІ. Йдеться про проєкт free threading. 


У CPython традиційно використовується GIL (Global Interpreter Lock), який не дозволяє виконувати Python-байткод у кількох потоках одночасно. Це обмежує ефективність багатопотоковість на рівні інтерпретатора. Однак деякі бібліотеки обходять це обмеження, звільняючи GIL під час виконання важких задач на C або C++. Наприклад, NumPy делегує великі лінійні алгебраїчні операції на сторонні C-бібліотеки (як-от BLAS), що дозволяє виконувати ці операції без GIL та паралельно запускати інші Python-потоки.


Але це вимагає значних зусиль. Ідея free threading виникла з PEP 703, запропонованого інженером з Meta. Проєкт передбачає видалення або відключення GIL. Це потребує зміни багатьох внутрішніх механізмів Python і ускладнює систему. Але якщо все вдасться, це дасть змогу писати багатопотокові програми, що дуже важливо для сервісів, які обробляють запити до великих мовних моделей.


Що ви загалом думаєте щодо того, що інструменти штучного інтелекту як-от ChatGPT, Cloud та інші, починають писати код за програмістів?


Це дискусійна тема. З одного боку, існують певні типи коду, які містять багато повторень і шаблонності — там ШІ може бути дуже корисним, адже суттєво пришвидшить роботу. 

Зовсім інше, якщо ви пишете більш складний та комплексний код, можете використовувати ШІ як помічника для простіших задач, але він не напише інтерпретатор Python або компілятор C++ замість вас.



Тут і зараз


Який технологічний стек ви використовуєте у роботі зараз?


Зазвичай це скрипти або бібліотеки. Основні — NumPy, OpenAI, Pydantic, PyTest. З інструментів — це Black, Pyrite і Build, який дає змогу створювати Python wheels. Якщо потрібно попрацювати з чимось іншим — я використовую підказки ChatGPT.  



Технологічний стек Гвідо ван Россума
Технологічний стек Гвідо ван Россума


Існує думка, що байдуже, який інструмент або мову програмування використовувати — будь-який проєкт можна реалізувати будь-якою мовою. Ви згодні з цим? 


У різних мов програмування є свої сильні та слабкі сторони, тому кожна найкраще підходить для різних завдань. Наприклад, ніхто не обере COBOL або Fortran для написання компілятора. Так само не варіант писати швидкий компілятор на Python, TypeScript чи JavaScript.

Нещодавно команда TypeScript з Microsoft, з якою ми добре знайомі, оголосила, що переписує свій компілятор на Go. Спочатку він був написаний на TypeScript, і їм пощастило, що для TypeScript і JavaScript існують дуже швидкі віртуальні машини, адже TypeScript компілюється в JavaScript. Але навіть так компілятор був надто повільним, адже користувачі створювали величезні бази коду на TypeScript.


Інший приклад — VS Code, який також повністю реалізований на TypeScript. Це один із найбільших проєктів цією мовою, і команда зіштовхувалася з проблемою повільної роботи початкового компілятора. Новий компілятор на Go разів у п'ять швидший.


Що у сучасному програмуванні приносить вам найбільшу радість, а що — найбільше засмучує?


Мене дуже тішить, що існують такі інструменти, як ChatGPT та Copilot. Наприклад, минулого листопада мені довелося терміново вивчити TypeScript, бо я приєднався до команди, яка займалася ШІ-моделлю. Однак вони писали код на TypeScript, тому мені довелося швидко опанувати мову. Без ChatGPT це було б набагато важче. 


А засмучує мене те, що ті-таки ШІ-системи часто використовуються неправильно, або ж їх надмірно демонізують. Здається, люди начиталися наукової фантастики, однак автори, які малюють апокаліптичні сценарії захоплення світу, насправді доволі мало знають про те, як влаштовані комп’ютери та штучний інтелект. Реальний ризик — це коли хтось із великою владою трохи з’їде з глузду та почне використовувати ШІ в злочинних цілях.


Чи є щось у технологічному минулому, за чим ви сумуєте?


Раніше Python був  простішим і доступнішим для ентузіастів. Я пам’ятаю часи, коли один аспірант міг без труднощів внести зміни до ядра інтерпретатора. Проте мова стає дедалі складнішою. Наприклад, у версії Python 3.10 ядро ще залишалося відносно простим. Але тепер, з функціями на кшталт free threading, код ускладнився настільки, що без глибоких знань внести зміни стає майже неможливо.


Наразі підтримка ядра Python поступово переходить до команд із великих корпорацій типу Facebook, Google та Microsoft. Це не просто ентузіасти, які витрачали на Python вільний час, а люди, яких найняли на фултайм для цього. І фактично тепер тільки вони можуть підтримувати складні частини інтерпретатора.


Приблизно рік тому я зрозумів, що моїх знань уже недостатньо для подібної задачі. Кілька людей, з якими я працював, займалися цим довше за мене та значно краще розуміли процес. Це трохи фруструвало.



Бонус: виконавці, під музику яких ви (можливо) створите щось на кшталт Python


  • Suzanne Vega

  • Sarah McLachlan

  • Joan Armatrading

  • Bob Dylan

  • Cat Power

  • West Side Story


Також Гвідо порадив послухати sci/fantasy-подкасти студії Midst — вони є на всіх платформах. 

© 2035 by Business Name. Made with Wix Studio™

bottom of page