Cтраница 4
Занимающая хотя бы несколько страниц печатного текста программа со сложной логикой часто становится необозримой для человека, если заранее не предусмотреть строгую дисциплину ее написания. Между тем, одно из назначений алгола состоит в публикации алгоритмов для ознакомления с ними людей. Даже если алгольная программа предназначается только для машинного исполнения, ее неудобочитаемость часто является источником многочисленных скрытых ошибок, выявлять и исправлять которые должен опять-таки человек. [46]
Транслятор ТА-2 предназначен для перевода алгол-программ на язык машин М-20, БЭСМ-3, М-220, БЭСМ-4 и организован по блочному принципу, имеет около 20 тыс. машинных слов, записан в 22 зоны магнитной ленты. Блоки транслятора работают последовательно друг за другом и вызываются с магнитной ленты по одному разу. Программа каждой зоны обрабатывает всю алгольную программу. [47]
Транслятор ТА-1М обладает достаточно высокой скоростью трансляции ( 120 - 200 команд в минуту); получаемые в результате трансляции рабочие программы по эффективности, времени счета и объему лишь в 1 5 - 2 5 раза уступают соответствующим программам в машинных кодах, составленным программистом средней квалификации. Возможна раздельная трансляция отдельных частей программы, а также отладочный режим выпол-н Инйя программы. На широкую печать ( АЦПУ-128) выдается текст исходной алгольной программы, результаты счета, сооб - Щегря об ошибках как на этапе трансляции, так и счета. [48]
Из программы рассмотренного примера ясно, как локализация области действия описаний позволяет экономить память машины в тех случаях, когда в программе имеется несколько блоков одного уровня. При трансляции программы переменные в подблоках могут занимать одни и те же ячейки памяти. Если принять во внимание, что вместо простых переменных в подблоках могут фигурировать массивы, то экономия памяти, достигаемая благодаря блочной структуре алгольной программы, значительна. [49]
Работа транслятора начинается вводом программы на языке АЛГОЛ в машину. При этом работает 1 - й или 2 - й блок, который перекодирует все основные символы языка в 15-разрядный двоичный код. После этого работает блок синтаксического контроля. Все места записи с ошибками выдаются на печать. Следующий блок - выделения понятий - сводит алгольную программу к системе таблиц, относящихся к различным понятиям внутреннего языка транслятора. В процессе работы печатаются все неописанные идентификаторы. Если таких нет, то начинает работать блок программирования выражений, выделенных во входной записи в условном коде. Затем вызываются блоки по обработке операторов или описаний определенного типа ( входа, циклов и др.), по окончании работает блок распределения памяти для простых переменных и массивов. После блока распределения памяти работают блоки процедур - кодов. [50]