Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Международные и отечественные стандарты языков программирования . Сходство и отличия стандартов

Содержание:

Введение

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

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

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

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

Цель работы: изучить отечественные и зарубежные стандарты языков программирования.

Для достижения цели необходимо решить следующие задачи:

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

1. Языки программирования, как объекты стандартизации

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

1. Языки программирования первого поколения (1954–1958):

  • FORTRAN I - Математические формулы;
  • ALGOL-58 - Математические формулы;
  • Flowmatic - Математические формулы;
  • IPL V - Математические формулы.

2. Языки программирования второго поколения (1959–1961):

  • FORTRAN II - Подпрограммы, раздельная компиляция;
  • ALGOL-60 - Блочная структура, типы данных;
  • COBOL - Описание данных, работа с файлами;
  • Lisp - Обработка списков, указатели, сборка мусора.

3. Языки программирования первого поколения (1962–1970):

  • PL/I - FORTRAN+ALGOL+COBOL;
  • ALGOL-68 - Ближайший наследник ALGOL-60;
  • Pascal - Простой наследник ALGOL-60;
  • Simula - Классы, абстракция данных.

4. Разрыв преемственности (1970–1980). В этот период было изобретено много языков, но лишь немногие из них выдержали испытание временем. Среди них заслуживают упоминания следующие языки:

  • C - Характеризуется малым размером исполняемых модулей;
  • FORTRAN 77 - Прошел стандартизацию ANSI.

Следующим этапом развития языков программирования стало развитие объектно-ориентированного программирования (1980–1990, проверку временем прошли лишь несколько языков):

  • Smalltalk 90 Чисто объектно-ориентированный язык;
  • C++ происходит от языков C и Simula;
  • Ada83 Строгий контроль типов; сильное влияние языка;
  • Pascal Eiffel происходит от языков Ada и Simula.

На развитие языков программирования огромное влияние было осуществлено появление интегрированных сред, которые определяли уровень распространения языков программирования, для которых были предназначены (1990 и до настоящего времени):

  • Visual Basic - Облегченное проектирование графического пользовательского интерфейса (graphical user interface — GUI) для приложений в операционной среде Windows;
  • Java - Наследник языка Oak разрабатывался для мобильных устройств;
  • Python - Объектно-ориентированный язык сценариев;
  • J2EE Интегрированная среда на базе языка Java для промышленного применения;
  • .NET Интегрированная объектно-ориентированная среда, разработанная компанией Microsoft;
  • Visual C# - Конкурент языка Java для среды Microsoft .NET;
  • Visual Basic .NET Вариант языка Visual Basic для среды Microsoft .NET.

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

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

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

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

Наибольший интерес представляет класс языков, называемых объектными (object-based) и объектно-ориентированными (object-oriented). Эти языки лучше всего поддерживают объектно-ориентированную декомпозицию программного обеспечения. Большинство объектно-новых языков этой категории (и объектно-ориентированных вариантов старых языков программирования) появились в 1980-х и начале 1990-х годов. После 1990-го года появилось немного объектно-ориентированных языков программирования, поддерживаемых поставщиками коммерческого программного обеспечения (например, языки Java и C++). Появление интегрированных сред (например, J2EE и .NET), предоставляющих в распоряжение программистов огромное количество компонентов и сервисов, которые упростили решение типичных и рутинных задач, резко увеличило производительность их труда и продемонстрировало преимущества повторного использования кода.

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

2. Отечественные и зарубежные стандарты языков программирования

2.1 Отечественные исследования в направлении развития языков программирования

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

