мы перешли с ассемблера на C в программировании микропроцессора. У меня есть сомнения, что это хорошая идея
Не бойтесь, никто больше не разрабатывает новые программы на 100% ассемблере. В настоящее время C может использоваться даже для самых крошечных, самых грязных 8-битных архитектур. Однако знание некоторого ассемблера делает вас значительно лучше программистом Си. Кроме того, в программе всегда есть несколько мелких деталей, которые нужно написать на ассемблере.
Я могу сказать, что синтаксис C намного легче выучить, чем синтаксис Ассемблера.
Да, синтаксис проще, конечно. Тем не менее, изучение всего языка C со всеми досадными деталями гораздо сложнее, чем изучение всех деталей конкретного ассемблера. Си - это язык намного больше и шире. Но опять же, вам может не понадобиться изучать все детали.
C легче использовать для создания более сложных программ.
Действительно, C предоставляет механизмы для модульного проектирования программ, такие как инкапсуляция и локальные области видимости / локальные переменные. А у C есть стандартная библиотека плюс огромное количество ресурсов, написанных за последние 30 лет. И самое главное, C является портативным.
Изучение C более продуктивно, чем изучение ассемблера, потому что вокруг C больше развивающих вещей, чем Assembler.
C имеет множество готовых функций, библиотек и ресурсов, поэтому будет меньше изобретать колесо. Но кроме этого, ваше утверждение субъективно. Я считаю, что это вопрос личных предпочтений.
Например, я опытный программист на C, иногда программирую на C ++. Я чувствую себя гораздо менее продуктивно в C ++, потому что я не знаю этот язык так хорошо, как я знаю C. Но только потому, что я так думаю, это не обязательно означает, что программирование на C более продуктивно, чем программирование на C ++. Опытный программист C ++ наверняка будет иметь противоположное мнение.
И есть много аспектов "продуктивного". Очень важным аспектом является время обслуживания, и особенно время, необходимое для устранения ошибок, вызванных техническим обслуживанием. С гораздо проще поддерживать, чем ассемблер.
Ассемблер является языком программирования более низкого уровня, чем С, поэтому он подходит для программирования непосредственно на аппаратном уровне.
Аппаратное программирование может быть выполнено непосредственно на любом языке. Единственное, что вы не можете сделать в C - это получить доступ к указателям стека, регистрам условий и т. Д. Самого ядра ЦП. Так что, если под аппаратным программированием вы имеете в виду общение с вашим собственным процессором, тогда да, ассемблер позволяет немного больше, чем C. Если вы имеете в виду доступ к внешнему оборудованию, то ассемблер не дает никаких преимуществ по сравнению с C. Но, возможно, это и недостатки, так как зачастую труднее писать универсальный ассемблерный код для конкретного внешнего устройства, чем универсальный C-код.
Гораздо более гибко намекает на работу с памятью, прерываниями, микрорегистрами и т. Д.
Это не правильно. C также позволяет вам делать все это, хотя вам, возможно, придется полагаться на специфичный для компилятора C-код, такой как ключевое слово interrupt.
В конце вам нужно знать оба языка для программирования MCU, с акцентом на C.