Мова Python – найпопулярніший інструмент серед наших розробників. Його застосовують для проектування web-сайтів, десктопних додатків, ігор та ін. Напевно, єдине, з чим він не зможе впоратися – написання операційної системи. У цій сфері конкурентів у мови Сі немає. Однак для завдань, пов'язаних з адмініструванням операційних систем на базі Linux він підходить ідеально. Можливо тому, Python включений за замовчуванням у дистрибутив Ubuntu і активно використовується системними адміністраторами як мова серверних сценаріїв, а також на ній написана основна маса серверних утиліт.
Чому Python настільки популярний серед розробників, сисадмінів, а також людей, які займаються різними математичними дослідженнями: нейронними мережами, машинним навчанням тощо?
Насамперед, варто відзначити простоту його синтаксису та стислість. Корінною відмінністю Пітона прийнято вважати оформлення блокових конструкцій коду: цикли, умови, вміст класів, методів та функцій. У традиційних мовах для виділення таких блоків прийнято використовувати фігурні дужки, що заважає роботі зі складно вкладеними структурами, де необхідно визначити початок і кінець довгого блоку. Досить часто у мене виникало відчуття дискомфорту, коли пропустив чи вставив зайву фігурну дужку.
У Пітон для цього використовуються відступи (пробіли або табуляція). За рахунок цього підвищується читабельність, а розробник дисциплінується у використанні відступів як структур, що управляють, а не тільки як стилістичних елементів оформлення. Це послужило появі так званого пітонічного стилю в програмуванні, і ряд мов перейняли цей принцип.
Код у Пітоні не містить «зайвих» символів. Наприклад, знак долара перед змінними або крапки з комою в кінці кожного рядка, або використання var на початку оголошення змінних. Це тішить т.к. тексту набирати потрібно менше. Не доводиться пам'ятати елементи, що не впливають на логіку коду, або можуть бути обчислені позиційно самим інтерпретатором. Після того, як я звик до Пітона (після PHP), подібні елементи почали викликати дискомфорт. Для чого вони? Виявляється, без них можна було обійтися!
За своєю природою Пітон досить демократичний, дозволяє використовувати як процедурний і об'єктний підхід. У його синтаксис вбудовано багато традиційних і широко використовуваних патернів проектування: декоратори, генератори, синглтони та ін.
Існують усі концепції ООП, хоч і не відрізняються особливою вишуканістю як у C# або Java.
Імпортування бібліотек інтуїтивно зрозуміле та максимально спрощене. Скрізь підтримується принцип мінімалізму та явності конструкцій (без будь-якої магії з бубном).
Де потрібна навігація по файловій системі (при імпорті) або доступ до методів об'єкта, ви використовуватимете лише точку, а не зліші, стрілки та ін.
Звичайно це все дрібниці, але до них дуже швидко звикаєш це зручно і зрозуміло.
Все перелічене вище забезпечує досить низький поріг входу в програмування на Пітоні. Він широко використовується у навчальних закладах як перша мова програмування для технічних спеціальностей. А наявність безлічі бібліотек, особливо математичних, та простоти їх використання робить Пітон основним інструментом для швидкої розробки, прототипування та застосування різноманітних математичних алгоритмів.
І звичайно є фреймворки, у тому числі для Інтернету. На відміну від PHP, їх не так багато. Найпотужнішим із фреймворків для web-додатків прийнято вважати Django, є звичайно ще Tornado чи Flask. Але вони позиціонуються як мікрофреймворки і не мають такої великої інфраструктури і ступеня абстракції.
Основна мета будь-якого фреймворку – забезпечити найвищий рівень абстракції для програміста. Чим менше коду пише програміст для вирішення типових завдань, тим крутіше фреймворк. Він дозволяє зосередитися виключно на логіці програми і не думати про те, що «під капотом».
У цьому Django переплюнув багатьох конкурентів зі світу PHP. Деякі фреймфорки PHP наслідують архітектурні патерни Django. Коли я вперше познайомився з цим інструментом, багато здалося дуже знайомим, адже перед цим я використовував PHP-фреймворк Symfony, що лежить в основі Laravel. Я був приємно здивований, дізнавшись, що я вивчаю інструмент, що поклав основу для багатьох бібліотек на PHP.
У чому полягає абстракція? Наприклад. У серці будь-якої програми Django ставиться модель (база даних) – набір класів (таблиць) з атрибутами (полями таблиць) та їх властивостями. Далі класи зв'язуються між собою додаванням атрибутів зовнішніх ключів, забезпечуючи зв'язки «один-до-багатьом», «багато-до-багатьох» тощо. Маючи в наявності такі класи, ви легко створюєте, дістаєте і змінюєте дані в БД, не вникаючи як будувати для неї SQL-запити
Звичайно, не без інтерфейсу командного рядка, що робить роботу ще більш продуктивною.
Так само ця модель використовується для скаффолдингу CRUD-модулів та адмін. Інтерфейс. Причому останній може бути створений буквально двома рядками коду: першою ви створите свій адмін-клас, успадкований від адмін-класу джанги «з коробки», у другій – «годуйте» цьому класу ваш клас моделі. Всі. Ви отримаєте працездатну адмінку для таблиці з можливістю додати, видалити та змінити запис. Такий собі phpMyAdmin, але з можливістю кастомізації.
Ще рядок коду – фільтр полями.
Ще рядок – пошук.
Ще – кастомізація полів у списку.
Існує безліч тем для адмін інтерфейсу, включаючи Bootstrap.
За півгодини, можна створити адмінку для замовника, і не переживати, що в самий невідповідний момент щось відвалиться.
І звичайно, варто згадати велику кількість плагінів під Django.
Наприклад, плагін REST API дозволяє побудувати API, який, використовуючи вашу модель даних, надасть яскравий web-інтерфейс для тестування запитів.
Будь-яке завдання може бути вирішене в мінімальні терміни встановленням необхідного пакету Python, що є каталогом зі скриптами, необхідні частини яких (функції, класи, методи або змінні) ви імпортуєте у свій клієцький код і використовуєте.
І повертайте, завдяки ООП код у вас буде напрочуд коротким і розширюваним.
Тому я вважаю, що Python у зв'язці з Django – це гідний вибір для людей, які цінують свій час та час своїх клієнтів.