Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700269.doc
Скачиваний:
15
Добавлен:
01.05.2022
Размер:
1.78 Mб
Скачать

1.1.2. Понятие о низкоуровневом программировании

Из вышеприведенного материала становится ясна технология разработки программ на языках низкого уровня – непосредственно в машинных кодах (как правило, в шестнадцатеричных числах) или на более удобном языке программирования – ассемблере, в котором числовой код команды заменен некоторым буквенным сокращением, мнемокодом (например, команду перехода можно обозначить goto или, от англ. jump – прыжок, – JMP), а числа (или операнды) сохраняют свою шестнадцатеричную форму представления. Очевидны и неудобства такого программирования – общая логика программы абсолютно непрозрачна даже для разработчика, поэтому процесс создания достаточно больших программ очень трудоемок. Но существуют и преимущества – программы, написанные таким образом, отличаются минимальным количеством программного кода и максимальным быстродействием.

Как правило, при разработке серьезного программного обеспечения минимум одну или более подпрограммы (они носят название процедур или функций) приходится писать на низкоуровневом языке программирования. Знание ассемблера также очень желательно при отладке ПО. Но, вообще говоря, для разработки программ на языках высокого уровня знание ассемблера не является обязательным. Отметим только, что это очень интересный материал, которому посвящено большое количество научно-технической литературы, например [7]. Но в данном учебном пособии вопросы низкоуровневого программирования не рассматриваются.

Продолжим исследование предпосылок возникновения программирования на языках высокого уровня. Уже использование мнемокодов потребовало дополнительных программных средств – программы, которая как бы "переводила" команды ассемблера непосредственно в машинные коды. Этот процесс получил название компиляции, а подобная программа соответственно была названа компилятором. Для языков высокого уровня компилятор – очень важная часть общего пакета среды программирования. С его помощью создаются так называемые исполняемые файлы программного обеспечения, которые обычно имеют расширение "exe". Существуют также библиотеки кода или библиотеки подпрограмм, обычно имеющие расширение "dll" (или специфичные для Delphi bpl-файлы). Именно в исполняемых файлах и библиотеках хранится код программы, т.е. алгоритмы тех операций, благодаря которым программные средства реализуют какие-либо действия, требующиеся пользователю.

Алгоритмом называют способ решения какой-либо задачи (не обязательно вычислительной), точно предписывающий, как и в какой последовательности получить результат, однозначно определяемый исходными данными.

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