Другие языки программирования и технологии
На каком языке лучше программировать микроконтроллеры? Ассемблер или С?
ассемблер само собой
Яша Рисковец
Почему
Яша Рисковец
Лучше знать и то и другое, для каких примерно задач ассемблер а для каких примерно С?
Яша Рисковец
А как используют ассемблер в микроконтроллерах а как С, какие задачи у них там?
Лучше - на C++. Чем выше уровень языка, тем быстрее программировать. Но многие микроконтроллеры еще программируются и только на чистом С, и Ассемблере, конечно.
Яша Рисковец
Чтоооо? Языки уровня ниже чем С++ лучше для микроконтроллеров
Марат *
Зависит от объема программы. Сейчас даже для микроконтроллеров редко требуется уложиться в очень маленький объем памяти, поэтому чем выше уровень языка, тем проще запрограммировать систему.
Яша Рисковец
Я уже влюбился в C
Если надо быстро, то C.
Лучше на C++. Atmega, STM32 поддерживают его синтаксис (но там нету STL и Boost, конечно же).
Но где надо оптимальнее - там оптимизировать - например, для ввода и вывода есть специальная константа и быстрее задать в ней бит, нежели вызывать функцию, но функцию намного удобнее и обычно делают через функцию. Местами можно и подходы из Си применять, и ассемблерные вставки тоже.
А сам размер программы далеко не всегда столь критичен, не все МК столь малую память имеют, да и C/C++ не так уж раздувают его.
А вообще многие устройства, где есть микроконтроллеры, хорошо бы переделать на встраиваемые одноплатные компьютеры. Такой даже в кустарных условиях можно сделать из потрохов смартфона на Android в связке с каким-нибудь микроконтроллером, который будет лишь тонкой прослойкой для взаимодействия с железом, а остальное будет в компьютере. Получится устройство с огромным функционалом, мощным железом, сенсорным дисплеем... Напиши под него нужное ПО и оно по количеству фич обыграет любого конкурента.
Но где надо оптимальнее - там оптимизировать - например, для ввода и вывода есть специальная константа и быстрее задать в ней бит, нежели вызывать функцию, но функцию намного удобнее и обычно делают через функцию. Местами можно и подходы из Си применять, и ассемблерные вставки тоже.
А сам размер программы далеко не всегда столь критичен, не все МК столь малую память имеют, да и C/C++ не так уж раздувают его.
А вообще многие устройства, где есть микроконтроллеры, хорошо бы переделать на встраиваемые одноплатные компьютеры. Такой даже в кустарных условиях можно сделать из потрохов смартфона на Android в связке с каким-нибудь микроконтроллером, который будет лишь тонкой прослойкой для взаимодействия с железом, а остальное будет в компьютере. Получится устройство с огромным функционалом, мощным железом, сенсорным дисплеем... Напиши под него нужное ПО и оно по количеству фич обыграет любого конкурента.
Си - быстрее учится, быстрее создаются приложения, приложения универсальные. Наконец, все компиляторы заточены на создание экономного быстрого кода, похожего на ассемблерный. Если не хватает памяти, берут микроконтроллер с большим размером памяти.
У ассемблера, пожалуй, видимое преимущество только в быстроте исполняемого кода.
У ассемблера, пожалуй, видимое преимущество только в быстроте исполняемого кода.
Антон Райник
"приложения универсальные"
С этим аккуратнее. Кроссплатформенность часто преувеличивают. Надо внести ясность.
На микроконтроллерах все зависит от библиотек. Есть библиотеки, которые позволяют атмеговский (точнее, ардуиновский) код портировать на STM32. Это для задач типа помигать светодиодом. Но вряд ли есть такие, которые позволяют сложный код, написанный под STM32, притащить на атмегу.
И конечно, все это не будет кроссплатформенно ни с ПК, ни со смартфонами, ни с сотовыми телефонами :)
С этим аккуратнее. Кроссплатформенность часто преувеличивают. Надо внести ясность.
На микроконтроллерах все зависит от библиотек. Есть библиотеки, которые позволяют атмеговский (точнее, ардуиновский) код портировать на STM32. Это для задач типа помигать светодиодом. Но вряд ли есть такие, которые позволяют сложный код, написанный под STM32, притащить на атмегу.
И конечно, все это не будет кроссплатформенно ни с ПК, ни со смартфонами, ни с сотовыми телефонами :)
Denis Chernov
Это все так. Чтобы начать программировать, можно об этом не думать. Ассемблер еще дальше от переносимости.
Спасибо за комментарий. Приятно послушать грамотного неравнодушного человека.
Спасибо за комментарий. Приятно послушать грамотного неравнодушного человека.
C конечно же.
Яша Рисковец
Бл, мои ответы модер удаляет. Я забыл книгу которую ты советовал по архитектуре компа. И ещё, ее прочитать вместо ЦИФРОВАЯ СХЕМОТЕХНИКА И АРХИТЕКТУРА КОМПЬЮТЕРА и АРХИТЕКТУРА КОМПЬЮТЕРА ТАНЕНБАУМ или добавить к прочтению?
Яша Рисковец
Спасибо
Яша Рисковец
То есть цифровую схемотехнику и архитектуру ПК ненадо читать. Только ТАНЕНБАУМ и П. С. Довгий, В. И. Поляков
Прикладная архитектура базовой модели
процессора Intel?
Прикладная архитектура базовой модели
процессора Intel?
Похожие вопросы
- Можно ли программировать микроконтроллеров на делфи? а можно ли еще в каком нибудь ЯЗ программировать (кроме ассемблер)
- Сложно ли программировать на ассемблере?
- На каком языке лучше программировать?? и с какого начать??
- Подскажите на каком языке начать программировать?настроен серьёзно разобраться,есть время чтоб разобраться.
- С какого языка начинать программировать?
- С какого языка начать программировать?
- Какую книгу выбрать для программирования начинающих? и с какого языка начинать программировать ?
- стоит ли изучать ассемблер, если программирую на Делфи? и вообще реально ли что нибудь хорошее, дельное, нужное написать
- Почему здесь нет языка программирования ассемблер?
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)