Файл: История развития программирования в России (Институт прикладной математики РАН).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 63

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

К исследованиям по конкретизации примыкают работы лаборатории по созданию анализаторов семантических свойств. Такие анализаторы выявляют подозрительные семантические конструкции в тексте программы и сообщают пользователю о свойствах состояний вычислений в интересующих его точках, тем самым гарантируя отсутствие в отлаживаемой программе определенных классов содержательных ошибок, выявление которых традиционными методами весьма трудоемкий процесс. Заканчивается создание анализатора свойств Модула-программ. Перечень свойств, им выявляемых, включает корректность цепочек от задания к использованию переменных, а также программные инварианты, представляющие собой множество равенств термов, истинных в любом состоянии памяти, с которым можно прийти в данную программную точку.

В лаборатории системного программирования (руководитель И. В. Поттосин) работы по трансляции ведутся в рамках более общего проекта, имеющего целью создание методики и инструментальной поддержки разработки надежных и качественных программ для бортовых ЭВМ. Работа над проектом включает как исследования и экспериментальные разработки, так и создание развитого окружения программирования для бортовых ЭВМ методами кросс-трансляции на инструментальных ЭВМ типа IBM PC (система СОКРАТ [7]).

Наличие в окружении большого набора разнообразных инструментов работы с программами - оптимизаторов, анализаторов, преобразователей, интерпретаторов, генераторов кода - стимулировало поиск новых подходов к интеграции транслятора в окружение программирования. Был разработан и реализован операционный интерфейс front-end транслятора с остальными инструментами окружения. Операционный интерфейс характеризуется специфицированной совокупностью модулей, определяющих реакцию на обнаружение front-end'ом синтаксических и семантических конструкций входной программы. Каждый инструмент обладает своей реализацией специфицированных модулей, выполняющих нужный перевод конструкций или интерпретацию ситуации.

Оптимизацию программ в системе СОКРАТ реализует глобальный оптимизатор и оптимизирующий генератор кода. Глобальный оптимизатор осуществляет потоковый анализ программ и некоторую совокупность машинно-независимых оптимизаций (чистка циклов, удаление неиспользуемых фрагментов и вычислений и т.п.). Для оптимизаций, им выполняемых, была доказана корректность. Глобальный анализ программ осуществляется не только в интересах собственно глобальной оптимизации, но и в интересах других инструментов - специализатора, оптимизирующего генератора кода. Глобальный оптимизатор существует как отдельный языковый процессор, слабо зависящий от входного языка. Оптимизирующий генератор кода осуществляет большое число архитектурно-зависимых оптимизаций. Наличие различных архитектур бортовых ЭВМ требует сравнительно легкой настройки генератора кода на архитектуру объектной ЭВМ, и сейчас ведутся исследования по способам такой настройки.


Высокие требования к надежности разработки и эффективности бортовых программ обусловили включение в систему ряда процессоров автоматической обработки программ - специализаторов, анализаторов свойств, о которых говорилось выше. Для нужд всех таких процессоров, включая глобальный оптимизатор, создан адекватный их потребностям внутренний язык, основанный на унифицированном формализованном описании семантики исполнения входных языков.

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

Теперешняя версия системы СОКРАТ разработана для языка Модула-2. однако большинство инструментов системы языково-независимо и ориентировано на класс языков со статическим контролем типов - Модула-2, Оберон, Ада, С++. Определенная проработка погружения других входных языков ведется: на класс таких языков ориентирован внутренний язык и ряд процессоров обработки программ, структурный редактор является языково-настраиваемым и т. п.

ИСИ СО РАН - ведущий российский центр по работам, связанным с языком Модула-2 и его преемниками. В этом коллективе был разработан первый советский транслятор для Модулы-2 (в рамках многоязыковой транслирующей системы), созданы семейства процессоров и рабочая станция КРОНОС с архитектурой, ориентированной на поддержку Модула-программ, система программирования с языка Модула-2 для этих ЭВМ. Для семейства КРОНОС Модула-2 была базовым языком программирования, все системное программное обеспечение писалось на этом языке. Коллектив поддерживает рабочие контакты с группой автора Модулы-2 проф. Н. Вирта из Цюрихского технического университета. Институт является организатором российской группы по стандартизации Модулы-2.

Последняя работа в этом отношении - создание группой А. Е. Недори [8] биязыковой системы Mithrill. Система предназначена для разработки переносимого программного обеспечения на языках Оберон-2 и Модула-2 и позволяет смешивать в одном проекте модули на разных языках, т.е. импортировать Модула-2 - модули из Оберон-модулей и наоборот. Как близость, так и взаимодополняемость входных языков (расширение типов и методов в стиле объектно-ориентированного программирования, сборка мусора в Обероне-2, низко-уровневое программирование, отсутствие динамической поддержки в Модуле-2) делает естественным объединение входных языков как средства разработки программ и позволяет заметно увеличить общий потенциал системы программирования.


Система включает в себя несколько генераторов кода (в том числе генератор кода для Intel 80386/486) и генератор текста на языке ANSI C. Она работает в нескольких OS для IBM PC, а транслятор в ANSI C - в ряде платформ, в том числе MS-DOS, VAX/VMS, Sun SparcStation, HP-9000, Silicon Graphics. Система легко переносима на другие платформы и допускает быстрое подключение других генераторов кода, так что представляет собой достаточно приемлемый программный продукт.

