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

Ну, на самом деле между ними нет большой разницы, как например между Java и javascript, но все же они отличаются небольшими аспектами.
Немного истории. На начальных этапах язык низкого уровня ассемблер использовался для написания кодов и программ, а затем был встроен в энергонезависимую память микропроцессорных систем. Но из-за отсутствия возможностей переносимости кода (портирования) и высокой стоимости разработки программного обеспечения, программирование на ассемблере постепенно становилось непопулярным, а затем настало время, когда начали процветать языки программирования высокого уровня, лишенные этих недостатков. С развитием технологий встраиваемые системы перешли на язык C, который стал наиболее широко используемым языком программирования для встраиваемых микропроцессоров и микроконтроллеров. По своей сути C является языком среднего уровня, и по этой причине он широко используется в таких устройствах, чем любые другие языки, такие как Pascal, FORTRAN и т. д.. Язык C также предоставляет преимущества языков высокого уровня и не перегружает систему ничем лишним, как и ассемблер.
Но в чем же разница между классическим языком C и Embedded C? Embedded C в некотором роде является расширением языка C. Embedded C был разработан для преодоления ограничений, свойственных классическому языку C, для программирования различных микроконтроллеров. Среди преимуществ Embedded C можно выделить ориентированность на малопотребляющие вычислительные устройства, системы реального времени и устройства с ограниченной памятью, поскольку встраиваемые системы имеют не такой большой объем ОЗУ и ПЗУ по сравнению с классическими компьютерными системами.
Есть разница и в способе получения и запуска программы. Стандартный C напрямую запускает программу из терминала операционной системы, тогда как в случае с Embedded C необходимо сначала создать файл, а затем загрузить в микропроцессор или микроконтроллер. К тому же в зависимости от микропроцессора или микроконтроллера Embedded C может иметь свои нюансы, что ограничивает его портируемость. Классический C свободен от рамок какой-либо конкретной платформы. В Embedded C могут быть добавлены дополнительные функции, например, для операций с регистрами ввода-вывода или областями памяти. В остальном же синтаксис (объявление переменной, условные операторы, массивы, макросы, циклы и т.п.) остался без изменений.
© digitrode.ru