Немного истории
В 1995 г. в газете «Открытые системы сегодня» была опубликована статья «Фортран жил, жив и будет жить». Прогноз оправдался: Фортран не только живет, но и бурно развивается. Что же произошло за истекшие годы? Утвержден и вступил в действие новый международный стандарт, неформально называемый Фортран 95. Разрабатывается проект следующего стандарта, пока именуемого Фортран 2000. Совершенствуются основанные на Фортране языки для параллельного программирования (OpenMP, HPF-2, Co-Array Fortran и др.). Создание новых стандартов языка и современных компиляторов стало убедительным подтверждением того, что интерес к нему не ослабевает.
Фортран остается весьма популярным языком программирования при решении задач вычислительного характера во многих областях прикладных и фундаментальных научных исследований.
Появились Фортран и первый транслятор для него в середине 50-х годов и предназначались для обработки числовой информации, так как тогда ЭВМ использовались для выполнения расчетов. Фортран был самым распространенным языком программирования.
Он постоянно развивался и совершенствовался, причем сохранялись индивидуальность и преемственность с предыдущими вариантами языка. Одна из основных причин его популярности и живучести — огромный фонд прикладных программ, накопленных за прошедшие десятилетия. Этому в значительной мере способствовала унификация языка — были приняты четыре стандарта, Фортран 66/77/90 и 95. Таким образом, возникли предпосылки для разработки мобильных (переносимых) программ.
В истории языка можно обнаружить и период падения интереса к нему, когда Фортран 77 устарел и не соответствовал требованиям времени, а подготовка Фортрана 90 значительно задерживалась. Однако теперь, после завершения работы над ним, вступления в действие современных международных стандартов Фортрана и реализации их практически для всех вычислительных платформ, а также в связи с использованием высокопроизводительных параллельных компьютеров, интерес к Фортрану снова возрос.
Новый этап развития
Наиболее важным событием в становлении языка стало принятие в 1991 г. стандарта Фортран 90, возможности которого существенно шире, чем у его предшественников. Он позволил создавать более мобильные и надежные программы, чем Фортран 77, и отвечал стилю современного программирования. Язык получил дополнительные возможности: для исходных программ — свободный формат, для данных — производные типы (структуры) и средства параметризации встроенных типов, для массивов — операции над ними и их секциями, как над целыми объектами, а также указатели, механизмы динамического размещения объектов в памяти, новые управляющие конструкции, определяемые пользователем операции, модули, элементы объектно-ориентированного программирования, более развитые средства использования процедур и др.
Действующий стандарт
В 1997 г. был принят следующий международный стандарт - Фортран 95. По сравнению с предыдущей версией в нем относительно немного новшеств, а также устранены некоторые дефекты и нерегулярности прежних описаний.
Существенными его отличиями от предыдущих возможностей стали оператор и конструкция FORALL, поддерживающие удобный синтаксис для одновременных присваиваний группам элементов массивов. FORALL допускает специфицирование большего класса секций массивов, чем разрешалось в Фортране 90. Например, в нем диагональ массива нельзя представить в виде секции, а в Фортране 95 это можно сделать через
FORALL (I=1:N) X(I:I) = & Y(I).
Оператор FORALL функционально похож на цикл за исключением того, что концептуально правые части для всех итераций одновременно вычисляются, а затем и одновременно выполняются присваивания, причем результат не зависит от того, поддерживает ли компилятор параллельное выполнение.
Кроме того, появился атрибут PURE, с помощью которого можно объявить функцию без побочного эффекта. Вызов такой функции, в частности, используется тогда, когда возможна параллельная обработка без таких нежелательных последствий, как недетерминизм.
В Фортране 95 расширена также концепция поэлементных процедур, т. е. аргументами и результатами в них могут быть как скаляры, так и массивы, а результат получается таким же, как и в случае применения процедуры к соответствующим элементам каждого из массивов-аргументов. Если в Фортране 90 были только встроенные поэлементные функции, то в стандарте 95 появилась возможность использовать и определяемые программистом поэлементные процедуры для выражения параллелизма.
Отметим еще введение средств инициализации указателей и производных типов, новых встроенных процедур и расширений для нескольких встроенных процедур Фортрана 90.
Современные стандарты Фортрана представляют собой семейство документов. Действующий сейчас Фортран 95 состоит из трех документов. Первый — основной язык, остальные — дополнительные. Причем не требуется, чтобы соответствующий стандарту компилятор обязательно реализовывал дополнительные документы. Второй содержит описание средств работы с символьными строками переменной длины. Третий член семейства определяет описание языка условной компиляции.
Некоторые конструкции языка Фортран уже устарели и стали излишними после введения новых элементов — они отнесены к категории архаичных черт. При разработке Фортрана 95 решено удалить некоторые из них. В соответствии с принятой ранее концепцией убрали те, что в версии Фортрана 90 имели статус «нерекомендуемые».
Проект будущего
Сейчас разрабатывается проект нового стандарта Фортран 2000.
В проекте языка предусмотрены весьма существенные нововведения:
- развитие средств объектно-ориентированного программирования;
- средства взаимодействия с Си;
- параметризованные производные типы;
- асинхронный ввод-вывод;
- производный тип для ввода-вывода;
- новые возможности, касающиеся размещаемых массивов;
- исключительные ситуации для операций с плавающей точкой и др.
Чтобы эффективно реагировать на требования времени, не дожидаясь принятия очередного стандарта, было решено выделить наиболее приоритетные направления и разработать для них проекты. Предполагается, что эти расширения будут вставлены в неизмененном виде в следующую ревизию основного стандарта (Фортран 2000).
Составленные в процессе работы технические отчеты помогут добавить усовершенствования в компиляторы Фортрана 95 еще до выхода полностью законченного нового стандарта. Если же потребуются какие-либо модификации языка, то разработчики будут стремиться минимизировать изменения в существующих коммерческих реализациях.
Сейчас уже выпущены два технических отчета, одобренных в качестве стандартов: новые возможности, касающиеся размещаемых массивов; исключительные ситуации для операций с плавающей точкой.
Параллельное программирование на базе Фортрана
Одна из наиболее актуальных проблем развития Фортрана — разработка языковых средств, ориентированных на параллельную обработку.
В Фортране 90/95 содержится большой набор таких средств работы с массивами и секциями массивов как с целыми объектами, позволяющих неявно описывать параллелизм действий над компонентами массива или нескольких массивов. С их помощью можно в сжатой форме представить алгоритмы обработки массивов, благодаря чему компилятор сгенерирует эффективный код с учетом особенностей аппаратуры. В Фортран 95 были введены и отдельные новые средства, полезные для параллельной обработки.
Хотя стандарты Фортран 90/95 содержат некоторые средства поддержки параллельности, их нельзя считать полностью параллельными языками. Однако параллельные языки, разработанные на базе этих стандартов, довольно широко используют их возможности (динамические и размещаемые массивы, указатели, структуры, модули, явный интерфейс, определяемые пользователем операции, большое число новых встроенных процедур и др.).
Для вычислительных машин с общей памятью работы по унификации расширений языков средствами спецификации параллелизма сначала проводились группой PCF (Parallel Computing Forum), а в дальнейшем — X3H5 ANSI. Проект X3H5 положен в основу стандарта OpenMP, утвержденного в 1997 г.
Если применяется подход, ориентированный на разбиение данных, то фактическим стандартом является язык HPF (High Performance Fortran) и его версия HPF 2.0, которые по существу представляют расширения соответственно Фортрана 90 и Фортрана 95.
Языки HPF и HPF 2.0 содержат директивы для описания способов разбиения и распределения данных между параллельно работающими процессорами и ряд средств явного указания параллельности. Предлагаемые средства могут применяться на параллельных компьютерах различной архитектуры.
Директивы HPF имеют вид комментария, начинающегося с символов !HPF$, что позволяет применять программы с такими комментариями для любых вычислительных платформ, включая последовательные, без снижения мобильности, поскольку компилятор, ориентированный на последовательное выполнение, будет их игнорировать. С помощью EXTRINSIC-процедур можно настраивать программы на компьютеры различной архитектуры.
В последнее время внимание специалистов привлек новый проект для параллельного программирования — Co-Array Fortran (более раннее название — F--), но этот язык лишь незначительно расширенный Фортран 95. По замыслу он ближе к описанию моделей передачи сообщений, чем к моделям, ориентированным на разбиение данных, но тем не менее это язык более высокого уровня, чем принятый в системах передачи сообщений.
Реализации Фортрана
Компиляторы для современных стандартов этого языка работают на различных компьютерах. Имеются реализации стандартов Фортран 90/95 и для параллельной обработки: HPF, OpenMP, Co-Array Fortran и др. Кроме того, разработаны математические библиотеки, в том числе и для параллельной архитектуры.
Создатели компиляторов предлагают современный набор инструментов (средства отладки, визуализации и др.) для разработки приложений на Фортране.
Выпущены также программные продукты, связанные с современным Фортраном (различные анализаторы, конверторы, переводящие прикладную программу с Фортрана 77 на Фортран 90, разнообразные системы тестов, графические библиотеки и др.).
Созданием и поддержкой компиляторов для компьютеров различных видов занимаются многие ведущие разработчики системного ПО. Первый компилятор для Фортрана 90 был представлен фирмой NAG, имеются и другие от компаний Lahey, Fujitsu, Compaq, IBM, Sun, SGI, HP совместно с EPC, NA Software и др. В России, к сожалению, распространены лишь два компилятора: Microsoft Fortran Power Station v. 4.0 (Фортран 90) и Compaq Visual Fortran или Digital Visual Fortran (Фортран 95), работающие в среде Microsoft Developer Studio и обеспечивающие поддержку смешанного программирования на Visual C++ и на Visual Basic.
О публикациях
Для успешного использования компиляторов и других программных продуктов необходимо иметь не только документацию [1, 2], но также и книги с подробным описанием языка. Учебная и методическая литература обычно более доступна читателям, особенно тем, кто осваивает новый язык. Однако она, как правило, содержит неформальное и неполное описание и не дает ответы на многие практические вопросы, содержащиеся только в формальном описании стандарта.
Сейчас выпущены десятки книг на разных языках (по моим сведениям — на 11), где дается неформальное описание языков Фортран 90 и Фортран 95.
На русском языке книг по Фортрану 95 пока нет. Имеется перевод официального описания Фортрана 90 [3] и работы [4, 5] c его неформальным описанием. Вышли и другие книги, но они содержат лишь неполное описание языка или конкретной реализации (хотя в их названиях это и не отражено); причем зачастую не выделяются нестандартные черты. Если читатель воспользуется подобным описанием, то может оказаться в затруднительном положении, когда отлаживает программу на ПК, а расчеты производит с помощью другой вычислительной техники, например, на какой-либо параллельной вычислительной системе. Чтобы избежать подобных проблем, программисту необходимо хорошо знать стандарт и отдавать предпочтение тем средствам, которые предусмотрены в нем, в случае же применения конкретной реализации лучше руководствоваться фирменной документацией, а не ее пересказом.
Литература
1.ISO/IEC 1539: 1991 (E) Information Technology - Programming languages - Fortran.
2. ISO/IEC 1539-1: 1997 Information Technology - Programming languages - Fortran - Part 1: Base Language.
3. Фортран 90. Международный стандарт. М.: Финансы и статистика, 1998.
4. Горелик А.М., Ушкова В.Л. Фортран сегодня и завтра. М.: Наука, 1990.
5.Меткалф М., Рид Дж. Описание языка программирования Фортран 90. М.: Мир, 1995.
ОБ АВТОРЕ
Горелик Алла Моисеевна - старший научный сотрудник, к. ф.-м. н., член Международной рабочей группы «ISO/IEC JTC1 SC22/WG5», Институт прикладной математики им. М.В. Келдыша РАН.