В Российском институте искусственного интеллекта, тесно сотрудничающем с ИСИ СО РАН, существует небольшая (3-4 человека) группа под руководством Д. Я. Левина, которая является одной из немногих в мире, имеющих опыт реализации языка SETL. В группе реализовано несколько трансляторов для языка SETL. Последняя реализация - транслятор и окружение для языка SETL на IBM PC в среде Turbo-Vision. Принципы реализации этой системы и предыдущих ей основаны на абстрактной SETL-машине. Трансляция идет в коды этой машины. В результате многолетних экспериментов выбрана архитектура такой машины, хорошо отражающая теоретико-множественные средства языка. Система имеет полупромышленный характер, используется в нескольких организациях для прототипирования систем искусственного интеллекта.

В отделе программного обеспечения высокопроизводительных ЭВМ (supercomputers) - теперешний руководитель В. Э. Малышкин - в рамках общих работ по созданию многопроцессорных и параллельных архитектур, системного программного обеспечения для них и технологии параллельного программирования вычислительных задач ведутся исследования по языкам программирования для специальных архитектур и систем программирования для них.

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

Для описания и моделирования алгоритмов для ассоциативных SIMD-процессоров разработан STAR - паскалеподобный язык, имеющий такие типы данных, как битовые матрицы, слайсы (slice), слова и операции, осуществляющие ассоциативную параллельную обработку этих данных. Планируется создание соответствующей системы для моделирования STAR-программ.


На математическом факультете Иркутского университета сложилась активная группа под руководством А. В. Манциводы, которая занимается проблемами функционального и логического программирования и состоит из 5-6 человек (аспиранты и сотрудники).

Исследования по указанным проблемам концентрируются вокруг разработанного в этой группе функционально-логического языка Flang [10]. Flang основывается на недетерминированных функциях, в которых обычные для функциональных программ определения функций расширены возможностью употреблять прологовские отношения, а вычисления функций могут быть связаны с бэктрекингом и поиском альтернативных решений. В язык также введены средства (специальные примитивы) для задания ограничений (constraints). Все эти средства языка Flang позволяют исследовать совокупность современных парадигм программирования.

Разработан Flang-транслятор, который содержит ряд интересных решений. Для языка Flang предложена машина (Flang-машина), альтернативная машине Уоррена (WAM), и отличающаяся от нее методом восстановления переменных при бэктрекинге - в ней он основан на нумерации точек возврата (time stamping). Flang-машина, позволяющая осуществить более изощренный механизм учета ограничений, оказалась очень удобной для реализации оптимизационных механизмов в расширенном логическом программировании, в частности, глубокого возврата (intelligent backtracking). Все это в сочетании с разветвленным глобальным потоковым анализом позволяет существенно оптимизировать исполнение Flang-программ. В экспериментах Flang-транслятор показал возможность строить весьма эффективные программы (сравнимые при адекватности алгоритмов с программами, полученными Турбо-Паскалем).

Сейчас разрабатывается новая версия Флэнг-машины, эффективно поддерживающая механизм демонов, крайне важный при решении логическими средствами комбинаторных задач высокой сложности.

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

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


Ряд работ, сопрояженных с трансляцией, ведется в отделе экспертных систем Института автоматики и процессов управления ДВО РАН (руководитель - А. С. Клещев). Все эти работы, как правило, связаны с языками и системами искусственного интеллекта. Разработано несколько продукционных языков представления знаний, для которых созданы системы программирования. Последним является язык РЕПРО [11], основанный на декларативных системах продукций. В процессе работ исследовались проблемы: анализа информационных связей в системе продукций; оптимизации логического вывода по числу операций вывода; преобразования продукционных программ, в том числе путем смешанных вычислений; генерации паскалевских программ по декларативному описанию базы знаний на языке РЕПРО.

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

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

5. Институт точной механики и вычислительной техники РАН

В Институте точной механики и вычислительной техники РАН (руководитель коллектива - Б. А. Бабаян) и его Новосибирском филиале (директор - Г. Д. Чинин) создавались системы программирования для известного советского проекта суперкомпьютеров Эльбрус. Для Эльбрус-1 и Эльбрус-2 был выполнен ряд интересных работ: созданы эффективный транслятор для специально ориентированного на архитектуру Эльбрус языка высокого уровня Эль-76, трансляторы с языков Пролог и Ада, оптимизирующий транслятор с Фортрана (допускавший целый ряд диалектов Фортрана) и т.п.

Следующим шагом всего проекта должно было стать создание Эльбруса-3 с VLIW-архитектурой и модульно-конвейерного процессора (МКП) с векторной архитектурой. Для этих процессоров были разработаны трансляторы с Эль-76 и Фортрана.

Первый из них, созданный в группе Бабаяна, при генерации кода на Эльбрус-3 достигал высокого качества объектного кода за счет хорошего использования конвейера и изощренной упаковке VLIW-кода. Был разработан ряд оригинальных алгоритмов генерации высококачественного кода.

Второй создавался в Новосибирском филиале ИТМиВТ (под руководством И. С. Голосова) одновременно и для Эльбруса 3 и для МКП. Входной язык транслятора включал помимо традиционных диалектов Фортрана некоторые конструкции Fortran 90. Особое внимание уделялось оптимизации программ, векторизации, компактификации кода. Большая часть транслятора одинакова для обеих архитектур и лишь при окончательной генерации варианты его различны.