Наиболее интересные исследования и разработки ведутся по следующим направлениям:

  1. Теоретическое и методические исследования процессов трансляции и преобразования программ и методов построения трансляторов и других языковых процессоров. Наиболее "продвинутые" работы здесь ведутся в области применения трансформационного подхода, методов верификации трансляторов, систем построения трансляторов, методов реализации функционально-логических языков.
  2. Разработка новых языков и систем программирования для них. Эти работы связаны с созданием расширений существующих языков для параллельных вычислений, или с разработкой декларативных языков — проблемно-ориентированных, языков спецификаций, функционально-логических. Существенно, что создание языков ведется "под себя", т. е. группа, создающая язык, сама реализует или предполагает реализовать его.
  3. Интеграция трансляции в развитые окружения программирования. Работы этого направления прежде всего связаны с созданием технологических инструментов разработки программ для встроенных или параллельных ЭВМ.

Координацию основных исследований и разработок в области трансляции вела долгое время Рабочая группа по языкам и системам программирования, существовавшая при Комиссии по системному математическому обеспечению Отделения информатики, вычислительной техники и автоматизации АН СССР, созданной и руководимой (до 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.

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

Ниже перечислены некоторые сильные стороны современного Фортрана:

  1. Векторные операции (операции над целыми массивами и секциями массивов на поэлементной основе).
  2. Структуры данных (производные типы).
  3. Средства параметризации типов данных.
  4. Управляющие структурные конструкции (if – end if, do – end do, select case – end select).
  5. Операции и присваивания, определяемые в программе.
  6. Различные механизмы динамического размещения объектов в памяти.
  7. Указатели.
  8. Расширенные средства ввода/вывода
  9. Расширенный набор средств для процедур (внутренние и внешние процедуры, модульные процедуры, рекурсивные процедуры, ключевые и необязательные аргументы, процедуры без побочного эффекта, поэлементные процедуры, явный интерфейс и др.)
  10. Средства декомпозиции программ (модули, подмодули).
  11. Объектно-ориентированное программирование (наследование, классы, инкапсуляция, полиморфизм, перегрузка операций и процедур).
  12. Средства взаимодействия с Си.
  13. Большой набор встроенных процедур (в т. ч. поэлементные, справочные, функции редукции, часто используемые математические функции и др.). 14. Средства поддержки параллельных вычислений (coarrays).

Средства 1–7 введены в Фортране 90, элементы 8, 9 введены в Фортране 90/95. Средства 10 – модули введены в Фортране 90, подмодули – в Фортране 2008, черты 11 частично появились в Фортране 90 и в полном объеме – в Фортране 2003. Средства 12 первоначально введены в Фортране 2003.

Средства 13 первоначально введены в Фортране 90 и получили существенное развитие во всех последующих стандартах. Средства поддержки параллельных вычислений Coarray введены в Фортране 2008.

Каждый последующий стандарт расширяет возможности своих предшественников. В то же время некоторые конструкции языка Фортран в настоящее время устарели и стали излишними после введения новых элементов.

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

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

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

Учитывая эти противоречивые факторы, разработчики стандарта приняли следующее решение: элементы языка, которые являются кандидатами на удаление, заранее объявляются устаревшими, нерекомендуемыми для использования; в каждом стандарте языка Фортран приводятся два списка устаревших черт с различным статусом.

Первый список содержит удаляемые (deleted) из данного стандарта черты – те элементы языка, которые в предыдущем стандарте были объявлены как отживающие и нерекомендуемые и теперь удаляются.

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

Программист должен избегать использования этих элементов при написании новых программ и при модификации “старых”. Стандартные модули, предназначенные для различных приложений, как средство расширения языка, не должны содержать устаревших черт.

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

Ниже приводятся списки устаревших и удаленных из стандартов (Фортран 90 – Фортран 2008) элементов языка и рекомендации по их замене современными средствами. Также рассматриваются те черты языка Фортран, которые включены в списки устаревших и удаленных черт в проекте стандарта языка Фортран 2018. После этого анализируются те черты стандарта, которые устарели, но пока еще не включены в списки устаревших черт.

Устаревшие черты для стандарта – это те средства, которые хотя и признаны устаревшими, были сохранены в языке для преемственности с предыдущими стандартами.

Список устаревших элементов:

  1. Операторные функции (statement functions).
  2. Оператор go to со списком меток (computed go to statement).
  3. Альтернативный возврат из подпрограммы.
  4. Операторы data среди выполняемых операторов.
  5. Функции символьного типа, перенимающие длину.
  6. Фиксированный формат исходной программы.
  7. Операторы entry.
  8. Форма оператора character со звездочкой.
  9. Общий оператор окончания вложенных циклов и использование в качестве последнего оператора цикла какого-либо оператора отличного от continue и end do.

Каждое из перечисленных средств может быть эффективно заменено более современными средствами. Рассмотрим их более детально.

  1. Операторные функции (statement functions). Операторная функция является источником потенциальных ошибок, так как синтаксис объявления такой функции похож (и потому легко может быть перепутан) на синтаксис оператора присваивания. Вместо операторных функций лучше использовать внутренние процедуры; такие процедуры имеют более общую форму, чем операторные функции, и полностью покрывают их возможности.
  2. Оператор перехода со списком меток (computed go to statement). Этот оператор обеспечивает выбор одной из ветвей программы в зависимости от значения некоторого выражения. Та же возможность более эффективно обеспечивается с помощью конструкции выбора select case – end select, которая больше соответствует современному стилю программирования.
  3. Альтернативный возврат из подпрограммы. Для вызова процедуры, содержащей альтернативный возврат, в список аргументов помещаются метки, что позволяет вызванной процедуре после возврата управлять выполнением вызывающей процедуры. Эта возможность противоречит концепции структурного программирования. Того же эффекта можно достичь, используя код возврата в конструкции выбора после возврата в вызывающую процедуру. Конструкция выбора больше соответствует современному стилю программирования.
  4. Операторы data среди выполняемых операторов. Эта возможность редко используется. Инициализацию данных разумнее помещать среди операторов спецификации. При необходимости можно использовать конструкцию block – end block, которая позволяет помещать операторы объявления среди выполняемых операторов.
  5. Символьные функции, перенимающие длину (assumed character length functions). Такую функцию лучше заменить подпрограммой (subroutine), аргументы которой соответствуют результату функции и ее аргументам.
  6. Фиксированный формат исходной программы. Разработчики первых вариантов Фортрана руководствовались тем, что ввод программы осуществлялся только с перфокарт, и поэтому нетрудно было выполнить требование, чтобы символы исходной программы располагались на определенных позициях строки перфокарты. Так был принят фиксированный формат записи программы, который впоследствии оказался неудобным при использовании терминалов. Действительно, при вводе программы с клавиатуры неудобно начинать операторы с седьмой колонки, а шестую использовать для признака продолжения. Введенный в язык свободный формат более технологичен, не требуется размещать программу в определенных позициях.
  7. Форма оператора character со звездочкой. В языке имеются две альтернативные формы для спецификации длины символьных данных: старая форма (со звездочкой) и новая форма (без звездочки), которая более естественна.
  8. Операторы entry. Оператор entry позволяет задавать дополнительные входы в процедуру с альтернативным списком аргументов. Это усложняет язык и противоречит концепции структурного программирования. Необходимость в этом операторе отпадает с появлением программных единиц-модулей, в которых аналогичные возможности обеспечиваются с помощью модульных процедур.
  9. Общий оператор окончания вложенных циклов и использование в качестве последнего оператора цикла какого-либо оператора отличного от continue и end do. Следует использовать оператор end do или continue для каждого оператора do, что больше соответствует принципам структурного программирования.

Удаленные черты. Перечисленные ниже средства удалены из стандарта и могут быть эффективно заменены более современными средствами языка.

  1. Параметры цикла вещественного типа и типа двойной точности.
  2. Передача управления конечному оператору ( end if ) извне конструкции if – end if.
  3. Оператор паузы (pause).
  4. Оператор присваивания метки (assign) и оператор go to по предписанию.
  5. Присваивание значения метки оператора format в операторе assign.
  6. Дескриптор редактирования h в операторе format.
  7. Управление кареткой.

Ниже даются рекомендации по замене перечисленных средств.

  1. Параметры цикла вещественного типа и типа двойной точности. В заголовке цикла допускались (наряду с целым типом) параметры вещественного типа и типа двойной точности. Рекомендуется их заменить на параметры целого типа, или лучше заменить на конструкцию цикла do – end do, в которой отсутствуют параметры цикла.
  2. Передача управления конечному оператору (end if) извне конструкции if – end if. Такая передача управления не имеет смысла. Вместо этого следует передавать управление оператору, непосредственно следующему за end if.
  3. Оператор pause. Выполнение оператора pause требовало операторского или системного вмешательства для возобновления исполнения. В большинстве случаев этой же возможности (но более эффективно и более мобильным способом) можно достичь путем использования подходящего оператора read, ожидающего ввода некоторых данных.
  4. Оператор присваивания метки assign и оператор go to по предписанию. Оператор assign позволял динамически присваивать метку переменной целого типа, а оператор go to по предписанию обеспечивал "непрямое ветвление" с использованием этой переменной. Это ухудшает наглядность программы, особенно если переменная используется также в числовых операциях. Два различных способа использования переменной могут стать источником ошибки. Эти операторы обычно использовались для моделирования внутренних процедур, которые теперь введены в Фортран.
  5. Присваивание значения метки оператора format в операторе assign. Оператор assign позволял также динамически присваивать метку оператора format переменной целого типа, которую затем можно использовать как спецификатор формата в операторах read, write или print. Это ухудшает наглядность, допускает несогласованное использование целой переменной и может быть источником ошибки. В этом случае альтернативой оператору assign может служить символьное выражение для спецификации формата.
  6. Дескриптор редактирования h в операторе format. При использовании этого дескриптора редактирования необходимо было подсчитывать количество символов, это неудобно, и кроме того, использование такого дескриптора может быть источником ошибки. Та же возможность достижима при использовании дескриптора редактирования “символьная строка”, при этом не требуется подсчитывать количество символов.
  7. Управление кареткой. Операторы вывода в Фортране первоначально были ориентированы на печатающие устройства, понятиями для которых являются строки и страницы печати; первый символ каждой записи не печатается, он рассматривался как символ управления кареткой. Сейчас это удалено.

Новые удаленные и устаревшие черты. В проекте стандарта языка Фортран 2018 предусмотрены новые списки устаревших и удаленных элементов.

Новые удаленные черты: Арифметический оператор if; Неблочные конструкции цикла. Рекомендации по замене.

  1. Арифметический оператор if. Оператор арифметический if содержит три метки и делает код не наглядным, препятствует оптимизации и снижает мобильность. Этот оператор ранее был объявлен как устаревший, теперь удаляется из стандарта. Целесообразно заменить его на оператор if логический или на конструкцию if – end if. Оба варианта, в отличие от арифметического if, обеспечивают структурный стиль программирования.
  2. Неблочные конструкции цикла. Общий оператор окончания вложенных циклов и использование в качестве последнего оператора цикла какого-либо оператора отличного от continue и end do. Ранее эта черта была признана устаревшей, теперь удаляется из стандарта. Следует использовать оператор end do или continue для каждого оператора do, что больше соответствует принципам структурного программирования. Заметим, что оператор do с меткой (с указанным ограничением) пока сохраняется в языке, но признан устаревшим.

Новые устаревшие черты: оператор common; оператор equivalence; программная единица блок данных (block data); оператор do c меткой; оператор и конструкция forall; специфические имена встроенных функций.

Рекомендации по замене новыми средствами языка.

  1. Оператор common. Введенный в Фортран новый вид программных единиц-модулей обеспечивает гораздо более мощные средства, чем общие блоки, определяемые с помощью операторов common. Основное преимущество модулей заключается в том, что они предоставляют пользователю возможность работать не только с общими данными, но также с другими общими объектами – типами данных, заготовленными описаниями процедур и определяемых операций. Способ работы с глобальными данными, обеспечиваемый модулями, более гибкий, чем с помощью операторов common: глобальные данные, описанные в модуле, доступны по имени, а не по положению внутри общего блока. Кроме того, в отличие от описания общих блоков в операторах common, глобальные переменные в современном Фортране надо описывать только в одном месте.
  2. Оператор equivalence. Оператор equivalence обеспечивает совместное использование памяти несколькими объектами данных; такая возможность используется обычно либо для экономии памяти (что было важно, когда размер памяти был недостаточным), либо для моделирования структуры данных с компонентами разных типов. Однако, во-первых, этот искусственный прием не удобен, и, вовторых, оператор equivalence имеет ряд ограничений. Кроме того, хранение в одном и том же месте памяти данных разного типа делает программу менее надежной и усложняет ее модификацию. Использование эквивалентности по памяти вообще противоречит принципам структурного и надежного программирования. В разных ситуациях, где используется эквивалентность, можно вместо нее использовать производные типы, указатели, динамически размещаемые массивы или функцию transfer.
  3. Программная единица блок данных (block data). Программные единицы block data существуют только для того, чтобы инициализировать данные в common блоках. Использование программных единиц-модулей и средств инициализации в операторах объявления типа устраняет необходимость в использовании программных единиц блоков данных.
  4. Оператор do с меткой. Метка в операторе цикла избыточна после введения в язык имени конструкции и с использованием оператора cycle, который нагляднее.
  5. Оператор и конструкция forall. Этот оператор избыточен и имеет много ограничений. Лучше использовать оператор параллельный цикл (do concurrent).
  6. Специфические имена встроенных функций. Специфические имена встроенных функций теперь избыточны и признаны устаревшими, они редко используются и препятствуют мобильности. Все встроенные функции имеют универсальные имена. Рекомендуется использовать универсальные имена.

Предложения по замене этих черт современными элементами, уже введеннымив Фортран.

  1. Вещественный тип двойной точности (double precision). В предыдущих стандартах предусматривались две разновидности вещественного типа (real и double precision), которые позволяли задавать только относительную длину представления данных. Это приводило к некоторым проблемам при переносе программы из одной компьютерной системы в другую, так как при переносе подчас требовалось модифицировать программу так, чтобы использовать данные двойной точности вместо обычных вещественных. В современных стандартах Фортрана имеются средства для спецификации точности и диапазона (параметры типа), которые больше соответствуют требованиям мобильности, позволяют компилятору самому определить способ отображения на конкретную архитектуру. Вещественный тип двойной точности целесообразно заменить вещественным типом с соответствующим параметром разновидности типа.
  2. Связь скаляра и массива при передаче аргументов процедур. Стандарт разрешает, чтобы формальному аргументу-массиву соответствовал фактический аргумент – элемент массива. При этом подразумевается, что с формальным аргументом связывается данный фактический элемент массива и все элементы, следующие за ним в программе в обычном для массива порядке. Такая связь аргументов приводит к плохо структурированной программе, ухудшает ясность и снижает эффективность. В языке имеются более эффективные средства, обеспечивающие передачу части массива – секции массива.
  3. Массивы, перенимающие размер. Напомним, что массивы, перенимающие размер, – это формальные. Аргументы, в описании которых верхняя граница последнего измерения задается звездочкой; такие массивы наследуют размеры соответствующих фактических аргументов. В качестве обобщения понятий массивов, перенимающих размер, в Фортран введены массивы, перенимающие конфигурацию, т. е. массивы (формальные аргументы), которые наследуют не только размер, но и конфигурацию соответствующих фактических аргументов. В описании таких массивов опущены верхние границы. Использование массивов, перенимающих конфигурацию, обеспечивает больше возможностей по сравнению с использованием массивов, перенимающих размер.
  4. Строка include. Строка include обеспечивает возможность подключать к исходному тексту какой-нибудь другой программный текст. Тот же эффект с большим разнообразием предоставляемых возможностей обеспечивается с помощью оператора use; при этом вставляемый текст помещается в программной единице-модуле.
  5. Старые обозначения операций отношения. Старые обозначения операций отношения: eq., .ne., .lt., .le., .gt., .ge. были введены в язык во времена, когда на клавиатуре отсутствовали необходимые символы. Новые обозначения ==, /=, <, <=, >, >= более удобны для использования.

Таким образом, развитие Фортрана продолжается, что отображается в обновляемых международных стандартах для языка Фортран. В Фортране 2018 получили дальнейшее развитие средства взаимодействия Фортрана и Си, дополнительные средства поддержки параллельности (расширения средств coarrays), расширяются списки устаревших и удаленных черт (см. раздел 5) и вводятся другие новшества. Современный Фортран реализован на различных платформах и используется при решении задач вычислительного характера как в ИПМ, так и в других организациях в России и за рубежом. Развиваются системы параллельного программирования, ориентированные на современный Фортран: MPI, OpenMP, Coarray, DVM и др.

Отечественный стандарт для языка Фортран представлен одним документом - ГОСТ 23056-78. Язык программирования Фортран. 01.01.1979. Англ. название: Programming language FORTRAN. Область применения: Настоящий стандарт распространяется на язык программирования ФОРТРАН.

Настоящий стандарт распространяется на язык программирования ФОРТРАН и устанавливает:

  • форму представления и правила интерпретации (синтаксис и семантику) программы, записанной на языке ФОРТРАН;
  • форму представлении входных данных, обрабатываемых программой при ее выполнении в автоматизированной системе обработки данных;
  • форму представления выходных данных, получаемых в результате выполнения программы.

Стандарт не устанавливает:

  • механизм, которым программа трансформируется для ее выполнения в системе обработки данных (комбинация этого механизма и системы обработки данных называется процессором);
  • метод передачи программы и ее входных или выходных данных в систему обработки данных и обратно;
  • действия, необходимые для запуска и управления программой в системе обработки данных;
  • результаты выполнения программы, если стандарт не устанавливает правил ее интерпретации;
  • размер и сложность программы;
  • диапазон или точность представления числовых значений;
  • состав и форму документации на трансляторы с языка ФОРТРАН и программы, записанные на языке ФОРТРАН.

Стандарт полностью соответствует международной рекомендации ИСО/Р 1539-72. Стандарт предназначен для достижения высокой степени мобильности и машинной независимости программ, записанных на языке ФОРТРАН, позволяющей использовать их в различных автоматизированных системах обработки данных. Стандарт не обновляется уже много лет и не отображает современных требований и развития систем и технологий программирования.

Заключение

В результате выполнения работы выполнены все поставленные задачи:

  • рассмотрены языки программирования в качестве объектов стандартизации;
  • исследованы вопросы относительно отечественных исследований в направлении развития языков программирования;
  • изучены зарубежные и отечественные стандарты языков программирования на примере Фортран.

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

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

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

Список использованной литературы

  1. Горелик А. М. Новый стандарт языка Фортран (Фортран 2008) / А. М. Горелик // Препринты ИПМ им. М. В. Келдыша. 2011. № 16. С. 1-29.
  2. Горелик А. М. Программирование на современном Фортране / А. М. Горелик. – М.: Финансы и статистика, 2006. - 351 с.
  3. Горелик А. М. Современный Фортран для компьютеров традиционной архитектуры и для параллельных вычислительных систем / А. М. Горелик // Вычислительные методы и программирование. М.: МГУ. 2004. Т.5. С. 320-328.
  4. Горелик А. М. Сравнение стандартов языка Фортран / А. М. Горелик // Информационные технологии и вычислительные системы, 2015. №3. С. 45- 64.
  5. Горелик А. М. Эволюция языка программирования Фортран (1957–2007) и перспективы его развития / А. М. Горелик // Вычислительные методы и программирование, 2008, т.9, №2. C.223-241.
  6. Горелик А. М. Эволюция языка Фортран. Устаревшие черты языка и средства для их замены / А. М. Горелик // Препринты ИПМ им. М. В. Келдыша. 2018. № 130. 13 с. doi:10.20948/prepr-2018-130 URL: http://library.keldysh.ru/preprint.asp?id=2018-130 (дата обращения: 04.11.2019).
  7. Лаврова Ю. К. АЛГОЛ-68 для IBM PC / Ю. К. Лаврова // Информатика и программирование, Новосибирск, 1989, с.121-124.
  8. Поттосин И. В. Российские исследования по языкам программирования и трансляции МИР ПК – ДИСК. 2003. № 12. СТУДИЯ ПРОГРАММИРОВАНИЯ
  9. Поттосин И. В. Текущее состояние российских исследований и разработок в области трансляции / И. В. Поттосин // Новосибирск, 1995. - 32 c.
  10. Сафонов В. О. Языки и методы программирования в системе "Эльбрус" / В. О. Сафонов — М.: Наука, 1989, 392 с.
  11. Терехов А. Н. Технологические средства программирования — методы и инструменты / А. Н. Терехов // Информатика и программирование, Новосибирск, 1989, с.5-16.
  12. Фортран 90. Международный стандарт. Перевод с англ. Дробышевич С.Г. редактор перевода Горелик А. М. М.: Финансы и статистика, 1998. - С. 378.
  13. Язык представления знаний РЕПРО // Артемьева И. Л., Клещев А.С., Лифшиц Ф. Я., Плис Г. Я. // Объектно-ориентированное программирование: Тез. докл. Всесоюз. конф. "Актуальные проблемы системного программирования". — Таллин, 1990, с.84-86.
  14. ANSI X3.9-1966. USA Standard FORTRAN.
  15. ANSI X3.9-1978. American National Standard – Programming Language FORTRAN (ISO 1539-1980).
  16. Fortran. Programmers reference manual / URL: http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/704/704_FortranProgRef Man_Oct56.pdf (дата обращения: 04.11.2019).
  17. ISO/IEC 1539: 1991(E). Information technology – Programming languages – Fortran.
  18. ISO/IEC 1539-1: 1997. Information technology – Programming languages – Fortran – Part1: Base Language.
  19. ISO/IEC 1539-1: 2004. Information technology – Programming languages – Fortran – Part1: Base Language.
  20. ISO/IEC 1539-1: 2010. Information technology – Programming languages – Fortran – Part1: Base Language.
  21. ISO/IEC 1539-2:2000 Information technology — Programming languages — Fortran — Part 2: Varying length character strings

Приложения. Отечественные стандарты языков программирования

Номер

Название

Дата введения

Статус

1

ГОСТ 21551-76

Язык программирования АЛГАМС

30.06.1977

действующий

Англ. название: Programming languages ALGAMS

Область применения: Настоящий стандарт устанавливает описание языка программирования АЛГАМС, предназначенного для автоматизации программирования при решении научных и инженерно-технических задач, а также для обмена алгоритмами

2

ГОСТ 22558-89

01.01.1991

действующий

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

Нормативные ссылки: ГОСТ 22558-77

3

ГОСТ 23056-78

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

01.01.1979

действующий

Англ. название: Programming language FORTRAN

Область применения: Настоящий стандарт распространяется на язык программирования ФОРТРАН

4

ГОСТ 23057-78

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

01.01.1979

действующий

Англ. название: Programming language basic FORTRAN

Область применения: Настоящий стандарт распространяется на язык программирования Базисный Фортран

5

ГОСТ 27787-88

Язык программирования БЕЙСИК

30.06.1989

действующий

Англ. название: BASIC programming language

Область применения: Настоящий стандарт устанавливает: 1) синтаксис программ, написанных на языке Бейсик; 2) форматы и точность данных, а также диапазон представления чисел для данных, поступающих на вход процессора обработки данных, управляемого программой, написанной на языке Бейсик; 3) форматы и точность данных, а также диапазон представления чисел, получаемых в результате выполнения процессором обработки данных программы, написанной на языке Бейсик; 4) семантические правила для интерпретации смысла программ, написанных на языке Бейсик; 5) ошибки и исключительные ситуации, которые должны быть обнаружены, а также способ, при помощи которого эти ошибки и исключительные ситуации должны быть обработаны.

