Файл: Международные и отечественные стандарты языков программирования . Сходство и отличия стандартов.pdf
Добавлен: 04.04.2023
Просмотров: 280
Скачиваний: 2
Координацию основных исследований и разработок в области трансляции вела долгое время Рабочая группа по языкам и системам программирования, существовавшая при Комиссии по системному математическому обеспечению Отделения информатики, вычислительной техники и автоматизации АН СССР, созданной и руководимой (до 1989 г.) академиком А. П. Ершовым, а затем членом-корреспондентом АН СССР В. П. Иванниковым. В 1991 году эта группа прекратила работу, в этом же году возникла российская секция SIGPLAN (Special Interest Group on Programming Languages) АСМ, однако общий финансовый кризис науки и образования существенно снизил ее реальное влияние на дела и исследования.
Одним из ведущих российских центров по работам и исследованиям в области языков и трансляции является Институт прикладной математики РАН, где был создан один из первых советских трансляторов. Существенная часть широко использовавшихся советских трансляторов — для Алгола 60, Фортрана — также разработана в этом институте. Ряд научных групп института внесли большой вклад в становление советских исследований в области языков и трансляции.
Работа этого коллектива связана с созданием системного программного обеспечения для специальных ЭВМ и больших проектов, в частности, в области космоса, атомной промышленности и нефтегазоразведки. Коллективом разработаны распределенные операционные системы для специальных применений, бортовая операционная система для космического корабля "Буран" и т. п. Работы по трансляции были подчинены указанным направлениям — создан транслятор для Симулы 67, транслятор для расширения Фортрана применительно к параллельным и векторным вычислениям с векторизатором и пр.
Интересной особенностью значительного числа разработок, является то, что в качестве инструмента создания транслятора используется язык Рефал. Рефал — давний язык, предложенный В. Ф. Турчиным, — предназначен для обработки символьной информации, его концептуальной логической моделью являются нормальные алгорифмы Маркова. Рефал-программа есть совокупность фраз, каждая из которых содержит образец (типовое выражение, используемое для наложения на объектное выражение) и "правила преобразования", тем самым представляет собой своеобразное правило переписывания термов. Семантика языка фиксирует стратегию преобразования.
В институте существует небольшой коллектив, который занимался проблемами, связанными с Рефалом. В группе разработан транслятор для Рефала, показавший свои неплохие качества для реализации трансляторов и других подобных систем. Как принято для ряда декларативных языков, транслятор переводит Рефал-программу в код абстрактной Рефал-машины с соответствующей организацией памяти (в виде двусвязных списков). Реализация Рефал носит полупромышленный характер. В группе ведутся также работы по преобразованию Рефал-программ, в частности, создан смешанный вычислитель для Рефала.
В этом же институте исследовались метасредства построения языковых процессоров, основанных на методах объектно-ориентированного программирования.
Отдел систем программного обеспечения Вычислительного центра РАН тоже один из старейших российских коллективов, занимающихся проблемами трансляции. Здесь разрабатывались одни из первых в СССР трансляторов, в дальнейшем был создан ряд трансляторов для отечественных ЭВМ — от М-20 до БЭСМ-6. Диапазон языков тоже весьма велик — Алгол 60, ПЛ/1, Паскаль и т. д.
Некоторые из созданных трансляторов остались экспериментальными разработками, часть же широко использовалась в СССР.
В этом же институте был реализован язык Рефал/2. В силу ориентации на приложения к задачам искусственного интеллекта и представления знаний включена в эту систему программирования и соответствующая библиотека машинных операций. Создано окружение программирования для Рефала, аналогичное турбо-системам. Все это реализовано для MS DOS и VS Windows.
В связи с созданием системного программного обеспечения вычислительной системы "Электроника ССБИС" в Институте проблем кибернетики РАН сложился коллектив под руководством В. П. Иванникова (На основе этого коллектива в 1994 г. был создан Институт системного программирования РАН.) где были реализованы оптимизирующие компиляторы с языков Fortran 77, Pascal, ANSI C и кросс-компилятор с языка PL/1. Для обеспечения достаточно высокого качества генерируемого кода были исследованы вопросы распараллеливания последовательных программ: векторизации итеративных циклов и планирования кода для процессоров с несколькими параллельно работающими скалярными и векторными конвейерными функциональными устройствами.
В связи с тем, что работы по ВС "Электроника ССБИС" приостановлены, группа переключилась на создание разработку и реализацию мобильных систем программирования для различных классов вычислительных систем.
Разработано расширение языка ANSI C для векторных и суперскалярных вычислительных систем. Проводились работы по реализации мобильного компилятора.
В рамках создания свободно распространяемого программного обеспечения (Free Software) в сотрудничестве с Free Software Foundation (США) реализован мобильный компилятор (front-end) с языка Модула 2 для системы GNU CC.
Один из основных российских коллективов, ведущих исследования по языкам и системам программирования, сложился в Новосибирске, в Вычислительном центре СО РАН. Становление этого коллектива и его известные работы по теории трансляции и оптимизации программ, по оптимизирующим трансляторам, по многоязыковым транслирующим системам связаны с именем академика А. П. Ершова.
С 1990 г. коллектив существует как отдельный институт — Институт систем информатики (ИСИ) СО РАН — и ведет исследования по теории программирования, архитектуре высокопроизводительных ЭВМ, системному программному обеспечению и системам искусственного интеллекта. Общее число научных сотрудников — около 90, из которых примерно половина связана с теми или иными исследованиями по языкам и системам программирования.
В лаборатории теоретического программирования института ведутся работы по верификации программ и языкам спецификации. Разработан язык спецификации систем реального времени REAL 92, сочетающий средства исполнимых спецификаций (базирующиеся на известном языке спецификаций систем связи SDL) и логические средства, основанные на динамической логике процессов.
Работы по верификации программ основаны на идее проблемно-ориентированной спецификации. Ориентация на класс задач позволяет осуществлять процесс верификации автоматически. Такой подход требует создания специализированных доказателей, ориентированных на проблемные области. Они основаны на мощной базе знаний, состоящей из аксиом, которые описывают свойства понятий языка спецификации. Для такой базы знаний реализуется модуль расширений, позволяющий добавлять новые аксиомы в естественной нотации. Предложен новый класс аксиом, который дает возможность автоматизировать разбор случаев, возникающих при проблемно-ориентированной спецификации. Создана система верификации, ориентированная на программы сортировки массивов, линейной алгебры и трансляции.
Верификация трансляторов в этой системе заключается в доказательстве правильности программных модулей трансляторов относительно их спецификаций по методу Хоара. Для этого созданы функциональные средства спецификаций, с помощью которых можно описать этапы работы по переводу программ с одного языка на другой, а также описан метод аннотирования процедур трансляторов, позволяющий выражать требуемые свойства. Создано аксиоматическое представление, которое дает возможность однозначно определять функции и ориентировано на автоматический перевод их в программные конструкции. В подсистеме верификации трансляторов наряду с известными правилами вывода аксиоматической системы Хоара применяются новые правила для процедур и файлов. Ряд исследований института связан с трансформационными методами конструирования программ, в том числе и самих трансляторов.
В группе смешанных вычислений велись исследования по развитию методов преобразования императивных и функциональных программ путем смешанных вычислений. Найден новый метод организации смешанных вычислений, основанный на поливариантной схеме, что открыло путь для построения автоматических самоприменимых процессоров смешанных вычислений. По отношению к трансляции это позволяет выводить и обосновывать специфические понятия, такие как таблица символов, шаблоны кодогенерации и пр., исходя из универсальных механизмов смешанных вычислений. Было показано, что смешанные вычисления в такой трактовке дают возможность выделить из интерпретатора фазы трансляции, обосновывать конcтантные вычисления в трансляторах. Для функциональных программ первого порядка был предложен практический метод реализации поливариантного анализа периода связывания. Инструментом для экспериментов служит автопроектор Similix, разработанный в Копенгагенском университете для языка Scheme и модифицированный в данной группе.
ИСИ СО РАН — ведущий российский центр по работам, связанным с языком, Модула-2 и его преемниками. В этом коллективе был разработан первый советский транслятор для Модулы-2 (в рамках многоязыковой транслирующей системы), созданы семейства процессоров и рабочая станция КРОНОС с архитектурой, ориентированной на поддержку, Модула-программ, система программирования с языка Модула-2 для этих ЭВМ. Для семейства КРОНОС Модула-2 была базовым языком программирования, все системное программное обеспечение писалось на этом языке. Коллектив поддерживает рабочие контакты с группой автора Модулы-2 проф. Н. Вирта из Цюрихского технического университета. Институт является организатором российской группы по стандартизации Модулы-2.
Таким образом, можно сказать, что отечественные центры изучения методов трансляции языков программирования включают ряд учреждений, которые занимались, или занимаются разносторонними проблемами трансляции, при этом, отечественная наука вынуждена учитывать состояние процессов исследования языков программирования западных стран, в связи с более эффективным процессом развития и распространения программных разработок.
2.2 Зарубежные и отечественные стандарты языков программирования
Стандартизация языков программирования создает предпосылки для повышения мобильности программного обеспечения. Высокая мобильность облегчает адаптацию программы для работы в различных окружениях, что позволяет использовать ранее созданные прикладные программы и облегчает перенос программы с одной платформы на другую.
Развитие международных стандартов языков программирования рассмотрим на примере языка Фортран, которому в этом году исполняется 62 года. Он постоянно развивается и совершенствуется в соответствии с развитием вычислительной техники, языков и технологий программирования. Фортран все еще актуален при решении сложных вычислительных задач, особенно при использовании современных суперкомпьютеров.
Язык Фортран подвергался стандартизации в рамках ANSI и ISO четыре раза (Фортран 00, Фортран 77. Фортран 90. Фортран 95, Фортран 2003, Фортран 2008). Современные стандарты Фортрана представляют собой семейство стандартов, состоящее из нескольких частей. Первая часть — основной (базовый) язык. Остальные части являются дополнительными.
При этом не требуется, чтобы компилятор, соответствующий базовому стандарту, обязательно реализовывал дополнительные части. Вторая часть стандарта содержит описание средств для работы с символьными строками переменной длины. Третья часть определяет описание языка условной компиляции.
Международные стандарты языка являются результатом совместной деятельности экспертов многих стран. Стандартизацией языка Фортран занимаются Американский технический комитет J3 ANSI и эксперты рабочей группы ISO/IEC JTC1/SC22/WG5 (WG5). Членами WG5 являются специалисты ряда стран, в т. ч. и нашей страны. В их числе представители компьютерных фирм, крупных университетов.
Многие из тех, кто ответствен за разработку коммерческих Фортран-компиляторов, являются членами J3 и/ ил и WG5.
В нашей стране роль стандартов на языки программирования недооценивается как разработчиками прикладных программ, так и разработчиками системного программного обеспечения, и новое программное обеспечение часто создается без учета международных стандартов. Это затрудняет адаптацию программ к другой вычислительной среде.
На данный момент практически завершена разработка нового стандарта – Фортран 2018 (прежнее рабочее название – Фортран 2015). Начата разработка проекта следующего стандарта, рабочее название которого – Фортран 202x.
Официальные описания стандартов весьма объемные, строго формализованы и сложны для массового пользователя. Некоторые конструкции языка Фортран в настоящее время устарели и стали излишними после введения новых элементов. Новшества Фортрана ориентированы на современную архитектуру и современные технологии программирования, что обеспечивает современный стиль программирования и позволяет создавать мобильные, надежные и хорошо структурированные программы, а потому наглядные и лаконичные.
Ниже перечислены некоторые сильные стороны современного Фортрана:
- Векторные операции (операции над целыми массивами и секциями массивов на поэлементной основе).
- Структуры данных (производные типы).
- Средства параметризации типов данных.
- Управляющие структурные конструкции (if – end if, do – end do, select case – end select).
- Операции и присваивания, определяемые в программе.
- Различные механизмы динамического размещения объектов в памяти.
- Указатели.
- Расширенные средства ввода/вывода
- Расширенный набор средств для процедур (внутренние и внешние процедуры, модульные процедуры, рекурсивные процедуры, ключевые и необязательные аргументы, процедуры без побочного эффекта, поэлементные процедуры, явный интерфейс и др.)
- Средства декомпозиции программ (модули, подмодули).
- Объектно-ориентированное программирование (наследование, классы, инкапсуляция, полиморфизм, перегрузка операций и процедур).
- Средства взаимодействия с Си.
- Большой набор встроенных процедур (в т. ч. поэлементные, справочные, функции редукции, часто используемые математические функции и др.). 14. Средства поддержки параллельных вычислений (coarrays).