Python: чому вивчати та з чого почати?

share
Автор: Віктор Мойсеєнко, Team Lead, Python speaker and trainer, conducted over 25 group training courses, Consultant, GlogbalLogic Ukraine.

В цій колонці ми розглянемо кілька питань: чому Python такий популярний сьогодні, у яких сферах він використовується та з чого почати вивчення цієї мови. Тож поїхали по черзі!

Чому популярність Python набирає обертів?

Python зараз в трійці найпопулярніших мов програмування, інколи навіть обганяючи Java. Причин цього кілька:

  • Простота та легкість в написанні коду, а також при його читанні. Python – це мова програмування, якій легко навчитися, а ще головніше – навчити.
  • Швидкість розробки. На перший погляд, це не так вже і важливо, але час розробника – це гроші замовника. Як приклад, написати й розгорнути бекенд на Python можна набагато швидше ніж на будь-якій іншій мові (навіть швидше за Node.js). Тому ринок зацікавлений у Python. Корпорації на кшталт Google та Apple взагалі вже майже десятиліття більшість своєї внутрішньої розробки пишуть саме на цій мові.
  • Ком’юніті – любов до цієї мови зі сторони розробників створила величезне ком’юніті, яке активно підтримує перспективні проєкти, фреймворки, відповідає на складні питання на StackOverFlow, та розвиває мову.
  • Універсальність – ця мова на сьогодні є найбільш універсальною: на ній можна вчити програмувати дітей в школах, писати веб-додатки, сервіси, тестувати сайти чи програми, використовувати машинне навчання та програмувати пристрої для Internet Of Things.
Якщо я вивчу Python, у яких сферах я маю перспективи, чим цікавим зможу займатися?

Python це дуже гнучка мова, на ній пишуть ігри, сервіси, веб-додатки, крон-скрипти для бекапу, юніт тестування та з її допомогою навчають нейромережі. Та все ж, виділимо три основні напрямки:

  • Веб-розробка

Python один з лідерів в розрізі розробки веб-додатків та REST API сервісів – тут Python конкурує лише з Node.js. Це стало можливим завдяки масі перевірених часом фреймворків, серед яких:

  1. Django – популярний фреймворк-комбайн по принципу “все за ціною одного”. Для багатьох веб розробка почалась і “закінчилась” з вивченням лише цього одного фреймворку, бо в ньому є все необхідне для написання додатку будь-якої складності – від туторіального блогу до порталу (саме на Django був написаний Instagram). Тут є своя екосистема, структурованість, свій ORM та мова шаблонів. Для легкого “прикручування” REST API до Django проєкту існує чудовий пакет Django REST Framework.
  2. Flask – міні-веб-фреймворк. Тут вже інша ідеологія, ніж в Django – якщо в тому вся структура вже задана, у Flask розробник має сам її побудувати. І якщо в Django треба створити за допомогою утиліт ціле дерево директорій та файлів для проєкту та додатку, щоб створити початковий проєкт у Flask треба п’ять строк коду. І ще кілька, щоб прикрутити REST API за допомогою Flask-Restless.
  3. Aiohttp – майже повністю український проєкт. Для тих, кому цього мало, можна додати, що це повністю асинхронний HTTP як сервер, так і клієнт – тобто на ньому можна писати як супер швидкі веб-застосунки, так і скачувати/шукати щось в вебі. Багато проєктів, яким важлива швидкодія, переходять з традиційних на асинхронні фреймворки/технології (до речі, Django 3.x вже також може працювати в асинхронному режимі також).
  • Машинне навчання

Якщо в інших сферах можна знайти якісь альтернативи, то в цій Python на першому місці без варіантів. Так, для статистики та деяких задач є ще чудова мова R. Але для продакшен вона не дуже згодиться. Тому Python, який однаково зручно використовувати як для початкового концепту, так і для фінального. Ще важливим чинником для лідерства в цій області є (знову!) простота та гнучкість Python. Старі розробки для складних розрахунків, що були написані десятиліття назад на мовах С та Fortran були легко перенесені у Python. Google та Microsoft використовують цю мову як основну для машинного навчання.

За допомогою Python можна:

  • Читати текст або визначати типи об’єктів на фото чи відео
  • Спрогнозувати показники на біржах, вірогідність заторів на дорогах чи хвороби пацієнтів по даних їх аналізів
  • Генерувати картинки чи змінювати відео в потоці

