Перейти к содержанию
    

Python для разработчика

Прошу рассказать о каких-либо примерах применения Python в Embedded.

 

Все чаще в вакансиях встречаю требование знать Python. Ума не приложу где его можно применить программисту C++.

 

Поделитесь опытом, как Python и скрипты сделали вашу жизнь проще. Возможно, в тестировании как-то это полезно?...

Изменено пользователем Dubov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую как вспомогательный инструмент для преобразования массивов данных там, где не хватает скилов применить Excel :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

например pyserial - какой-нибудь лабудой по UART (через USB2UART) управлять

обработка текстовых файлов - например из нетлиста схемы сгенерить констрейны для ПЛИС (раньше использовал awk, но python гораздо удобнее)

также всякая "внезапная" деятельность - например, понадобилось s-record распечатать в hexdump - pip instal bincopy и готово :), а на С++ это писать - день возни

раньше под винду использовал pywin32 для всякого "автомейшина" - то есть из PADSa какие-то данные доставал, в эксель вставлял - наверно это и бейсиком можно, но я бейсика не знаю, и когда на нем пытался что-то делать испытывал только отрицательные эмоции, а питон очень удобен

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тесты, кодогенераторы (когда нужно сделать узкозаточенное железо, с кучей одинаковых блоков с разными коэффициентами), модели, для проверки концепции, кроме того, визуализация достаточно легко делается (графики, гистограммы, созвездия)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделитесь опытом, как Python и скрипты сделали вашу жизнь проще. Возможно, в тестировании как-то это полезно?...

Питон встроен в свежий KiCAD, LibreOffice и т.п. - можно автоматизировать некоторые вещи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помимо автоматизации рутинных операций Python очень крут для анализа данных, моделирования и исследований - библиотеки numpy, matplotlib, jupyter и т.д (на венде лучше всего установить пакет Anaconda). Например, jupyter notebook - веб приложение класса computational notebook, позволяющее эффективно вести исследования и расчёты, совмещая с документированием. Вот я ради пробы побаловался.

 

Тут в ячейке 1 цепляемся к процессу, который гонит видеопоток, во 2-й ячейке выдёргиваем кадр (объект f), в 3-й выводим кадр, в 4-й выводим профиль 60-й строки. Далее можно делать что угодно - строить и анализировать гистограммы, наводить статистику, производить обработку изображения. Кадров можно выдрать сколько угодно и работать с их массивом.

 

Вот тут более взрослое использование фич jupyter notebook - прямо законченный документ, с оформлением, данными, вычислениями, ссылками и т.д. Помимо показанного там ещё можно писать формулы в формате LaTeX, получается очень красиво. :) Здесь обзор некоторых фич.

 

Кроме того, очень удобно писать вспомогательный и/или технологический софт, в том числе когда требуется GUI - например, с использованием биндинга PyQt. Скорость разработки возрастает по сравнению с кодированием на С++, а скорость приложения получается почти такой же. Критичные места можно реализовать на С++. Одной из самых крутых фишек является возможность внедрить в приложение на PyQt ядро jupyter и получить доступ к потрохам приложения в питоновой консоли по типу IPython со всеми плюшками в виде автодополнения, умной истории команд, возможности использовать всю мощь matplotlib и т.д. Доступ по чтению и записи - т.е. можно оперативно выхватывать данные из приложения и изменять внутренние объекты интерактивно. Нам очень это помогает при работе с видеопотоками от камер.

 

В общем, Python - универсальный язык, поддержанный огромным количеством библиотек на все случаи жизни, предоставляющий возможность быстро решать широчайший спектр задач от простой автоматизации рутинных операций до построения эффективного ПО для программно-аппаратного лабораторного комплекса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот дебильный пхытон куда только нынче не пихают!

Но на мой взгляд изучать его нет необходимости, особенно в embedded, где кроме С и ассемблера ничего не нужно.

А во всяких embedded-linux'ах тоже пхытону места нет: скрипты на bash или zsh значительно удобней. И читаются намного легче идиотского синтаксиса пхытона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот дебильный пхытон куда только нынче не пихают!

Но на мой взгляд изучать его нет необходимости, особенно в embedded, где кроме С и ассемблера ничего не нужно.

А во всяких embedded-linux'ах тоже пхытону места нет: скрипты на bash или zsh значительно удобней. И читаются намного легче идиотского синтаксиса пхытона.

расскажите об этом любителям ардуино)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

о построения эффективного ПО для программно-аппаратного лабораторного комплекса.

Нет, как раз ПО будет неэффективным. Но это прямо провозглашено в идеологии питона - он не для производительности ПО, он для производительности труда. Поэтому, правильнее будет не "построения эффективного ПО...", а "эффективного построения ПО".

 

Кстати, рекомендую сразу правильно пользоваться операторами сложения, конкатенации и т.п. Потому что это сейчас питон - язык с динамической типизацией, но постепенно такие языки приходят к строгой типизации, и этот путь уже прошли perl и php. В этом плане тоже идеология питона мне приятна - "должен быть только один способ сделать что-либо правильно".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, как раз ПО будет неэффективным.

