Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоргалка / Общие сведения об ЭВМ.doc
Скачиваний:
129
Добавлен:
28.01.2014
Размер:
1.2 Mб
Скачать

7.Понятие алгоритмического языка.

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

Упрощенно процесс трансляции описывается следующим алгоритмом:

-составить список переменных, используемых в адресной части команд программы на автокоде;

-поставить в соответствие каждой переменной из списка значений адресов ячеек ОП начиная с первой свободной ячейки.;

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

Автокоды современных компьютеров образуют группу языков программ, известных под общим названием Assemblerы. Assemblerы позволяют составить эффективные программы, реализующие стопроцентные возможности микропроцессоров и предусмотренные системы команд и конструкции ЭВМ. Однако, их применение обусловлено специфичностью конкретных задач, связано с управлением программ в реальном времени. Assemblerы используются и тогда, когда применение любого другого языка программирования мало эффективно или невозможно. К недостаткам Assemblerов можно отнести их машинную ориентацию и высокие требования к программисту. С ориентацией процедурно-ориентированными языками или языками высокого уровня. Среди старых и новых языков программирования нет конкуренции. Понятия старый и новый язык определяется сгодом их создания. Современные языки программирования: Pascal, Си, Си++, Delphi, Java, Fort, Prolog. Вобрали в себя все лучшие возможности своих предшественников: Basic, PL/1, Algol.

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

11,Оптимизирующие компиляторы.

Эффективность важна на двух стадиях: компилирование и выполнение. Если компилятор работает быстро, то он составляет программу, которая выполняется медленно. Компиляторы, создающие объектные программы, обычно бывают большими по объему и работают медленно. В связи с этим на одной и той же ЭВМ используются два компилятора для каждого входного языка. Т.к. первый компилятор работает быстро, но создает неэффективную программу, и как правило используется для отладки. Второй компилятор работает медленно, но создает эффективную объектную программу. Он же используется для создания объектных модулей. Большинство из современных компиляторов позволяют пользователю выбирать необходимый ресурс, который нужно оптимизировать. В качестве такого основного ресурса является объем памяти, необходимый для выполнения программы. Об увеличении скорости компилирования можно сказать немного: некоторые программистские ухищрения могут сократить время компиляции, но они либо тривиальны, либо напрямую зависят от компилятора. Некоторые компиляторы оптимизируют выполнение программ 2 типов оптимизации: машинозависимая и машинонезависимая. К первому типу относятся всевозможные способы оптимизации, результат применения которого зависит от конфигурации и используемой машины. Второй тип выполняется на уровне входного языка и здесь у самого программиста больше возможностей для этого.

Шаги оптимизации:

-оптимизировать только в случае необходимости программу;

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

-определите критические области программы, подлежащие оптимизации;

-применяйте локальную оптимизацию в критических областях.