реклама на сайте
подробности

 
 
7 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Python для разработчика, зачем?
Dubov
сообщение Mar 13 2018, 14:13
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



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

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

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

Сообщение отредактировал Dubov - Mar 13 2018, 14:15
Go to the top of the page
 
+Quote Post
Nix_86
сообщение Mar 13 2018, 14:27
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 7-04-11
Пользователь №: 64 200



Использую как вспомогательный инструмент для преобразования массивов данных там, где не хватает скилов применить Excel sm.gif
Go to the top of the page
 
+Quote Post
yes
сообщение Mar 13 2018, 14:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



например pyserial - какой-нибудь лабудой по UART (через USB2UART) управлять
обработка текстовых файлов - например из нетлиста схемы сгенерить констрейны для ПЛИС (раньше использовал awk, но python гораздо удобнее)
также всякая "внезапная" деятельность - например, понадобилось s-record распечатать в hexdump - pip instal bincopy и готово sm.gif, а на С++ это писать - день возни
раньше под винду использовал pywin32 для всякого "автомейшина" - то есть из PADSa какие-то данные доставал, в эксель вставлял - наверно это и бейсиком можно, но я бейсика не знаю, и когда на нем пытался что-то делать испытывал только отрицательные эмоции, а питон очень удобен
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение Mar 13 2018, 15:09
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Тесты, кодогенераторы (когда нужно сделать узкозаточенное железо, с кучей одинаковых блоков с разными коэффициентами), модели, для проверки концепции, кроме того, визуализация достаточно легко делается (графики, гистограммы, созвездия)
Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 13 2018, 15:53
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dubov @ Mar 13 2018, 17:13) *
Поделитесь опытом, как Python и скрипты сделали вашу жизнь проще. Возможно, в тестировании как-то это полезно?...

Питон встроен в свежий KiCAD, LibreOffice и т.п. - можно автоматизировать некоторые вещи.
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 14 2018, 04:30
Сообщение #6


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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

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

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

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

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Эдди
сообщение Mar 14 2018, 04:56
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Этот дебильный пхытон куда только нынче не пихают!
Но на мой взгляд изучать его нет необходимости, особенно в embedded, где кроме С и ассемблера ничего не нужно.
А во всяких embedded-linux'ах тоже пхытону места нет: скрипты на bash или zsh значительно удобней. И читаются намного легче идиотского синтаксиса пхытона.
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Mar 14 2018, 05:55
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884



Цитата(Эдди @ Mar 14 2018, 08:56) *
Этот дебильный пхытон куда только нынче не пихают!
Но на мой взгляд изучать его нет необходимости, особенно в embedded, где кроме С и ассемблера ничего не нужно.
А во всяких embedded-linux'ах тоже пхытону места нет: скрипты на bash или zsh значительно удобней. И читаются намного легче идиотского синтаксиса пхытона.

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


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение Mar 14 2018, 05:58
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



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

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

Кстати, рекомендую сразу правильно пользоваться операторами сложения, конкатенации и т.п. Потому что это сейчас питон - язык с динамической типизацией, но постепенно такие языки приходят к строгой типизации, и этот путь уже прошли perl и php. В этом плане тоже идеология питона мне приятна - "должен быть только один способ сделать что-либо правильно".
Go to the top of the page
 
+Quote Post
EvilWrecker
сообщение Mar 14 2018, 06:00
Сообщение #10


ядовитый комментатор
******

Группа: Свой
Сообщений: 2 765
Регистрация: 25-06-11
Пользователь №: 65 887



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

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

Сообщение отредактировал Herz - Mar 16 2018, 10:33
Причина редактирования: грубость
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение Mar 14 2018, 06:13
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



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

Наверняка есть разные случаи, и, действительно, есть всегда есть смысл обговорить точку отсчёта. Но, как правило, код на C - это 10% аппаратных затрат того же алгоритма, но выполненного на perl/python. В perl эту задачу решили, сделав математические и dsp-шные библиотеки на C, и прикрутив к ним perl'овский интрефейс, то есть, для программиста на perl это выглядит как обыкновенный perl'овый модуль. Но там хитрость - передача данных от perl к C и обратно требует накладных расходов, поэтому, даже если делать всё правильно - собирать большие объёмы данных и уже их отправлять на обработку в модуль, то можно достичь производительности 90% от кода на чистом C. На python мне такое делать не приходилось, но уверен на 140%, что там есть что-то похожее, правда, оставляю 6%, что подобного там нет. В то время, когда я подобными вещами пользовался, ещё не было. Но, признаюсь, синтаксис perl мне нравится больше, чем python, считаю python хипстерским языком, что, однако, не мешает мне видеть его сильные стороны (ну или я на это надеюсь).
Go to the top of the page
 
+Quote Post
Эдди
сообщение Mar 14 2018, 06:19
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(a123-flex @ Mar 14 2018, 08:55) *
расскажите об этом любителям ардуино)

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

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

Сообщение отредактировал Эдди - Mar 14 2018, 06:20
Go to the top of the page
 
+Quote Post
twix
сообщение Mar 14 2018, 06:19
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 4-11-15
Пользователь №: 89 174



Цитата(Dubov @ Mar 13 2018, 14:13) *
Прошу рассказать о каких-либо примерах применения Python в Embedded.

Это идиотизм применять язык высокого уровня, предназначенный для обработки больших массивов данных в Embedded где все заточено на экономию ресурсов.
Нельзя его там применять и точка.
Искать примеры еще больший идиотизм.
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение Mar 14 2018, 06:28
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Цитата
Нельзя его там применять и точка.
Искать примеры еще больший идиотизм.

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

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

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

Сообщение отредактировал one_eight_seven - Mar 14 2018, 06:32
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 14 2018, 06:38
Сообщение #15


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(one_eight_seven @ Mar 14 2018, 12:58) *
Нет, как раз ПО будет неэффективным.

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

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

Цитата(one_eight_seven @ Mar 14 2018, 13:13) *
Но, признаюсь, синтаксис perl мне нравится больше, чем python, считаю python хипстерским языком

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

7 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.02005 секунд с 7
ELECTRONIX ©2004-2016