Skip to main content

Блог инженера

Блог о минимализме, инжинерии и программировании.



Почему не нужен Micropython?

  | #waste#environment

Вчера я потратил довольно много времени пытаясь воспользоваться micropython на микроконтроллере. В основном я пытался “завести” micro:bit. Пришёл к простому выводу, micropython не нужен. Сама идея micropython кажется неплохой. У python понятный и “чистый” синтаксис, программы лучше читаемы, чем программы на C++ (раньше Arduino называло этот диалект языком Wiring) для Arduino. Но, на мой взгляд, этим преимущества и заканчиваются.

Язык python получил свою популярность тем, что он “с батарейками в комплекте”. В стандартный python входит множество библиотек, которые можно использовать, не устанавливая ничего дополнительно. Ещё больше библиотек можно элементарно подключать, используя менеджеры библиотек для питона, например - pip. Но к micropython это не относится. Он почти без батареек. Кое-какие, немногочисленные, библиотеки есть в стандартной поставке. Но само понятие “стандартный micropython” очень расплывчатое. Язык развивается, есть разные версии, и совсем не факт, что в используемом микроконтроллере будет актуальная версия micropython. Остальные библиотеки нужно искать в интернете. Много чего есть на Github, но потребуется ручной поиск. Никакого менеджера пакетов для micropython, насколько я знаю, нет. Даже если нужная библиотека найдена, весьма вероятно, она будет в нескольких вариантах для разных контроллеров использующих micropython. Даже в руководстве по библиотекам micropython описываются библиотеки, специфичные для нескольких, самых популярных, платформ.

Наконец, из опыта программирования на python я знаю, что это сложный язык, который притворяется простым.

Что же касается Arduino IDE - там поддерживается огромное количество библиотек для разного оборудования. А процесс подключения новых библиотек очень прост. Ценно и то, что вместе с библиотекой почти всегда идёт множество примеров применения, которые бывают информативнее документации.

В итоге, с micropython хорошо работать с датчиками и оборудованием, которые уже встроены в контроллер. Как правило, они работают сразу. Либо с оборудованием, которое поставляется разработчиком micropython. Например, в магазине micropython есть оборудование, которое будет работать с контроллером на micropython без дополнительных усилий. Как видите, список оборудования очень короткий. Для подключения любого другого “нестандартного” оборудования потребуются дополнительные усилия.

Технически, micropython - это программа с открытым исходным кодом. Его можно пересобрать, в том числе с классом-“обёрткой” вокруг любой стандартной библиотеки на C++. Но это полностью лишает micropython преимущества низкого входного порога для начала программирования. Чтобы сделать класс-“обёртку” и собрать micropython с библиотекой поддерживающей нужное оборудование - нужно быть классным программистом. Что касается меня - даже сборка micropython из исходных кодов по инструкции закончилась у меня неудачей. Ошибка при компиляции наверняка была устранимой. Возможно, мне лишь следовало собирать образ под Linux, а не под MacOS. Но я не стал пытаться, в любом случае это слишком сложная задача для меня. На моём уровне легче использовать Arduino IDE.

В итоге, программирование контроллеров на C++ оказалось более простым делом, чем программирование на micropython. На micropython легко начать мигать светодиодом или даже целым neopixel, для которого есть стандартная библиотека. Но для реального применения, когда к контроллеру нужно подключать датчики, дисплей и другое оборудование, C++ оказывается проще, а не сложнее.

About Mikhail Kiselev

Photo of Mikhail Kiselev

Приветствую в моём блоге! 😄 Меня зовут Михаил. Я инженер и программист. Живу в Сибири, работаю на Сахалине, путешествую где придётся. Я предпочитаю пост в блог посту в твиттер. Описание полезной технологии или гаджета предпочитаю описанию заката или посиделок в кафе.