Настоящий стандарт не устанавливает: 1) механизм, при помощи которого программы, написанные на языке Бейсик, преобразуются для использования процессором обработки данных; 2) средства, при помощи которых выполняются программы, написанные на языке Бейсик; 3) состав и форму документации на реализации языке Бейсик и программы, написанные на языке Бейсик

6

ГОСТ 27831-88

Язык программирования АДА

30.06.1989

действующий

Англ. название: Programming language Ada

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

7

ГОСТ 27974-88

Язык программирования АЛГОЛ 68

30.06.1990

действующий

Англ. название: Programming language ALGOL 68

Область применения: Настоящий стандарт распространяется на язык программирования Алгол 68 и его варианты и устанавливает требования:
к программе на языке программирования Алгол 68, представленной на машинном носителе или в комплекте программной документации;
к реализациям языка программирования Алгол 68 и его вариантов, используемым при создании или эксплуатации программных средств, в части выполнения программ на языке Алгол 68

8

ГОСТ 27975-88

Язык программирования АЛГОЛ 68 расширенный

30.06.1990

действующий

Англ. название: Programming language ALGOL 68 extended

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

9

ГОСТ 28140-89

Системы обработки информации. Язык программирования ПАСКАЛЬ

отменён

Англ. название: Information processing systems. Programming languages-PASCAL