Наверное спорно- случаи есть разные: мне кажется в озвученном контексте проще в качестве примера привести какой-нибудь Rust :biggrin: , который вроде как очень неплох и интересен на бумаге, но что-то не видно "серьезного" софта(HPC, эмбед без мейкерских иот/бле игрушек и пр). Или я отстал от жизни?

Изменено пользователем Herz
грубость

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверное спорно- случаи есть разные

Наверняка есть разные случаи, и, действительно, есть всегда есть смысл обговорить точку отсчёта. Но, как правило, код на C - это 10% аппаратных затрат того же алгоритма, но выполненного на perl/python. В perl эту задачу решили, сделав математические и dsp-шные библиотеки на C, и прикрутив к ним perl'овский интрефейс, то есть, для программиста на perl это выглядит как обыкновенный perl'овый модуль. Но там хитрость - передача данных от perl к C и обратно требует накладных расходов, поэтому, даже если делать всё правильно - собирать большие объёмы данных и уже их отправлять на обработку в модуль, то можно достичь производительности 90% от кода на чистом C. На python мне такое делать не приходилось, но уверен на 140%, что там есть что-то похожее, правда, оставляю 6%, что подобного там нет. В то время, когда я подобными вещами пользовался, ещё не было. Но, признаюсь, синтаксис perl мне нравится больше, чем python, считаю python хипстерским языком, что, однако, не мешает мне видеть его сильные стороны (ну или я на это надеюсь).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

расскажите об этом любителям ардуино)

Хорошее сравнение: как абдуринщики лепят свои поделки, совершенно не вникая суть и по принципу "абы работало" ("а если не хватит этой абдурины, возьмем более мощную или 2-3-5 штук") вместо того, чтобы взять нормальный микроконтроллер и почитать даташит, так и пхытон раскручивают, чтобы люди, вообще не имеющие даже базовых основ программирования, могли надергать куски готового кода и слепить "абы работало". А то, что оно тормозит как не в себя и ресурсов жрет неплохо, их не пугает: ведь можно проапгрейдить процессор, добавить памяти (а то и более мощный компьютер купить, если пхытон слишком тормозит на старом).

 

Краткое название всему этому — ориентирование на потребителя легкого поведения.

Изменено пользователем Эдди

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу рассказать о каких-либо примерах применения Python в Embedded.

Это идиотизм применять язык высокого уровня, предназначенный для обработки больших массивов данных в Embedded где все заточено на экономию ресурсов.

Нельзя его там применять и точка.

Искать примеры еще больший идиотизм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нельзя его там применять и точка.

Искать примеры еще больший идиотизм.

Очень узко мыслите. Вот прямо очень.

 

Прямо пример, который сразу приходит в голову - это парсер текстовых файлов - написан он будет на скриптовом языке очень быстро, отлажен очень быстро, а работать он будет очень надёжно. Это могут быть файлы конфигурации устройства на том же JSON или XML, приняли tar, распаковали его, обработали oneliner'ом, вычленили изменения настроек, применили. на том же perl это реально может быть oneliner - то есть, код в одну строку. Надёжно, протестировано, эффективно. Нужно раз в полгода, а-то и раз в несколько лет. Накладные расходы на использование скриптового языка получаются крайне низкими.

 

P.S. И это пример, когда скриптовый язык может применяться в конечном устройстве непосредственно. Выше в этой теме есть примеры, когда он используется в ходе разработки, а не в конечном изделии. Я чаще применяю именно так (в ходе разработки).

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, как раз ПО будет неэффективным.

А вы пробовали? А мы да. У нас есть приложение, принимающее поток с камеры - по сути software-defined camera: на дивайсе вся обработка выключена, что с сенсора снято, то и отправляется на хост в "сыром" виде, цель - отработка алгоритмов обработки видеопотока. Приложение написано на Qt5. И есть вариант этого же приложения на PyQt5. Оба приложения ожирают в районе 9% производительности проца (плюс-минус процент). При этом на питоновом варианте функциональность даже побогаче, не говоря уже о возможности интерактивно работать с потрохами приложения через консоль, висящую в другом процессе.

 

Да, критичные места переписаны на С++, но там их всего ничего - три-четыре функции. Тормозов нет, потому что внутри всё равно работает оптимизированный код: что GUI'ая часть - библиотеки Qt, что numpy (видеокадры - массивы ndarray) - операции реализованы на С (хотя кое-что пришлось переписать, например, их функция построения гистограммы очень медленная для нас оказалась, она универсальная и навороченная, для интерактива годится, для потока нет, пришлось написать свою, там кода пять строк). В этом и фишка питона: это язык-фронтэнд. Не нужно стремиться писать на нём всё, нужно уметь правильно распределить код - нагруженные вещи реализовывать в оптимизированных модулях, а на самом питоне писать только управление этим. В этом суть pythonic философии. И не случайно питон занимает лидирующее место по количеству библиотек - буквально есть почти подо всё.

 

Но, признаюсь, синтаксис perl мне нравится больше, чем python, считаю python хипстерским языком

Ну, на вкус и цвет... Но насчёт хипстерского вы явно перегнули. У питона наиболее простой и человечный синтаксис из всего, что видел. Он просто акцентированно простой и неперегруженный синтаксическими элементами. Даже точки с запятой в конце выражений нет. Даже лексем для выделения блоков. Уж проще просто некуда. Даже проще чем в матлабе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...