Институт

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

Первым проектом Отдела программирования, получившим широкое признание, стала система АЛЬФА. Разработка системы АЛЬФА началась с создания языка - это было характерно для традиций написания программирующих программ. Язык этот отталкивался от первоначальной версии Алгола 60 - так называемого Алгола 58. Группа, руководимая Ершовым, вела разработку параллельно с международной группой, разрабатывающей Алгол 60. Во многом работы указанных групп оказались совпадающими, и поэтому после опубликования описания Алгола 60 новый, созданный группой Ершова язык был сформулирован как расширение Алгола 60. Этот язык, носивший предварительные названия "Входной", "Сибирский", окончательно утвердился под названием Альфа-язык.

За пультом М-20
За пультом М-20

Основными разработчиками языка и системы АЛЬФА для вычислительной машины М-20 были Г.И. Бабецкий, М.М. Бежанова, Ю.М. Волошин, А.П. Ершов, Б.А. Загацкий, Л.Л. Змиевская, Г.И. Кожухин, С.К. Кожухина, Р.Д. Мишкович, Ю.И. Михалевич, И.В. Поттосин, Л.К. Трохан. Кроме того, на разных этапах в работе принимали участие В.А. Янков, Р.Н. Клюшкова, В.В. Войтишек, Э.К. Иванова, И.А. Виткина. Система АЛЬФА была передана в опытную эксплуатацию в январе 1964 г. Инженер ВЦ В.П. Минаев организовал опытную эксплуатацию АЛЬФА-транслятора, в процессе отладки активную роль играл В.Л. Катков.

Развитием системы АЛЬФА стали АЛГИБР - система программирования с АЛЬФА-языка на М-20 для БЭСМ-6 и АЛЬФА-71 - модифицированный вариант системы АЛЬФА для ЭВМ М-220.

В 1970 г. силами объединенного коллектива сотрудников отдела программирования, других отделов ВЦ СО АН и студентов НГУ началась разработка системы АЛЬФА-6. Она представляла собой многопроходный оптимизирующий транслятор с Входного языка, являющегосярасширением Алгола-60 и содержащего в себе Входной язык системы АЛГИБР и язык АЛГАМС, для ЭВМ БЭСМ-6.

Группа разработчиков Альфа-6
Группа разработчиков Альфа-6

Научное руководство проектом создания АЛЬФА-транслятора осуществляли А.П. Ершов, Г.И. Кожухин и И.В. Поттосин, в команду разработчиков входили И.А. Аникеева, С.Ф. Богданова, А.О. Буда, Т.С. Васючкова, А.А. Грановский, В.А. Грибачевская, А.В. Ерофеев, П.А. Ким, С.К. Кожухина, С.Э. Козловский, А.Е. Хоперсков, В.И. Шелехов, Т.С. Янчук. Система АЛЬФА-6 широко использовалась специалистами СО АН и работала на БЭСМ-6 до тех пор, пока эта ЭВМ не была демонтирована.

В 1968 г. А.П. Ершов предложил идею машинно-ориентированного языка, основанного на расширяемости и настраиваемости на объектный язык. Язык СИГМА был разработан им совместно с А.Ф. Раром, а затем реализован для ряда отечественных ЭВМ Г.Г.Степановым.

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

Язык программирования ЭПСИЛОН был разработан в 1967-68 г. коллективом сотрудников Отдела программирования, в который входили И.В. Поттосин, Б.А. Загацкий, В.Л. Катков, А.Ф. Рар и М.М. Бежанова. Язык был ориентирован на решение задач обработки символьной информации. В 1967 г. И.В. Поттосин, А.Ф. Рар, В.Л. Катков и Б.А. Загацкий написали ЭПСИЛОН-транслятор для ЭВМ типа М-220. В 1968-69 годах Т.К.Панкевич и Г.А.Плотникова включили в транслятор механизм открытых процедур и отладчик. На основе разработанных алгоритмов трансляции А.Е. Хоперсков в 1969-70 годах создал полный транслятор для БЭСМ-6.

В конце 1968 г. в Новосибирске Дж. Маккарти прочел серию лекций, посвященных языку Лисп, что стало отправной точкой для этого проекта. Экспериментальную реализацию интерпретатора полного Lisp 1.5 осуществила Т.С. Янчук. Производственная версия Лисп-системы включала в себя русифицированную лексику, универсальную обработку свойств объектов и механизм перераспределения памяти с выгрузкой стека во внешнюю память. Алгоритмы и реализация была разработаны Л.В. Городней, а Л.В. Суковатицина (Черноброд) выполнила отладку Лисп-арифметики для поддержки исследований в области верификации программ. При очередном визите в Новосибирск Джон Маккарти собственноручно написал тест на функциональную полноту Лиспа. Система выдержала эту проверку.

Лисп-система на БЭСМ-6 эксплуатировалась без особых изменений почти до смены элементной базы.

Разработка системы программирования и компилятора для языка Little на БЭСМ-6 была выполнена Л.В. Городней в 1976 году. Этот машинно-независимый машинно-ориентированный язык системного программирования, похожий на Fortran, но обрабатывающий произвольные коды и приспособленный к крупноблочной организации программ и данных, был предложен Дж. Шварцем как средство реализации эффективной системы программирования для языка Setl.

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

Опыт этой разработки дал материал для формализации реализационной семантики языков программирования в виде интерпретируемых сетей, допускающих сетевое определение правил их функционирования.

В 1971 г. А.П. Ершов возглавил работу по проекту БЕТА. Цели проекта были весьма амбициозные, недаром название проекта расшифровывалось некоторыми коллегами по профессии как Большая Ершовская Трансляторная Авантюра. Предполагалось, что будет создана отрытая транслирующая система с высоким уровнем глобальной оптимизации программ, охватывающая практически весь тогдашний класс императивных языков высокого уровня - от ФОРТРАНа до Алгола 68 и ориентированная на получение программ для большинства существующих архитектур.

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

Для создания подобной системы определяющим было решение трех проблем - разработка общего внутреннего языка как семантического базиса широкого класса входных языков, выработка универсальной схемы языково-независимой оптимизации программ, разработка технологии включения новых входных языков в единую транслирующую систему. Все эти проблемы носили весьма серьезный характер, поэтому проект планировался как комплекс длительных методологических и экспериментальных исследований. Он выполнялся более 10 лет и в нем участвовали представители старшего поколения - И.В. Поттосин, Г.И. Кожухин, Л.Л. Змиевская, А.А. Берс, С.К. Кожухина, Л.А. Корнева, их ученики - Г.Г. Степанов, В.Н. Касьянов, В.К. Сабельфельд, М.Б. Трахтенброт, С.Б. Покровский, В.В. Грушецкий, В.Г. Бекасов, М.И. Шварцман, а потом и ученики учеников - Л.А. Захаров, С.В. Тен, О.Б. Томе, Ш.И. Ходиев и другие.

В целом этот проект был интересным экспериментом в трансляции программ, по своему размаху превосходящим другие опыты многоязыковой трансляции, существовавшие в мире. Были реализованы Симула 67, Паскаль, Ада и Модула-2, причем два последних языка, не участвовавшие в выработке схемы трансляции и внутреннего языка, достаточно хорошо вписались в систему, что свидетельствовало о надежности принятых в проекте решений. Выходными языками были столь разные языки БЭСМ-6 и СМ-4.