Файл: История развития программирования в России (Институт прикладной математики РАН).pdf
Добавлен: 30.03.2023
Просмотров: 71
Скачиваний: 2
Система Super использовалась в качестве средства построения различных трансляторов, как для проблемных входных, так и для Модула–подобных языков. Она показала свои возможности для построения трансляторов, которые обладали достаточной скоростью трансляции и неплохой эффективностью порождаемого кода. Наиболее показательным было применение СПТ Super для Модула-подобных языков. Система применялась также для построения двухпроходного переносимого Модула-транслятора и транслятора для языка программирования баз данных Модула-90 (расширение Модулы-2). Атрибутная техника была использована для создания достаточно изощренных генераторов кода для нескольких ЭВМ.
В последнее время группа занимается созданием языков и систем программирования для транспьютерных архитектур.
Для параллельных вычислений в научных применениях был разработан язык SYNAPS [4], - расширение С. Язык SYNAPS отталкивается от последних исследований по расширениям Фортрана (Fortran D, HPF, Vienna Fortran). В основу модели вычислений положены процессоры с распределенной памятью. Распределение данных осуществляется двумя основными способами - либо значения копируются на все процессоры, либо значения (составные значения - векторы и матрицы) распределяются между процессорами. Вводятся достаточно простые и наглядные параллельные конструкции, связанные с выделением параллельных ветвей и параллелизуемыми циклами. Как распределение данных, так и синхронизация действий, исполняемых на разных процессорах действий привязаны к этим параллельным конструкциям. Все это способствует тому, что структура программы соответствует структуре данных, чего нет в вышеупомянутых вариантах Фортрана. Это и ряд других достоинств языка SYNAPS делает его достаточно удобным и наглядным средством для описания параллельных алгоритмов, исполняемых на MIMD-архитектурах с распределенной памятью. Кроме того, SYNAPS явно ориентирован на научные вычисления (задачи матфизики и пр.), и ряд примеров показывает его естественность для этих задач, прежде всего для параллельной обработки больших массивов и матриц. Предложенные принципы расширения применимы не только для Си, но и для других языков (например Фортрана).
Сейчас на РС и SPARCstation разрабатывается транслятор для языка SYNAPS. Основная техника создана, и первая экспериментальная версия транслятора уже проверяется.
Для отображения Оккам-программ на произвольную транспьютерную сеть разработана система DINAMO, использующая временные характеристики алгоритма для получения наилучшего отображения. Ведутся также работы по созданию библиотек для транспьютерных приложений.
В этом же институте был реализован язык Рефал/2. В силу ориентации на приложения к задачам искусственного интеллекта и представления знаний включена в эту систему программирования и соответствующая библиотека машинных операций. Создано окружение программирования для Рефала, аналогичное турбо-системам. Все это реализовано для MS DOS и VS Windows.
3. Институт проблем кибернетики РАН
В связи с созданием системного программного обеспечения вычислительной системы «Электроника ССБИС» (советская ЭВМ с Crayподобной архитектурой) в Институте проблем кибернетики РАН сложился коллектив под руководством В. П. Иванникова (На основе этого коллектива в 1994 г. был создан Институт системного программирования РАН.) В рамках общих работ группой под руководством С. С. Гайсаряна были реализованы оптимизирующие компиляторы с языков Fortran 77, Pascal, ANSI C и кросс-компилятор с языка PL/1. Для обеспечения достаточно высокого качества генерируемого кода были исследованы вопросы распараллеливания последовательных программ: векторизации итеративных циклов и планирования кода для процессоров с несколькими параллельно работающими скалярными и векторными конвейерными функциональными устройствами.
В связи с тем, что работы по ВС «Электроника ССБИС» приостановлены, группа переключилась на создание разработку и реализацию мобильных систем программирования для различных классов вычислительных систем.
Разработано расширение языка ANSI C для векторных и суперскалярных вычислительных систем (язык C []). Заканчивается реализация первой версии мобильного компилятора с этого языка, настраиваемого на конкретную архитектуру. При разработке компилятора используются современные инструментальные средства, в частности, Karlsruhe Toolbox for Compiler Construction.
В настоящее время группа работает над расширением языка С [] для массивно-параллельных вычислительных систем и создает для этого расширения мобильную настраиваемую систему программирования, ориентированную на разработку масштабируемых (scalable) программ. Первую реализацию этой системы программирования предполагается осуществить для вычислительной системы Parsytec GC в среде ОС PARIX.
Продолжаются работы по методам и алгоритмам распараллеливания последовательных программ (векторизации циклов и планированию и балансировки кода). С использованием инструментальной системы SIGMA, разработанной в Великобритании и полученной из INRIA (Франция).
В рамках создания свободно распространяемого программного обеспечения (Free Software) в сотрудничестве с Free Software Foundation (США) реализован мобильный компилятор (front-end) с языка Модула 2 для системы GNU CC.
На факультете кибернетики Московского инженерно-физического института под руководством О. Н. Перминова существует группа по языкам и системам программирования, состоящая из 8 исследователей с привлечением более чем десятка аспирантов и студентов.
Основная тематика работы группы - реализация Ады и ее окружения, а также исследования в этом и смежных направлениях. Сейчас эта группа осталась по существу одной из двух в России, всерьез занятых реализацией Ады. Группа отслеживает развитие Ады: она связана с международным проектом Ада 9х, Перминов является членом международного комитета по этому проекту.
Исторически группа начинала с создания трансляторов для ЕС ЭВМ. Для этой архитектуры был разработан транслятор с Паскаля (достаточно широко использовавшийся) и Ады (находился в экспериментальной эксплуатации в нескольких организациях). Далее были созданы транслятор и окружение для Ады на IBM PC совместимых компьютерах. Эта система прошла определенную проверкуц на достоверность, однако об ее свойствах говорить трудно, так как она широко не использовалась. Это не упрек создателям, а лишь констатация того факта, что пока Ада не нашла в России широкого или даже всерьез заинтересованного пользователя. Во многом это связано, на мой взгляд, с тем, что внедрение технологии Ада-программирования в реальные большие проекты требует предварительных затрат на обучение этой технологии, в противном случае употребление Ады (по сравнению с Паскалем, Си и Модулой-2) становится неоправданным.
Текущие работы группы связаны с созданием кросс-систем программирования для Ады на Cray-подобные и транспьютерные архитектуры. Инструментальной машиной выступает IBM PC и фрагменты созданного на IBM PC транслятора используются. Группа также ведет исследования по автоматической параллелизации Ада-программ (в смысле параллелизма процессов).
4. Вычислительный центр СО РАН
Один из основных российских коллективов, ведущих исследования по языкам и системам программирования, сложился в Новосибирске, в Вычислительном центре СО РАН. Становление этого коллектива и его известные работы по теории трансляции и оптимизации программ, по оптимизирующим трансляторам, по многоязыковым транслирующим системам связаны с именем академика А. П. Ершова.
С 1990 г. коллектив существует как отдельный институт - Институт систем информатики (ИСИ) СО РАН - и ведет исследования по теории программирования, архитектуре высокопроизводительных ЭВМ, системному программному обеспечению и системам искусственного интеллекта. Общее число научных сотрудников - около 90, из которых примерно половина связана с теми или иными исследованиями по языкам и системам программирования.
В лаборатории теоретического программирования института (руководитель В. А. Непомнящий) ведутся работы по верификации программ и языкам спецификации. Разработан язык спецификации систем реального времени REAL 92 [5], сочетающий средства исполнимых спецификаций (базирующиеся на известном языке спецификаций систем связи SDL) и логические средства, основанные на динамической логике процессов. Начаты исследования по алгоритмам реализации языка REAL 92 и верификации свойств, выраженных на этом языке, в частности, проведены экспериментальные реализации некоторых случаев model-checking.
Работы по верификации программ основаны на идее проблемно-ориентированной спецификации. Ориентация на класс задач позволяет осуществлять процесс верификации автоматически. Такой подход требует создания специализированных доказателей, ориентированных на проблемные области. Они основаны на мощной базе знаний, состоящей из аксиом, которые описывают свойства понятий языка спецификации. Для такой базы знаний реализуется модуль расширений, позволяющий добавлять новые аксиомы в естественной нотации. Предложен новый класс аксиом, который дает возможность автоматизировать разбор случаев, возникающих при проблемно-ориентированной спецификации. Создана система верификации, ориентированная на программы сортировки массивов, линейной алгебры и трансляции.
Верификация трансляторов в этой системе заключается в доказательстве правильности программных модулей трансляторов относительно их спецификаций по методу Хоара. Для этого созданы функциональные средства спецификаций, с помощью которых можно описать этапы работы по переводу программ с одного языка на другой, а также описан метод аннотирования процедур трансляторов, позволяющий выражать требуемые свойства. Создано аксиоматическое представление, которое дает возможность однозначно определять функции и ориентировано на автоматический перевод их в программные конструкции. В подсистеме верификации трансляторов наряду с известными правилами вывода аксиоматической системы Хоара применяются новые правила для процедур и файлов. Осуществлен важный программный эксперимент: предложенные средства использованы для спецификации трансляторов с подмножеств языка Паскаль и Бейсик, проведено аннотирование этих трансляторов и доказана их правильность с помощью системы верификации.
Ряд исследований института связан с трансформационными методами конструирования программ, в том числе и самих трансляторов.
В группе смешанных вычислений под руководством М. А. Бульонкова ведутся исследования по развитию методов преобразования императивных и функциональных программ путем смешанных вычислений. Найден новый метод организации смешанных вычислений, основанный на поливариантной схеме, что открыло путь для построения автоматических самоприменимых процессоров смешанных вычислений. По отношению к трансляции это позволяет выводить и обосновывать специфические понятия, такие как таблица символов, шаблоны кодогенерации и пр., исходя из универсальных механизмов смешанных вычислений. Было показано, что смешанные вычисления в такой трактовке дают возможность выделить из интерпретатора фазы трансляции, обосновывать конcтантные вычисления в трансляторах. Для функциональных программ первого порядка был предложен практический метод реализации поливариантного анализа периода связывания. Инструментом для экспериментов служит автопроектор Similix, разработанный в Копенгагенском университете для языка Scheme и модифицированный в данной группе.
В лаборатории оптимизации и преобразований программ (руководитель В. Н. Касьянов) ведутся теоретические исследования и разработка экспериментальных систем, связанных с созданием процессоров преобразования программ [6]. В значительной мере работы этой группы по преобразованию программ концентрируются вокруг концепции конкретизации программ. Конкретизация программ призвана получать качественные специализированные программы из универсальных за счет того, что входной язык расширяется средствами формализованных комментариев-аннотаций, а исходная универсальная программа (преобразуемая) аннотируется пользователем, который в аннотациях задает используемую в специализирующих преобразованиях известную ему специфическую информацию о свойствах программы и конкретных (суженных) условиях ее применения. Такими условиями могут быть сужение множества допустимых входных и выходных данных, дополнительные сведения о процессе исполнения и пр.
Были исследованы проблемы корректности конкретизирующих преобразований, их классификации, типов аннотирующих утверждений. В связи с проблемами оптимизации и преобразования программ проведен сравнительный анализ форм промежуточных представлений программ, ориентированных на оптимизацию и параллельную обработку, подготовлен каталог реструктурирующих и оптимизирующих преобразований программ для различных архитектур, включая параллельные. Создан ряд экспериментальных систем специализации, основанных на редуцирующих конкретизациях.