Страница 1 из 1

Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 09:59:27
Victor_CCCP
Всем привет!
Уважаемые embed-программисты, подскажите пожалуйста - применяется ли для программирования микроконтроллеров (AVR, STM8) язык программирования C++?
То есть, именно плюсы, которые с ООП, булевым типом данных и другими, более "высокоуровневыми" отличиями от обычного ANSI C, который, я знаю, точно применяется для программирования микроконтроллеров.

Почему такой вопрос - я очень хочу научиться разрабатывать устройства на микроконтроллерах, за полмесяца изучил синтаксис классического Си (ANSI C, обучался в IDE Pelles C).
Теперь стою перед выбором - "прокачать" дальше теорию в C++, т.е. ООП, двигаться "выше" или перейти к специализированному курсу по C для микроконтроллеров, побитовые операторы, работа с памятью, регистрами, т.е. "ниже", ближе к аппаратному.

То есть, вопрос такой - если я хочу программировать микроконтроллеры и ничего больше - нужен ли мне C++ или он вообще не нужен для микроконтроллеров?

Понимаю, что язык - это всего лишь диалект, изучаемый за пару дней, важнее опыт, правильное мышление и понимание, но я так и не могу понять - используется ли C++ для МК со своими высокоуровневыми методами решения задач или там применяется только чистый Си?

Просто, у меня не так много времени остается на изучение в этой области, поэтому хотел бы использовать его с максимальной эффективностью, изучая действительно то, что нужно (только C или еще и C++, WinAPI).

Большое спасибо!

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 10:10:11
Jack_A
Думаю, стоит потратить время на изучение архитектуры выбранного ряда МК, больше пользы будет. А ООП на МК, на мой не претендующий на конечную истину взгляд - это кривая пародия для понтования. К тому же, никакой язык, вопреки спекулятивным рекламным восторгам об "автоматизации программирования", не может заменить работу программера по составлению, реализации и отладке алгоритма.

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 10:37:02
Victor_CCCP
Джек, спасибо за ответ!
Мне тоже не хочется учить C++, а более углубленно проработать еще раз Си уже для МК и особенности микроконтроллеров AVR. Но я просто не до конца понимаю, нужен ли мне будет C++ в embed-программировании, ведь о нем много хвалебных отзывов, а я еще не настолько хорошо знаю эту область, чтобы делать выводы.

То есть, есть ли смысл для embed-программиста, который будет только работать с микроконтроллерами, изучать C++ или вполне хватит из этих двух языков только C?

Спасибо!

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 14:01:21
arkhnchul
не нужен. В общем, конечно, зависит от жирности контроллера, под "большие" ARM-ы можно писать развесистые программулины хоть на питоне, но это уже на вкус и цвет. Если цель стоит "уметь писать прошивки для МК" - С хватит за глаза, а плюсы осиливайте тогда, когда (и если вообще) это непосредственно понадобится.

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 15:38:52
Pnjom-Penb
Из двух упомянутых альтернатив, нужны обе, но не одновременно. Если время ограничено, да к тому же Вы в начале пути, лучше отдать это время углубленному курсу по Си для м/к.
Что до C++, то его время придет, когда нужно будет работать со сложными м/к, имеющими большое количество внутренних зависимостей. И если Вы этим:
Victor_CCCP писал(а):Понимаю, что язык - это всего лишь диалект, изучаемый за пару дней
подразумеваете, что С++ есть диалект С, то это ошибка. Да и за пару дней его не изучить.

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 15:41:29
SubDia
Ну, вообще, это не два языка, прямо скажем.))

Я в своей жизни встречал только один проект для МК на Си++. Одна эмбеддерская контора разрабатывала плату на изделие для моей фирмы - там была связка ПЛИС и МК STM32. Они передали мне проект ПО МК, и он был написан на СИ++. Там контроллер был задействован по полной - эмуляция ISA шины, плотная работа с ПЛИС, и передача данных по USB. Плюс программная эмуляция еще кое-чего специализированного, что мне бессмысленно тут сейчас растолковывать.

В общем и целом, для начинающего эмбеддера я не вижу смысла ковырять СИ++. Там другая философия, это же ООП, сами понимаете. Не забивайте голову, Вам и так есть на что тратить время и силы.

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 16:22:08
Victor_CCCP
arkhnchul, Pnjom-Penb, SubDia, огромное спасибо!
Все понял, все хорошо разжевали, пойду учить курс Си для микроконтроллеров AVR.
:beer:

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Вс ноя 01, 2015 18:16:02
Pnjom-Penb
SubDia писал(а):[C и C++] это не два языка, прямо скажем.))
Ага, это всего лишь 1,999 языка. :)))

Re: Си или Си++ для микроконтроллеров, объясните пожалуйста?

Добавлено: Чт ноя 19, 2015 12:26:18
YS
Присоединяюсь к высказавшимся комментаторам. Поначалу не забивайте себе голову ООП, оно в эмбеде в 98% случаев ни к чему. Где начинается нужда в ООП, там, собственно, в некотором смысле кончается эмбед. Лучше почитайте, например, про MISRA.

Хотя, конечно, контроллеры бывают очень разные. На каком-нибудь Cortex-M4 с мегабайтом флеша и внешней SRAM, работающем на частоте 80 МГц, который должен рулить ЖК-экраном с тачскрином и пр., не грех уже и uCLinux запустить и на C++ писать. Но такие задачи, прямо скажем, встречаются нечасто.