Андрей Петрович Ершов (1931-1988)
венно более высокопроизводительная машина БЭСМ-6, организации,
связанные с большими задачами, стимулировали создание версии Альфа-
транслятора для БЭСМ-6. Самым быстрым решением была простая переделка Альфа-
транслятора, при которой та его часть, которая отвечала за генерацию кода,
была заменена генератором кода для БЭСМ-6. Возник транслятор Алгибр (“Альфа
гибридный”), который был одним из первых отечественных кросс-трансляторов.
Такое решение имело ряд недостатков, но зато оно было реализовано быстро, и
транслятор Алгибр стал первым транслятором для новой машины БЭСМ-6. Решение
существенно облегчалось тем, что в Альфе-трансляторе уже существовал
внутренний язык, хотя и не до конца единый для всех оптимизирующих
преобразований.
Основным затруднением при Алгибр-трансляции была передача
оттранслированного кода с М-20 на БЭСМ-6. В ВЦ СО АН СССР был даже
разработан специальный канал передачи информации между инструментальной и
объектной ЭВМ, однако это не могло быть серийным решением при массовой
трансляции. Возникла необходимость "родного" транслятора для БЭСМ-6.
У разработчиков Альфа-транслятора возникала и внутренняя потребность
модифицировать и улучшить как схему трансляции, так и пользовательские
свойства транслятора, в первую очередь, его интерфейс с пользователем.
Альфа-транслятор, несмотря на его достаточно широкую используемость, носил
черты эксперимента и поиска - хотя идейные решения были найдены верно, но
реализационные решения были характерны скорее для экспериментального, чем
производственного транслятора (большое число просмотров программы - 24,
некоторое дублирование анализа контекста, не всегда оправданное усложнение
оптимизирующих преобразований). Не нужно забывать, что этот транслятор был
первым оптимизирующим транслятором с Алгола. Дополнительный опыт -
транслятор Алгибр, незавершенный проект Альфа-транслятора для ЭВМ Урал-14
(проект ТАУ) - давал основу для новых решений.
Новый транслятор - транслятор Альфа-6 - был улучшенной версией
оптимизирующего транслятора с Алгола. Ряд предыдущих решений был приведен к
более чистому и эффективному виду. Более четко был выделен внутренний язык
и этап потокового анализа программ на внутреннем языке. Общая схема
трансляции уже могла рассматриваться как типовая схема оптимизирующей
трансляции (для одноязыкового транслятора), она насчитывала всего 10
просмотров. Лучше была решена проблема взаимного влияния различных
оптимизирующих преобразований. Идентификация и визуализация ошибок
пользователя была более совершенной, что облегчало эксплуатацию. В
результате система Альфа-6 стала достаточно широко используемой системой у
пользователей БЭСМ-6.
Лексикон
В некотором смысле из анализа общих понятий языков программирования и
осознания их определенной ограниченности выросла предложенная Ершовым в
статье «Математическое обеспечение четвертого поколения» («Кибернетика»,
1973, №1) фундаментальная и многообещающая идея лексикона программирования
как общей среды для разработки и обоснования программ. Он определяет
лексикон как "лингвистическую систему с фразовой структурой, содержащую в
себе формальную нотацию для выражения всех общезначимых конструкций,
употребляемых при формулировании условий задач, при синтезе и
преобразовании программ". Лексикон, говорит Ершов, "выражает не только и не
столько программы, сколько их свойства и наши суждения о них. Язык
программирования кодирует объекты предметной области задачи, а наше знание
об этих объектах остается за пределами программного текста. Лексикон же
является средством описания объектов предметных областей и содержит нотацию
для построения баз знания о предметных областях. Программа, выраженная
средствами лексикона, в определенном смысле содержит в своем тексте
описание своей семантики в виде совокупности нетривиальных фактов о
вычисляемой ею функции - в отличие от "чистых" программ, которые не говорят
ничего о своих функциональных свойствах. Лексикон, в отличие от конкретного
языка программирования, является открытой системой. Для него в целом не
ставится задача трансляции любого его текста в машинную программу, хотя
любая машинная программа в случае необходимости может быть выражена в
лексиконе. Аналогично естественному языку лексикон обладает способностью
описания одной своей части средствами другой своей же части. Не надо
думать, что лексикон - это все и навсегда. Это тщательно отобранная, но
развивающаяся система удачных обозначений. Степень его успеха определяется
степенью общезначимости и общепонятности его нотации".
Смешанное вычисление и
трансформационная машина
Смешанное вычисление представляет собой некоторый универсальный
процесс, определяемый над парами (программа, данные) и приводящий в общем
случае к получению остаточной программы и частичных результатов.
Математическим аналогом смешанного вычисления является функционал, который
для определенного класса функций с несколькими аргументами строит (при
задании некоторых аргументов) функции с меньшим числом аргументов. Процесс
смешанного вычисления может быть, в свою очередь, задан в виде программы
(смешанного вычислителя), что позволяет ставить вопрос о самоприменимости
смешанных вычислений, а сам смешанный вычислитель уподобить s-n-m - функции
Клини.
Понятие смешанного вычисления (и смешанного вычислителя) в применении
к процессорам обработки программ, для которых программы и их атрибуты есть
данные, позволяет с общей точки зрения исследовать и определить различные
виды обработки программ: от трансляции и интерпретации до анализа программ,
их преобразования и генерации самих языковых процессоров. В ряде работ по
смешанным вычислениям и трансформационному подходу Ершов методологически
исследует эту концептуальную сторону смешанных вычислений.
Именно определение принципа смешанных вычислений как общей основы
большого числа процессов работы над программами отличает работу Ершова от
ряда предыдущих работ и догадок Ломбарди, Футамуры, Турчина и др. Это и
стало причиной того, что работы Ершова легли в основу нового и активно
развивающегося направления в программировании, связанного с теоретическими
исследованиями и практическими приложениями смешанных вычислений.
Применение смешанных вычислений оказалось весьма полезным методологически
для понимания и трактовки различных понятий и сущностей программирования.
Понятие смешанных вычислений, введенное Ершовым как общая модель для
различных видов обработки программ, с необходимостью потребовало широкого
круга исследований, как по свойствам самой модели, так и по ее трактовке в
различных областях возможного применения. Было введено понятие корректности
смешанных вычислений и определены модели смешанных вычислений и получения
остаточной программы, для которых можно было доказывать корректность. Одной
из таких моделей, на которых фокусировалось внимание, стала
трансформационная модель, для которой смешанное вычисление задавалось
набором базовых трансформаций. Сама модель смешанных вычислений и их
корректность рассматривались как для императивных языков, так и для
рекурсивных программ. Был получен ряд важных результатов по определению
механизма задержки (замораживания) вычислений и данных, по описанию
процесса смешанных вычислений для различных языков представления программ,
по формулированию набора базовых трансформаций, по надежности
(незацикливанию) процесса смешанных вычислений и пр.
Для реальных приложений смешанных вычислений помимо, разумеется,
необходимых свойств корректности и надежности важными оказываются их
гибкость и глубина. И здесь Ершову и его ученикам удалось существенно
продвинуться в исследованиях. Гибкость смешанных вычислений может быть
заметно увеличена, если смешанный вычислитель будет при получении
остаточной программы учитывать не только свойства данных иметь конкретное
значение, но и более тонкие свойства, определяемые известными соотношениями
между данными (предикаты над данными). В этом случае смешанный вычислитель
оперирует с некоторой определенной на данных обстановкой. Глубина смешанных
вычислений определяется схемой смешанных вычислений. Наряду со строгой
схемой смешанных вычислений, введенной вначале, была определена
поливариантная схема, связанная с продвижением смешанных вычислений в
альтернативы, даже если выбор альтернатив не может быть определен при таком
вычислении.
Совместно с Островским Ершов исследовал применение смешанных
вычислений в такой традиционно важной области, как трансляция, а именно
построение трансляторов для заданного описания входного языка. Существенно
отметить, что здесь были получены не только результаты, демонстрирующие
практическую применимость принципа смешанных вычислений (удавалось строить
трансляторы существенно более эффективные, чем это достигается при обычном
автоматическом построении), но и ряд фактов и наблюдений, важных для
сопоставления методов трансляции и понимания сущности трансляции и
показывающих методологическую важность принципа смешанных вычислений.
Таким образом, в области смешанных вычислений Ершову принадлежит не
только определение основополагающих понятий и моделей, но и оп
| | скачать работу |
Андрей Петрович Ершов (1931-1988) |