Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л1.doc
Скачиваний:
6
Добавлен:
11.04.2015
Размер:
91.14 Кб
Скачать

1.7 Трансляция и выполнение

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

Запись алгоритма на языке, понятном машине, называется машинной программой, а язык - машинным языком. Для разных типов компьютеров машинные языки разные.

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

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

  • большая выразительная возможность: алфавит алгоритмического языка шире алфавита машинного языка;

  • набор операций не зависит от набора машинных операций и определяется удобством формулирования алгоритмов;

  • одно предложение языка задает достаточно содержательный процесс обработки;

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

  • операнды имеют имена, выбираемые программистом (более удобно, чем адреса);

  • более широкий выбор типов данных и, в целом, широкий набор вычислительных структур.

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

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

Обратите внимание! Транслятор - это алгоритм, для которого входом служит текст на алгоритмическом языке, а выходом - текст на машинном языке.

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

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

Нам не нужно было бы вникать в структуру виртуальной машины, если бы не возможность возникновения ошибок.

Существуют три типа ошибок в программах:

  • Синтаксические ошибки − ошибки, которые можно обнаружить при компиляции.

  • Ошибки, обнаруживаемые при выполнении рабочей программы (при некоторых входных данных программа не работает, например, деление на нуль).

  • Ошибки, которые не обнаруживаются компьютером ни при компиляции, ни при выполнении программы (неправильный алгоритм).