Штуки не для всех
Комьюнити Python на Reddit преодолело важный рубеж в 1 млн участников. Сегодня мы взглянем на возможности языка и полезные инструменты, такие как скоростной линтер ruff и необычную оболочку xonsh. Приятного чтения.
1M Pythonistas на r/Python
Число участников официального комьюнити Python на Reddit перевалило за 1 млн. За 14 лет там было собрано потрясающее количество информации, советуем добавить себе в закладки. Здесь есть на что посмотреть и зелёному джуну, и опытному сеньору. Часто попадаются забавные статьи и обсуждения. Например, как применить опыт муравьиной колонии для решения задачи коммивояжёра или как научить гоночную машинку проходить трассу с помощью нейронной сети.
Конечно, не стоит ограничиваться исключительно сабреддитом r/Python. Статья 5 Subreddits Every Pythonista Needs to Know рассказывает о сабреддитах, которые полезны питонистам для улучшения своих знаний и навыков.
Что не стоит писать на Python
Можно долго расписывать преимущества Python и то, что он подходит для любых задач. Но с точки зрения написания специальных инструментов и одноразовых утилит, всё не так радужно. Несмотря на возможность быстро создать прототип инструмента, главной сложностью становится запуск. В компилируемых языках все зависимости должны быть удовлетворены только единожды — при компиляции. На выходе мы получаем бинарник со всеми нужными зависимостями.
Python компилируется только после запуска. Нужно следить, чтобы на хосте была нужная версия интерпретатора и установлены все зависимости. Если версия не совпала или обновилась какая-нибудь библиотека, от которой зависит приложение — оно не заработает корректно. А это трата времени и сил на устранение проблемы. С ростом сложности приложения, количество зависимостей лишь возрастает, становится слабым и хрупким местом. Важно, чтобы приложение работало сразу, а его поведение воспроизводилось в точности. И Python для этой цели не лучший вариант.
Бьёрн Боруд (Bjørn Borud), программист и соучредитель стартапа lab5e в своей статье рекомендует использовать любой компилируемый язык со статической типизацией. По его словам для этого подойдёт Rust или Go. Ну или на худой конец Java, позволяющая собрать приложение с зависимостями в один JAR-файл. Инструментарий, написанный на этих языках, не сломается от случайного изменения в цепочке зависимостей, как его аналог на Python. Хороший повод задуматься.
Наш коллега, DevRel Evrone и программист с ветеранским стажем, Григорий Петров со своей стороны рекомендует почитать про «python installer». Несмотря на название, это не технология установки самого Python, а технология изготовления «самодостаточных» приложений, которые содержат в себе и ваш код, и Python, и все нужные зависимости. Некоторые популярные решения: pyinstaller, py2exe, Briefcase.
Python на микроконтроллерах
Мы живём в прекрасное время, когда микроконтроллеры очень дёшевы и доступны каждому. Автоматизация процессов, прототипирование устройств и робототехника больше не удел исключительно инженеров в лабораториях. Любой школьник сейчас может спроектировать собственного робота, используя Arduino на базе микроконтроллеров Atmel. В качестве языка программирования такие платформы обычно используют C++ с фреймворком Wiring и собираемый компилятором avr-gcc.
На некоторых платформах Arduino есть поддержка MicroPython. Это диалект Python, реализующий не все возможности языка, но позволяющий запускать код на слабых устройствах с ограниченным объёмом памяти. Его основная целевая платформа как раз микроконтроллеры. Поскольку Arduino IDE не поддерживает MicroPython, следует использовать аналог — OpenMV IDE.
Использование более простого языка вкупе с низкоуровневыми возможностями дало серьезный толчок для развития. Некоторые коммерческие продукты, такие как Lego Mindstorms EV3 используют MicroPython в качестве основного языка программирования.
У MicroPython есть достаточно интересная производная, активно поддерживаемая компанией Adafruit Industries — CircuitPython. Это попытка сделать всё проще в изучении и практике. Так, к примеру, его можно использовать для программирования микроконтроллера RP2040 на плате Raspberry Pi Pico.
Extremely fast
ruff — самый быстрый линтер Python на Диком Западе. Написанный на Rust, он способен за 460 мс «причесать» кодовую базу CPython. Для сравнения: тому же pylint для этого потребовалось бы 27 секунд, а flake8 — целых 75 секунд. Можно ли сравнить эти линтеры и стоит ли сделать выбор в пользу самого скоростного из них? Давайте разбираться.
Внимательно читаем описание в репозитории. ruff — всего лишь Proof-of-Concept и пока что непригоден для полноценного использования в production. Сейчас он активно разрабатывается и к релизу, вероятно, сможет гарантировать полную сохранность кодовой базы. Пока что запускайте на свой страх и риск.
Самая главная идея, вокруг которой был создан ruff — инструменты для Python могут работать значительно быстрее. Автор проекта подмечает, что самые эффективные и удобные инструменты для Python были написаны с использованием других языков программирования. А чем сложнее проекты и больше кодовая база, тем больше скорости нужно для привычных инструментов.
xonsh — экзотический коктейль
Что будет, если взять привычный bash и добавить к нему возможности интерактивной оболочки Python 3.6+? Получится забавный гибрид, позволяющий программировать прямо из шелла с кучей примочек. Впервые о нем стало известно с мероприятия PyCon 2016, где Энтони Скопатц продемонстрировал основные фичи xonsh.
Кому нужна такая гибридная оболочка? В основном продвинутым пользователям, системным администраторам и учёным. Согласитесь, ведь удобно прямо в консоли выполнять вычисления, не прибегая к открытию отдельного приложения. Написание обычного шелл-скрипта не вызывает боли. Но лишь до того момента, пока его размер не вылезает за пару сотен строк. И если таковое случилось — это «звоночек», что пора переписать его на том же Python.
Разное поведение одного и того же шелла в разных экосистемах порождает много проблем. Сложно создать переносимый шелл-скрипт, одинаково хорошо работающий на разных системах. Для xonsh это не проблема. Равно как и работа с форматами, которые обычным шеллом не поддерживаются — JSON/XML/YAML. Точно также, как Powershell стал удобной и функциональной заменой классической командной строки, xonsh вероятно попробует занять своё «место под солнцем» на UNIX-системах.
Митапы и конференции
Python meetup
19:00
Рады сообщить, что у нас запланирован Python Meetup, который пройдёт 2 ноября 2022. Детальная информация о мероприятии будет опубликована позже, следите за нашими новостями. Программа митапа формируется.
Пропустили наш предыдущий митап? Не беда! Все доклады есть на нашем YouTube-канале в 4K.
Если вам есть, что рассказать и опыт, которым вы хотите поделиться, то смело пишите нам на почту andy@evrone.com или предложите доклад через форму.
Ruby Russia
Разработка на Python имеет множество преимуществ, но это не списывает другие языки со счетов. Можно почерпнуть немало полезного, узнав как создают приложения, например, на языке Ruby.
Совсем скоро на нашем мероприятии Ruby Russia соберётся полторы тысячи рубистов. Интерес к обсуждениям будет подогреваться заранее отснятыми в студии докладами кинематографического качества. Будет организован прямой эфир из Сколково: всё, чтобы обсудить интересующие вас темы из мира Ruby разработки!
Программа уже доступна на официальном сайте — регистрируйтесь и присоединяйтесь к нашей онлайн-конференции 30 сентября и 1 октября.
Вакансии
Evrone
Мы открыты для новых Python-разработчиков. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах и выступления на конференциях, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.