Спільноті програмістів знадобилося кілька десятиліть, щоб оцінити Python. Але з початку 2010-х років він стрімко розвивався і зрештою став популярніше за C, C#, Java та JavaScript.
Так вважає докторка наук з фізики елементарних частинок Ері Джурі. Також вона розробляє алгоритми штучного інтелекту, щоб краще ці частинки досліджувати.
Передаємо їй слово.
Але скільки це ще триватиме? Коли Python нарешті замінять інші мови і чому це станеться?
Я не вказуватиму точну дату, бо цього ніхто не може передбачити. Але можна оцінити переваги цієї мови та її недоліки, що, на мою думку, призведуть до занепаду.
Тренди Stack Overflow, які рахують кількість тегів у публікаціях на платформі, свідчать про популярність мови Python.
Майже 14% усіх запитань на Stack Overflow мають тег «python», і ця тенденція зростає. Ось чому.
Python існує з дев’яностих років. А це означає не лише багато років розвитку. За цей час сформувалась велика спільнота користувачів.
Тому, якщо ви зіштовхнулись з якоюсь проблемою під час кодування на Python, є висока вірогідність того, що її можна вирішити простим пошуком у Google. Швидше за все, хтось уже описав цю проблему до вас.
По-перше, існують чудові посібники, що допоможуть у вивченні цієї мови. По-друге, синтаксис Python дуже зручний для читання.
Тут не потрібно вказувати тип даних. Ви просто оголошуєте змінну; Python зрозуміє з контексту, чи це ціле число, число з плаваючою точкою, булеве значення чи щось інше. Це величезна перевага для новачків.
Якщо вам коли-небудь доводилося програмувати на C++, ви знаєте, як це засмучує, коли ваша програма не працює, бо ви замінили число з плаваючою точкою на ціле число.
І якщо вам коли-небудь доводилося паралельно читати код Python і C++, ви оціните, наскільки Python зрозуміліший. Незважаючи на те, що C++ розроблено з урахуванням англійської мови, читати її досить складно.
Оскільки Python існує досить довго, розробники створили пакети майже для будь-яких цілей.
Хочете обробляти числа, вектори та матриці? Використайте NumPy.
Хочете робити технічні та інженерні розрахунки? Ось вам SciPy.
Хочете досягти успіху в обробці та аналізі даних? Тримайте Pandas.
Хочете працювати зі штучним інтелектом? До ваших послуг Scikit-Learn.
Python пропонує можливості для сучасних розробок, в тому числі і для машинного навчання.
Здається, Python має всі шанси успішно залишатись однією з найпопулярніших мов. Але не забуваймо, що він має і недоліки. Нижче я розкажу про кожен з них.
Python повільний. Дуже повільний.
У порівнянні з іншими мовами, завдання на Python ви виконуватимете вдвічі (або навіть у 10 разів) довше.
На це є різні причини. Одна з них — ця мова динамічно типізована. Пам’ятаєте, вам не потрібно вказувати типи даних, як в інших мовах? А це означає, що потрібно багато пам’яті, бо програма має зарезервувати достатньо місця для кожної змінної, щоб вона працювала в будь-якому випадку. І це збільшує час, який потрібний на обчислення.
Також Python може виконувати лише одне завдання за раз. Так відбувається, бо Python має переконатися, що кожна змінна має лише один тип даних, а паралельні процеси можуть цьому заважати.
Для порівняння, звичайний браузер може запускати десяток різних потоків одночасно.
Але, зрештою, проблема зі швидкістю не така вже й страшна. Комп’ютери та сервери настільки подешевшали, що ми говоримо про частки секунд. І кінцевому користувачеві байдуже, завантажується його програма за 0,001 чи за 0,01 секунди.
Спочатку Python мав динамічну область бачення. Проблема з динамічним визначенням області полягає в тому, що кожен вираз потрібно перевіряти в будь-якому можливому контексті. Ось чому більшість сучасних мов програмування використовують статичне визначення області бачення.
Python намагався перейти до статичного визначення області бачення, але не надто вдало. Зазвичай внутрішні області (наприклад, функції у функціях) можуть бачити та змінювати зовнішні області. У Python внутрішні області можуть лише бачити зовнішні області, але не змінювати їх. Це призводить до плутанини.
Незважаючи на всю гнучкість Python, використання Lambda є досить обмеженим. Lambdas можуть бути лише виразами в Python, але не операторами.
З іншого боку, змінні декларації і оператори завжди є операторами. Це означає, що Lambdas не може використовуватись для них.
Ця різниця між виразами та операторами досить умовна і не зустрічається в інших мовах.
У Python ви використовуєте пробіли та відступи для позначення різних рівнів коду. Це робить його візуально привабливим і інтуїтивно зрозумілим.
Інші мови, наприклад C++, більше покладаються на дужки та крапки з комою. Хоча це не так візуально привабливо та зручно для початківців, так набагато легше обслуговувати код, особливо у великих проєктах.
Новіші мови, такі як Haskell, вирішують цю проблему: вони використовують пробіли, але пропонують альтернативний синтаксис для тих, хто волів би обходитись без них.
Зараз відбувається перехід від комп’ютерів до смартфонів. І звісно, нам потрібні мови, якими зручно створювати мобільне програмне забезпечення.
Але на Python розробляється не так багато мобільних програм. Це не означає, що це неможливо зробити: існує пакет Python під назвою Kivy.
Проте Python створювався не для мобільних пристроїв. Тож навіть якщо він підходить для базових завдань, найкраще використовувати мову, створену саме для розробки мобільних додатків. Ось деякі широко використовувані фреймворки програмування для мобільних пристроїв: React Native, Flutter, Iconic і Cordova.
Звісно, ноутбуки та настільні комп’ютери нікуди не зникнуть. Але оскільки мобільний трафік уже давно перевершує їхній трафік, можна з упевненістю сказати, що лише Python недостатньо, щоб стати успішним універсальним розробником.
Сценарій Python не компілюється, а потім виконується: він компілюється кожного разу, коли ви його виконуєте. Тому будь-яка помилка кодування проявляється під час виконання. Це призводить до низької продуктивності, значних витрат часу та необхідності проводити багато тестів.
Це чудово для початківців, оскільки тестування багато чому їх навчає. Але для досвідчених розробників, що працюють зі складними програмами, це дуже незручно.
На ринку мов програмування з’явилося кілька нових конкурентів:
Хоча на ринку є інші мови, Rust, Go та Julia допомогають уникати недоліків Python.
Їхня частка ринку все ще невелика (що відображається в кількості тегів Stack Overflow), але тенденція до зростання очевидна.
Враховуючи загальну популярність Python, безсумнівно, може пройти кілька років, чи навіть більше, до моменту, коли якась з нових мов замінить його. Чи буде це Rust, Go, Julia чи якась зовсім нова мова, поки важко передбачити. Але я певна, що падіння Python вже не за горами.
Автор: Ері Джурі
Текст адаптувала Євгенія Козловська
Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…
У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…
Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…
Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…
Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…
Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…