10

ГОСТ 28141-89

Системы обработки информации. Язык программирования Фортран 77

отменён

Англ. название: Information processing systems. Programming languge-FORTRAN 77

11

ГОСТ 28397-89

Языки программирования. Термины и определения

01.01.1991

действующий

Англ. название: Programming languages. Terms and definitions

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

12

ГОСТ 28571-90

Системы обработки информации. Машинная графика. Связь ядра графической системы с языком программирования ПАСКАЛЬ

отменён

Англ. название: Information processing systems. Computer graphics. Graphical Kernel system (GKS) language bindings. Part 2. Pascal

13

ГОСТ 28784-90

Системы обработки информации. Машинная графика. Связь ядра графической системы с языком программирования ФОРТРАН

отменён

Англ. название: Information processing systems. Computer graphics. Graphical Kernel System (GKS language bindings. Part 1. Fortran

14

ГОСТ Р 34.1702.3-92

Информационная технология. Машинная графика. Связь ядра графической системы с языком программирования Ада

01.01.1994

действующий

Англ. название: Information technology. Computer graphics. Graphical kernel system (GKS) language bindings Ada

Область применения: Настоящий стандарт устанавливает правила привязки ядра графической системы (ЯГС) (ГОСТ 27817) к языку программирования Ада (ИСО 8651-3) и определяет:
имена и списки параметров процедур на языке Ада, соответствующие функциям ЯГС;
имена типов данных ЯГС в языке Ада;
структуры данных ЯГС в языке Ада;
имена функций обработки ошибок.
Настоящий стандарт не устанавливает:
структуры и методы реализации ЯГС;
требования к операционной среде и оборудованию;
методы связи ЯГС с другими языками программирования, отличными от языка Ада

15

ГОСТ Р 50754-95

Язык описания аппаратуры цифровых систем VНDL. Описание языка

01.01.1996

действующий

Англ. название: VHSIC Hardware Description Language. Language reference manual

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