Зараз є такі основні/цікаві бібліотеки для машинного навчання:

  • Numpy – “основа всього”, реалізація класів матриць/векторів та пов’язаних операцій
  • Pandas – бібліотека для аналізу даних, майже повністю злизана з чудової мови R.
  • Matplotlib – бібліотека для візуалізації даних, дуже стара та надпотужна з безліччю форматів та можливостей – навіть інтерактивних (як приклад, ось гра Сапер, написана на matplotlib). Єдиний мінус – ця бібліотека трохи складна, тому високо-рівневі бібліотеки на кшталт Seaborn набирають популярності.
  • Scikit-learn, Kerras, PyTorch, TensorFlow – популярні пакети/фреймворки для реалізації різних алгоритмів машинного навчання – від лінійної регресії до нейромереж.
  • Автоматизоване тестування

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

Є багато бібліотек/фреймворків для тестування. Серед тих, що постачаються відразу з Python – є проста, що дозволяє писати тести прямо в коді майже серед коментарів – doctest, так і потужна unittest, що є базою для тестів у багатьох проєктах. Є навіть такі, що перейшли з тестування на Java (JUnit) на Python. Перехід досить простий тому що обидві ці бібліотеки належать до одного сімейства xUnit, і в них дуже схожий API.

Але все більшою популярності набуває модерновий фреймворк Pytest, який є незалежним проєктом та дозволяє робити речі, не просто неможливі для unittest, а в деяких випадках – навіть просто фантастичні (наприклад, динамічні та параметризовані фікстури, маркери для тестів та багато іншого).

З чого варто почати, які ресурси для новачків?

В інтернеті є безліч ресурсів. Youtube переповнений короткими та довжелезними курсами та гайдами. Але якщо потрібний вивірений часом перелік ресурсів від зовсім простеньких до гарних курсів, то ось він:

  • LearnPython – супер-мінімалістичний інтерактивний туторіал. Прекрасний варіант, якщо хочеться глянути на мову, спробувати базові методи. Має перелік тем, на кожну з яких треба десь 5 хвилин.
  • Python for Absolute Beginners! – Безкоштовний курс на Udemi для абсолютних початківців.
  • Python for Everybody Specialization – безкоштовні курси по Python від Coursera. Я чув гарні відгуки щодо них.
  • My GitBook – матеріали для курсу по Python, який я веду в GlobalLogic.
  • Python3 on SoloLearn – безкоштовний курс. На вигляд дуже простий, але покриває основні теми досить глибоко + є тести. Є мобільний додаток з таким же ім’ям – дуже гарно зроблений з оновлюваним контентом від користувачів.
  • Python Lectures – набір лекцій по Python від Rajath Kumar у вигляді Jupyter notebooks. Мені ці лекції подобаються тому, що вони схожі на мої власні, які я використовую на курсі. Це інтерактивні Jupyter зошити (notebooks), які можна скачати і запускати локально, переглядаючи в браузері.

Ще дуже рекомендую підписатися та слідкувати за цими блогами:

  • Codeguida – дуже файний український девелоперський блог. Гарні статті по Python.
  • Python on Reddit – Python-меми та новини.
  • Python Insider – Майже офіційний блог Python ком’юніті. Основні новини від головних розробників.

Як можна розвиватись, та що прокачувати далі, якщо ти вже Junior чи Middle розробник, але хочеш стати справжнім гуру?

Ніякі книжки чи курси не перетворять на крутого програміста. Тільки робота над проєктами допомагає рухатись вперед. Знайди чи придумай проєкт і працюй над ним. Де взяти ідею?

  • Можливо, на поточному проєкті потрібна автоматизація якоїсь рутини? Завантаження файлу, пошук певних записів серед логів?
  • Чи треба адмінку для моніторингу статусу когось чи чогось?
  • Можливо треба веб база даних для книжок проєкту? Чи цікавих серіалів? Чи каталог мемів? База використовуваних віртуалок на проєкті?
  • Може потрібен Telegram чи Slack бот, який буде допомагати запускати тести, білди чи повідомляти про помилки?

Якщо цього замало – ось ще купа ідей:

Кожний такий проєкт – це цікава задача, цікава подорож у світ. Тож час в дорогу! Бажаю вам приємної подорожі та сподіваюсь, що зміг зацікавити Python!

А якщо ви хочете ще гайдів – то можете прочитати про те, як робити перші кроки у вивченні BiGData: частина перша та частина друга.

Категорії блогу

Категорії блогів

ТОП автори

Oleksii Hlushchenko

Oleksii Hlushchenko

Manager, Engineering, GlobalLogic

Volodymyr Nos

Volodymyr Nos

Lead Software Engineer, Engineering, GlobalLogic

Mariia Krapyvka

Mariia Krapyvka

Specialist, GlobalLogic

Dmytro Haidenko

Dmytro Haidenko

Senior Test Engineer, Quality Assurance, GlobalLogic

Dmytro Ryabokon

Dmytro Ryabokon

Director, Engineering, GlobalLogic

Архів

Подивіться наші попередні колонки

Подивитись архів