Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика. экзамен.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.04 Mб
Скачать

Язык ассемблер

Чтобы уйти от сухих и невыразительных машинных инструкций машинного языка, но при этом иметь возможность работать на самом низком уровне разработали машинно-ориентированные языки программирования. Представителем машинно-ориентированного языка является язык ассемблер.

Язык ассемблер – это символьная форма записи машинного языка. Его использование существенно упрощает написание машинных программ, так как каждая из команд ассемблера выражается мнемокодом и набором операндов.

Мнемокод – это служебное слово, записанное в символьной форме и указывающее, какую необходимо выполнить операцию над операндами. В ассемблере не используются цифровые коды операций, операции указываются только своими символьными названиями, которые, конечно, легче запомнить (слово "мнемонический" означает "легко запоминающийся").

Операнды – это данные, над которыми выполняются операции, заданные мнемокодом. В качестве операндов в языке ассемблер могут использоваться числа и имена переменных.

Символьная форма записи машинных команд позволяет ассемблеру избавиться от ряда недостатков, свойственных языку машинных команд. Язык становится более выразительным и понятным. Кроме того, в ассемблере сохраняются все достоинства машинного языка:

  • доступ ко всем ресурсам компьютера;

  • короткий и эффективный программный код;

  • программы, как правило, "быстрыми".

Вместе с тем, большинство из недостатков, связанных с аппаратно зависимым набором доступных команд, громоздкостью алгоритмов и программ, сложностью отладки больших приложений являются необъемлемой отличительной особенностью всех языков низкого уровня.

Языки программирования высокого уровня

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

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

Примеры языков высокого уровня: Basic, Pascal, Fortran, C и др.

Классификация языков программирования

Для написания программы существуют различные языки программирования, которые подразделяются на языки низкого и высокого уровня.

Язык программирования - формализованный язык для описания алгоритма решения задачи на компьютере.

Определение. 5. Язык программирования низкого уровня близок к машинному коду и ориентирован на конкретный тип процессора.

Примером языка низкого уровня является язык АССЕМБЛЕР, созданный по принципу: «одна инструкция – одна строка».

Определение. 6 . Язык программирования высокого уровня ближе и понятен человеку и особенности архитектуры конкретных вычислительных систем в нем не учитываются.

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

Языки программирования, если в качестве признака классификации взять синтаксис образования его конструкций, можно условно разделить на классы:

  • машинные языки- языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);

  • машинно-ориентированные языки- языки программирования, которые отражают структуру конкретного типа компьютера (ассемблеры);

  • алгоритмические языки - не зависящие от архитектуры компьютера языки программирования для отражения структуры алгоритма (Паскаль, Бейсик, Фортран и др.);

  • процедурно-ориентированные языки- языки программирования, где имеется возможность описания программы как совокупности процедур (подпрограмм);

  • проблемно-ориентированные языки- языки программирования, предназначенные для решения задач определенного класса (Лисп, РПГ, Симула и др.);

  • интегрированные системы программирования.

23) Компоненты, образующие алгоритмический язык. Отладка и тестирование программ, машинные коды. Трансляторы, компиляторы и интерпретаторы, их значение.

Отличительные особенности алгоритмических языков

Основные отличия алгоритмических языков от машинных языков состоят в следующем:

— алгоритмический язык обладает гораздо большими выразительными возможностями, т.е. его алфавит (набор используемых букв, цифр и знаков) значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;

— набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;

— формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных;

— требуемые операции задаются в удобном для человека виде, например с помощью общепринятых математических обозначений;

— для задания операндов данным, используемым в алгоритме, присваиваются индивидуальные имена, выбираемые программистом, и ссылка на операнды производится главным образом путем их имен;

— в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных.

Таким образом, алгоритмический язык в значительной мере является машинно-независимым.

Компиляторы и интерпретаторы

Из сказанного ясно, что алгоритм, записанный на алгоритмическом языке, не может быть непосредственно выполнен с помощью ЭВМ — для этого он должен быть предварительно переведен (оттранслирован) на язык той машины, на которой этот алгоритм будет исполняться. Выполнение такого перевода самим человеком потребовало бы от него больших затрат труда и времени, а к тому же — фактического умения программировать на языке машины, что свело бы на нет эффект использования алгоритмических языков.

Если же алгоритмический язык выбрать так, чтобы перевод любого алгоритма с этого языка на язык машины можно было осуществить по формальным правилам (а именно с учетом этого обстоятельства и создаются алгоритмические языки), то непосредственное выполнение такого перевода можно поручить самой машине. Для этого достаточно однажды составить специальную машинную программу, называемую транслятором, которая представляет собой не что иное, как записанный на языке машины алгоритм перевода текста с некоторого алгоритмического языка на язык какой-либо конкретной ЭВМ. Таким образом, исходными данными для транслятора является запись какого-либо алгоритма на исходном алгоритмическом языке, а результатом работы транслятора — тот же алгоритм, но записанный уже на машинном языке, пригодный для его непосредственного выполнения на соответствующей ЭВМ.

Трансляция программы может выполняться двумя способами:

  • методом компиляции,

  • методом интерпретации.

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

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

Реальные трансляторы сочетают в себе технологии трансляции и интерпретации.

Три составляющие алгоритмического языка

При написании программ на языке программирования высокого уровня используются определенные правила, основанные на понятиях языка.

Эти понятия принято выражать тремя составляющими:

  • алфавитом;

  • синтаксисом;

  • семантикой.

Алфавит — это фиксированный для данного языка набор основных символов, т.е. "букв алфавита", из которых должен состоять любой текст на этом языке - никакие другие символы в тексте не допускаются.

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

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

Запись текста на любом алгоритмическом языке представляет собой строго линейную последовательность символов (литер), т.е. не допускается использование верхних и нижних индексов (записей типа х2 или ai, k), дробей вида а/b и т.п. Это требование связано, главным образом, с необходимостью ввода текста в память машины (в случае машинной его обработки, например с целью его редактирования или трансляции на какой-либо другой язык), а на современных ЭВМ любые вводимые данные должны быть представлены в виде линейной последовательности литер.

Каждый из алгоритмических языков имеет свои особенности в составе алфавита, синтаксиса и семантики.

Для представления алгоритма в виде, понятном компьютеру служат языки программирования.

В начале всегда разрабатывается способ решения задачи и по нему определяется алгоритм действия, а затем этот алгоритм записывается на одном из языков, понятном компьютеру. В итоге получается законченное и детальное описание алгоритма на языке программирования. Затем текст этой программы специальными служебными программами, которые называются ТРАНСЛЯТОРАМИ, переводится в машинный код и исполняется.

Определение 3. Язык программирования – это искусственный язык с ограниченным числом слов, значения которых строго и однозначно фиксированы транслятором и подчинены строгим правилам записи команд.

Совокупность таких требований по языку программирования составляет синтаксис языка, а смысл каждой команды представляет семантику языка. Любое нарушение формы записи программы приводит к тому, что транслятор не понимает назначение команды и выдает сообщение об ошибке.

Определение. 4. Процесс поиска ошибок в программе называется тестированием, а процесс устранения ошибок называется отладкой программы.

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

Если программа не переводится в машинный код, сразу происходит исполнение ее команд, то для осуществления такой операции служат программы – интерпретаторы.

В реальных машинах технологии компиляции и интерпретации перемешаны или обобщены одной программой – транслятором