
Выбор языка программирования
Выше, уже было отмечено, что этап разработки ПО является самым трудоемким. В него также входит выбор языка программирования для кодирования алгоритмов работы ПО МПС. Тут есть несколько вариантов:
Язык ассемблера соответствующего микропроцессора или микроконтроллера. Достоинством языка ассемблера является возможность наиболее полного использования ресурсов и возможностей выбранного процессора. Программы на языке ассемблера получаются наиболее компактными и быстродействующими. Однако, языку ассемблера присущи некоторые недостатки:
отсутствие автоматического распределения памяти – контроль за распределением и использованием памяти полностью ложится на программиста;
отсутствие средств для работы со сложными структурами данных – контроль соблюдения типов в большей части является задачей программиста;
отсутствие переносимости программ: программа, написанная для одного процессора, как правило, не может быть перекомпилирована для другого;
низкая «читабельность» исходного текста: для понимания логики работы программы ее исходный текст необходимо тщательно комментировать.
Язык высокого уровня.
Практически все языки высокого уровня (ЯВУ) лишены недостатков, присущих языку ассемблера:
программы на современных ЯВУ могут быть хорошо структурированы;
легко воспринимаются программистом;
поддаются модернизации.
Многие рутинные операции как распределение памяти, создание и уничтожение локальных переменных, перемещение данных, выполнение арифметических действий, – оказываются скрытыми от программиста, позволяя ему сосредоточиться на кодировании основных частей алгоритма ПО. Но, как правило, это достигается ценой снижения быстродействия и некоторой избыточности кода, генерируемого компилятором, причем результирующая избыточность и быстродействие определяются как качеством компилятора, так и стилем программирования.
Наиболее распространенным в настоящее время ЯВУ для программирования МП и МК является язык «С». Качественные компиляторы этого языка существуют практически для каждого микропроцессора, что позволяет во многих случаях переносить программные модули с одного МП на другой с минимальными доработками. Эффективному использованию этого языка способствует также наличие стандарта, которому должны следовать разработчики компиляторов. За счет этого диалект языка для конкретного МП содержит большую стандартную часть, общую для всех диалектов, и некоторые дополнения и расширения, позволяющие учесть особенности конкретного типа. К недостаткам языка «С» можно отнести недостаточно строгий контроль типов данных.
Другим распространенным ЯВУ является Pascal. Этот язык, обладая практически всеми достоинствами «С», имеет еще и строгий контроль типов с возможностью явного преобразования. Однако применение этого языка сдерживается отсутствием общепринятого стандарта, и отсутствием качественных компиляторов для большого количества МП.
Существует еще несколько ЯВУ, применяемых при программировании МП и МК. К ним относятся С++, Basic, Java и некоторые другие. Однако компиляторы и интерпретаторы этих языков существуют лишь для небольшого количества микропроцессоров, и поэтому широкого применения при программировании встроенных систем они не нашли.
При выборе языка программирования для кодирования алгоритмов работы ПО МПС необходимо учитывать следующие факторы:
Сложность алгоритмов ПО и предполагаемый объем программы.
Требования к быстродействию и объему программы. В том случае, если от программы требуется максимальное быстродействие или к ней предъявляются жесткие требования по объему занимаемой памяти, целесообразно вести разработку на языке Ассемблера. Однако наличие таких требований нередко свидетельствует об ошибке на этапе выбора микропроцессора при проектировании МПС.
Наличие качественных компиляторов для выбранного языка программирования. Качество разрабатываемого ПО зависит не только от используемого языка, но и от качества компилятора с этого языка в машинный код.
Наличие средств модульного программирования. Если рассматриваемый язык программирования не имеет таких средств, с его использованием целесообразно разрабатывать только несложные программы, не предполагающие использования дополнительных модулей или библиотек.
Наличие средств символьной отладки ПО, которые поддерживают выбранный язык программирования.
Предполагаемое время сопровождения ПО и необходимость его модернизации. Программное обеспечение, которые было написанное на ЯВУ, значительно легче поддается модернизации, чем написанное на языке Ассемблера.
Наличие опыта разработки программ с использованием выбранного языка. Даже опытному программисту необходимо время, чтобы научиться разрабатывать качественное ПО на новом для него языке. Поэтому при выборе нового языка программирования нужно сопоставить выгоду от его использования с возможными потерями, возникающими в связи с переходом на этот язык.
Совместимость имеющихся программных модулей и библиотек со средствами компиляции и компоновки выбранного языка.
Можно сделать вывод, что использование языка ассемблера целесообразно при написании программ низкой и средней сложности, критичных к скорости выполнения и объему занимаемой памяти. Если требуется более высокая сложность, то для описания основных структур можно использовать ЯВУ. Остальная часть алгоритмов реализуется в виде модулей, написанных на языке ассемблера, либо в виде ассемблерных вставок.