Її падіння не за горами: чому Python — не мова програмування майбутнього (і що з цим робити)
Спільноті програмістів знадобилося кілька десятиліть, щоб оцінити Python. Але з початку 2010-х років він стрімко розвивався і зрештою став популярніше за C, C#, Java та JavaScript.
Так вважає докторка наук з фізики елементарних частинок Ері Джурі. Також вона розробляє алгоритми штучного інтелекту, щоб краще ці частинки досліджувати.
Передаємо їй слово.
Але скільки це ще триватиме? Коли Python нарешті замінять інші мови і чому це станеться?
Я не вказуватиму точну дату, бо цього ніхто не може передбачити. Але можна оцінити переваги цієї мови та її недоліки, що, на мою думку, призведуть до занепаду.
Чому 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 повільний. Дуже повільний.
У порівнянні з іншими мовами, завдання на Python ви виконуватимете вдвічі (або навіть у 10 разів) довше.
На це є різні причини. Одна з них — ця мова динамічно типізована. Пам’ятаєте, вам не потрібно вказувати типи даних, як в інших мовах? А це означає, що потрібно багато пам’яті, бо програма має зарезервувати достатньо місця для кожної змінної, щоб вона працювала в будь-якому випадку. І це збільшує час, який потрібний на обчислення.
Також Python може виконувати лише одне завдання за раз. Так відбувається, бо Python має переконатися, що кожна змінна має лише один тип даних, а паралельні процеси можуть цьому заважати.
Для порівняння, звичайний браузер може запускати десяток різних потоків одночасно.
Але, зрештою, проблема зі швидкістю не така вже й страшна. Комп’ютери та сервери настільки подешевшали, що ми говоримо про частки секунд. І кінцевому користувачеві байдуже, завантажується його програма за 0,001 чи за 0,01 секунди.
Область бачення
Спочатку Python мав динамічну область бачення. Проблема з динамічним визначенням області полягає в тому, що кожен вираз потрібно перевіряти в будь-якому можливому контексті. Ось чому більшість сучасних мов програмування використовують статичне визначення області бачення.
Python намагався перейти до статичного визначення області бачення, але не надто вдало. Зазвичай внутрішні області (наприклад, функції у функціях) можуть бачити та змінювати зовнішні області. У Python внутрішні області можуть лише бачити зовнішні області, але не змінювати їх. Це призводить до плутанини.
Lambdas
Незважаючи на всю гнучкість Python, використання Lambda є досить обмеженим. Lambdas можуть бути лише виразами в Python, але не операторами.
З іншого боку, змінні декларації і оператори завжди є операторами. Це означає, що Lambdas не може використовуватись для них.
Ця різниця між виразами та операторами досить умовна і не зустрічається в інших мовах.
Пробіли
У Python ви використовуєте пробіли та відступи для позначення різних рівнів коду. Це робить його візуально привабливим і інтуїтивно зрозумілим.
Інші мови, наприклад C++, більше покладаються на дужки та крапки з комою. Хоча це не так візуально привабливо та зручно для початківців, так набагато легше обслуговувати код, особливо у великих проєктах.
Новіші мови, такі як Haskell, вирішують цю проблему: вони використовують пробіли, але пропонують альтернативний синтаксис для тих, хто волів би обходитись без них.
Мобільна розробка
Зараз відбувається перехід від комп’ютерів до смартфонів. І звісно, нам потрібні мови, якими зручно створювати мобільне програмне забезпечення.
Але на Python розробляється не так багато мобільних програм. Це не означає, що це неможливо зробити: існує пакет Python під назвою Kivy.
Проте Python створювався не для мобільних пристроїв. Тож навіть якщо він підходить для базових завдань, найкраще використовувати мову, створену саме для розробки мобільних додатків. Ось деякі широко використовувані фреймворки програмування для мобільних пристроїв: React Native, Flutter, Iconic і Cordova.
Звісно, ноутбуки та настільні комп’ютери нікуди не зникнуть. Але оскільки мобільний трафік уже давно перевершує їхній трафік, можна з упевненістю сказати, що лише Python недостатньо, щоб стати успішним універсальним розробником.
Помилки виконання
Сценарій Python не компілюється, а потім виконується: він компілюється кожного разу, коли ви його виконуєте. Тому будь-яка помилка кодування проявляється під час виконання. Це призводить до низької продуктивності, значних витрат часу та необхідності проводити багато тестів.
Це чудово для початківців, оскільки тестування багато чому їх навчає. Але для досвідчених розробників, що працюють зі складними програмами, це дуже незручно.
Що може замінити Python у майбутньому і коли
На ринку мов програмування з’явилося кілька нових конкурентів:
- Rust пропонує таку саму безпеку, як і Python — жодна змінна не може бути випадково перезаписана. Але також вирішує проблему продуктивності за допомогою концепції власності та запозичень. За даними Stack Overflow Insights, це одна з найпопулярніших мов програмування за останні кілька років.
- Go чудово підходить для початківців, як і Python. Він настільки простий, що підтримувати код стало ще простіше. Цікавий факт: розробники Go є одними з найбільш високооплачуваних програмістів на ринку.
- Julia — новинка, прямий конкурент Python. Вона заповнює прогалину масштабних технічних обчислень: як правило, для цього використовують Python або Matlab у поєднанні з бібліотеками C++. Тепер можна просто використовувати Julia замість того, щоб жонглювати двома мовами.
Хоча на ринку є інші мови, Rust, Go та Julia допомогають уникати недоліків Python.
Їхня частка ринку все ще невелика (що відображається в кількості тегів Stack Overflow), але тенденція до зростання очевидна.
Враховуючи загальну популярність Python, безсумнівно, може пройти кілька років, чи навіть більше, до моменту, коли якась з нових мов замінить його. Чи буде це Rust, Go, Julia чи якась зовсім нова мова, поки важко передбачити. Але я певна, що падіння Python вже не за горами.
Автор: Ері Джурі
Текст адаптувала Євгенія Козловська
Favbet Tech – це ІТ-компанія зі 100% украінською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологіи та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: