Фортран сегодня
Конечно же сегодня известность Фортрана ни в коей мере не может сравниться с его популярностью в 60-70-е годы. Тем не менее, пережив многих некогда грозных конкурентов, он продолжает сохранять устойчивые позиции в области математических расчетов.
В значительной степени долголетие Фортрана объясняется рядом достоинств, важных именно для расчетных задач (подробнее об этом и о стандарте Fortran 90 см. "Новый стандарт для старейшего языка программирования", "Мир ПК", # 3/96, с. 160-163). Здесь в первую очередь нужно выделить отличную межплатформную совместимость, обеспечивающую широкую масштабируемость и долговечность программ. Дело в том, что жизненный цикл расчетных программ намного превышает время существования конкретных компьютерных систем. В качестве примера авторы могут сослаться на некоторые собственные вычислительные модули, последовательно прошедшие без каких бы то ни было изменений через архитектуры СМ-1/2, СМ-1420, ЕС ЭВМ и IBM PC. Существенна также относительная простота конструкций языка: программы для научных и технических расчетов пишутся чаще всего специалистами в конкретных предметных областях, а не профессиональными программистами.
Еще одно достоинство Фортрана - огромный объем готовых математических библиотек, реализованных, как правило, на этом же языке и кочующих вместе с ним с одной компьютерной платформы на другую, шлифуя свои алгоритмы и расширяя состав функций.
Сложные математические задачи всегда предъявляли повышенные требования к вычислительной технике, поэтому в большинстве своем они решались на компьютерах высокой производительности: рабочих станциях, мини-ЭВМ, мэйнфреймах. И именно для этих классов компьютеров (особенно для Unix-систем) был накоплен наибольший опыт в создании компиляторов Фортрана. Можно отметить разработки таких фирм, как CraySoft, DEC, Fujitsu, IBM, NAG (Numeric Algorithms Group), Parasoft. Однако в последние годы с ростом мощности ПК наметилась тенденция более широкого использования Фортрана на платформе Wintel. По некоторым оценкам, не менее половины Фортран-программ сегодня работает на ПК.
Фортран-системы производства Microsoft
До недавнего времени главным производителем компиляторов Фортрана для ПК была корпорация Microsoft, но в начале 1997 г. она объявила о прекращении работ в этом направлении. Тем не менее системы программирования на Фортране фирмы Microsoft продолжают активно использоваться (особенно в России, где другие пакеты были практически недоступны для пользователей), поэтому имеет смысл кратко о них напомнить.
1. MS Fortran 5.1 - 16-разрядная система для MS-DOS/Windows (1990 г.). Хотя этот пакет значительно устарел, многие продолжают пользоваться им для решения научных задач. Fortran 5.1 реализован в среде MS-DOS, но создаваемые с его помощью программы могут работать с оперативной памятью до 64 Мбайт. Fortran 5.1 позволяет получать как объектные (OBJ), так и динамические (DLL) библиотеки.
2. MS Fortran PowerStation 1.0 - 32-разрядная система для MS-DOS/Windows (1993 г.). Первая версия Fortran PowerStation (FPS) 1.0 появилась в начале 1993 г. для Windows, а несколько позднее была выпущена версия FPS 1.0 для Windows NT. Среда разработки FPS 1.0 была реализована в Windows, а создаваемые в ней 32-разрядные программы работали под управлением MS-DOS (в сфере научно-технических задач эта операционная система была тогда довольно популярна).
Интегрированная среда FPS 1.0 под названием Visual Workbench содержала встроенную справочную систему, редактор с различными средствами управления представлением исходного текста, отладчик, браузер исходного текста, профайлер и многое другое. В компиляторе FPS использовалась так называемая плоская (линейная) модель памяти, которая за счет 32-разрядной адресации позволяла работать с массивами, ограниченными практически только размерами физической памяти компьютера (до 4 Гбайт). Компилятор полностью соответствовал стандарту Fortran 77 и поддерживал подмножество стандарта Fortran 90, а также нестандартные расширения, используемые в DEC VAX и IBM VS/SAA.
При работе с версией FPS 1.0 для Windows NT программист получал ряд дополнительных возможностей: он мог организовывать распределенную обработку в сетях, симметричные параллельные многопроцессорные вычисления, работу в режиме разделения времени.
3. MS Fortran PowerStation 4.0 - 32-разрядная система для Windows 95 и NT Workstation (1995 г.). В PowerStation и среда разработки, и создаваемые программы работали под управлением Windows 95 (или Windows NT Workstation). Компилятор FPS 4.0 полностью поддерживал стандарт Fortran 90, а также ряд дополнительных нестандартных расширений языка, которые используются в популярных системах таких фирм, как DEC, IBM, Cray. Средой разработки FPS 4.0 служила интегрированная оболочка Microsoft Developer Studio, которая используется и в других продуктах Microsoft. Пакет позволял создавать исполняемые EXE-модули четырех типов - Consolе, Standard Graphics, QuickWin Graphics и Win32 Application, которые мы разберем при рассмотрении пакета DVF.
Математические библиотеки подпрограмм
Традиционно сильной стороной Фортрана является мощный набор готовых математических решений в виде библиотек подпрограмм. За многие годы применения языка своеобразным стандартом в этой области стала коллекция фирмы Visual Numerics - библиотека IMSL. Поскольку это набор процедур, написанных на Фортране, она может использоваться на любой платформе, где есть соответствующий компилятор. Библиотека содержит свыше 1000 функций, объединенных в три группы:
- общие математические функции: векторные и матричные операции, вычисление собственных значений, численные методы решения линейных и нелинейных уравнений, интегрирование и дифференцирование, интерполяция и аппроксимация, оптимизация и т. д.;
- специальные функции: функции Бесселя, Кельвина, Эйри, Матье, тригонометрические, гиперболические, эллиптические и интегральные функции, гамма-функции и т. д.;
- статистические функции: кластерный, факторный и дискриминантный анализ и многое другое.
По лицензионному соглашению с Visual Numerics корпорация Microsoft распространяла эту библиотеку под названием Microsoft IMSL Mathematical and Statistical Libraries в трех вариантах: 16-разрядном для MS-DOS (для MS Fortran 5.1), 32-разрядном для MS-DOS/Windows и 32-разрядном для Windows NT.
На смену Microsoft приходит Digital
Сообщение Microsoft о прекращении деятельности по созданию и поддержке средств разработки программ на Фортране вызвало явную озабоченность сообщества программистов, пишущих на этом языке. Свое решение Microsoft объяснила низкой прибыльностью данных продуктов, которые никогда не являлись основными для корпорации.
Однако Microsoft не бросила программистов на произвол судьбы, а передала их под опеку своего давнего партнера - корпорации Digital Equipment. В развитие соглашения о стратегическом сотрудничестве в области корпоративных вычислений, подписанного еще в 1995 г., в марте 1997 г. Microsoft и Digital Equipment заключили договор, по которому Microsoft, прекращая с 1 апреля продажу системы FPS 4.0, рекомендовала своим клиентам использовать для ее обновления пакет Digital Visual Fortran (DVF) 5.0 для Windows NT (Intel, Alpha) и Windows 95. При этом Digital лицензировала для своих визуальных средств разработки среду MS Dеveloper Studio, и первым продуктом Digital, включавшим ее, стал как раз DVF 5.0.
Таким образом, Digital, имевшая многолетний опыт создания средств разработки на Фортране (в основном для Unix-систем), получила отличную возможность продвинуться в сферу ПК, где ранее господствовала Microsoft. А Microsoft, продав свою среду разработки, обеспечила тем самым высокую степень интеграции нового продукта Digital со своими собственными инструментальными средствами. Переходя к характеристике основных возможностей пакета DVF 5.0, который был официально выпущен весной 1997 г., мы рассмотрим их в трех аспектах: собственно язык программирования, среду разработки и варианты получения законченных приложений, обратив при этом особое внимание на его новшества по сравнению с FPS 4.0.
Компилятор DVF 5.0
Практически все современные компиляторы Фортрана поддерживают несколько модификаций языка, среди которых могут быть как варианты, соответствующие какому-либо официальному стандарту, так и нестандартные. Учитывая, что для каждой модификации используются собственные алгоритмы оптимизации результирующего кода, можно говорить даже о наличии в составе одного продукта нескольких различных компиляторов.
Пакет DVF 5.0, как ранее FPS 4.0, поддерживает три основных на сегодняшний день стандарта языка: FORTRAN 66 (ANSI X3.9-1966), FORTRAN 77 (ANSI X3.9-1978) и Fortran 90 (ANSI X3.198-1992). При этом Digital подчеркивает, что оптимизирующий компилятор Fortran 90 в DVF имеет тот же исходный текст, что и соответствующие компиляторы для сред Digital Unix и OpenVMS. Кроме того, DVF обеспечивает компиляцию еще для четырех менее распространенных стандартов: ISO 1539-1980, MIL-STD-1753, FIPS-69-1 и ISO 1539-1991, поддерживает большое число специфических расширений языка, включенных в FPS 4.0, а также компиляторы Digital Fortran для других компьютерных платформ.
В DVF 5.0 реализованы все новшества самого последнего стандарта языка - Fortran 95 (большинство из них ранее входили в состав неофициальных расширений различных разработчиков). Однако специальный режим компиляции для Fortran 95 не предусмотрен, так как к моменту выпуска продукта этот стандарт еще не был официально утвержден. В результате пакет дает программисту возможность работать фактически в режиме стандарта Fortran 95, но не позволяет заблокировать использование исключенных из него устаревших конструкций, которые есть, например, в FORTRAN 77.
Среда Developer Studio
Как мы уже упомянули, в DVF 5.0 входит интегрированная среда разработки Developer Studio - та же, что в системах программирования из семейства Microsoft Visual Studio 97. Впрочем, при желании можно также компилировать и компоновать модули в режиме командной строки без использования Developer Studio.
Среда представляет собой многооконный текстовый редактор с широкими возможностями настройки и включает целый ряд универсальных средств: отладчик кода, встроенную справочную систему, профайлер для изучения частоты использования отдельных частей программы, браузер, обеспечивающий просмотр структуры программы и межпроцедурных ссылок, редактор компонентов графического пользовательского интерфейса и другие инструменты.
В рамках одного проекта можно использовать исходные модули, написанные на разных языках: DVF 5.0 совместим с Visual C++, Visual Basic, Visual J++ и MASM. Наиболее тесно DVF 5.0 интегрирован с Visual C++, в том числе и с библиотекой MFC, причем среда Developer Studio прозрачна для обоих языков, а вызовы могут идти как из Фортран-программы к Си-функциям, так и наоборот. Из программ на Visual Basic можно вызывать модули, написанные на Фортране, но модули на Visual Basic из программ на Фортране вызывать нельзя.
Текстовый редактор Developer Studio обеспечивает настройку в соответствии со специфическими особенностями синтаксиса разных вариантов Фортрана. Например, можно задать режим работы с фиксированным форматом, который предписывает стандарт FORTRAN 77 (в строке кода 72 позиции, причем позиции 1-5 предназначены для метки, позиция 6 - для знака переноса), а можно использовать свободный формат по стандарту Fortran 90.
Типы результирующих программ
С помощью DVF можно получать как библиотеки подпрограмм (статические - OBJ и динамические - DLL), так и исполняемые модули. В целом это стандартная возможность для средств разработки, однако DVF вслед за FPS 4.0 предлагает разные варианты реализации исполняемых модулей, которые различаются степенью использования ресурсов Windows. Рассмотрим их подробнее.
Console Application. Программа, вообще не содержащая графики и реализующая наиболее простую форму диалогового интерфейса - стандартный ввод-вывод на консоль MS-DOS. Поскольку такие программы не обращаются к графическим подпрограммам из платформно-зависимых библиотек, они самые быстрые и легче всего переносятся на другие платформы. Этот тип исполняемых модулей рекомендуется использовать для решения чисто вычислительных задач.
Standard Graphics Application. Программа с однооконным графическим интерфейсом, причем окно не содержит таких стандартных Windows-элементов, как линейное меню вверху и строка состояния внизу. Подобно графическим программам для DOS, она работает с графическими устройствами напрямую, а не через ресурсы Windows. Тип Standard Graphics рекомендуется в тех случаях, когда нужен графический вывод информации и не нужен развитой пользовательский интерфейс.
Выводимый на экран текст можно скопировать в буфер обмена, причем и как текст, и как графику. Это позволяет организовать обмен информацией с другими программами. Например, в свое время руководство по FPS 4.0 предлагало неискушенным пользователям выводить данные на экран, копировать их, переносить в Excel и строить там график. Впрочем, обмен через файл, как представляется, все же удобнее.
QuickWin Graphics Application. Программа, созданная с использованием библиотеки QuickWin, которая содержит обширный (но не полный) набор функций Win32 API. Может иметь стандартный многодокументный интерфейс (Multiple-Document Interface - MDI), позволяющий создавать вторичные окна и держать открытыми одновременно несколько порожденных окон. Окна содержат обычный набор элементов, в том числе, конечно, главное меню и строку состояния. Модуль DFLOGM.F90 обеспечивает создание графического пользовательского интерфейса из стандартных визуальных компонентов с помощью редактора ресурсов Developer Studio.
Win32 Application. Полнофункциональная программа, которой доступны все ресурсы операционной системы и полный набор функций Win32 API.
Все эти типы исполняемых модулей были реализованы и в FPS 4.0. Следует иметь в виду, что они не могут работать в среде Windows 3.x, так как не поддерживают Win32s.
На наш взгляд, для программистов, пишущих на Фортране, наиболее интересны варианты Console и QuickWin. Первый позволяет полностью сосредоточиться на расчетных алгоритмах, вообще не думая о Windows. Второй может быть полезен тому, кто хочет написать программу с системой меню и диалогом, не выходя из Фортрана: возможно, это быстрее, чем учиться работать с пакетом Visual Basic или Delphi (которые к тому же отнюдь не бесплатны). Что касается типа Win32 Application, то представляется, что большинству Фортран-разработчиков он не пригодится. По крайней мере в руководстве по DVF 5.0 говорится, что "полное использование возможностей Windows-программирования потребует от вас хорошего знания Си и умения работать с библиотеками Software Development Kit".
Использование технологий COM и ActiveX
Новшеством DVF 5.0 является генератор исходных модулей Fortran Module Wizard. Он предназначен для получения специальных модулей на языке Fortran 90, обеспечивающих обращение к процедурам DLL-библиотек, методам ActiveX-объектов и функциям COM-серверов. Процесс создания модуля сводится к заполнению экранных форм, содержащих информацию об объекте, который будет использоваться. В программе же обращение к объекту выглядит как обычный вызов подпрограммы на Фортране, так что разработчику не нужно заботиться о тонкостях работы с COM-интерфейсом.
Переходить ли на DVF 5.0?
В первую очередь надо ответить на другой вопрос: нужно ли вообще использовать Фортран? По мнению авторов, имеющих определенный опыт в разработке систем моделирования динамики подземных вод, этот язык по-прежнему остается оптимальным средством для решения задач вычислительной математики. Он позволяет создавать расчетные модули, которые, вполне вероятно, смогут эффективно работать и через десять-двадцать лет, когда компьютеры изменятся до неузнаваемости. Научно-техническому специалисту гораздо проще освоить Фортран, чем изучить премудрости Си или Паскаля, и при этом можно сосредоточиться именно на соответствующих математических задачах.
В конце 80-х годов некоторые наши коллеги, занимавшиеся аналогичными проблемами, с переходом с машин ЕС на ПК начали активно использовать вместо Фортрана более современные средства разработки, такие как Turbo C, Turbo Pascal, QuickBasic. В результате им удалось существенно повысить скорость разработки, но через некоторое время возникли проблемы межплатформной совместимости (например, когда встал вопрос о широком распространении программ). К тому же, хотя Фортран тогда и уступал другим пакетам в удобстве среды разработки (сейчас это уже не так), он раньше других систем для DOS преодолел ограничение в 640 Кбайт. Так или иначе, большинство специалистов по моделированию геофильтрации вернулись сейчас к Фортрану.
Но стоит ли тому, кто уже работает с системой программирования на Фортране (например, каким-либо пакетом Microsoft), переходить на DVF 5.0? Это зависит от творческих интересов специалиста, характера решаемых им задач и от того, какие возможности DVF действительно важны ему для его работы.
Разрабатываемые в настоящее время системы математического моделирования для среды Windows обычно состоят из двух относительно независимых частей: расчетной (в англоязычной литературе ее называют numerical engine), оформленной как отдельный EXE-модуль или DLL-библиотека, и интерфейсной - интерактивной Windows-оболочки, которая позволяет работать с базой данных, редактировать, просматривать исходные данные, запускать расчетную программу и анализировать результаты.
Расчетные модули обычно пишутся научными сотрудниками - специалистами в своей предметной области и вычислительных методах - и в соответствии со сложившейся в последнее время практикой довольно часто распространяются свободно. Для ввода и вывода данных в таких модулях используются файлы самой простой структуры (чаще всего текстовые), так что они не зависят от программы-оболочки, формата базы данных и компьютерной платформы. Для создания подобных программ наилучшим образом подходит компиляция в режиме Console.
Интерфейсные же модули разрабатываются, как правило, в среде Visual Basic, Delphi, Visual C++ и с участием профессиональных программистов, нередко весьма далеких от той предметной области, для которой производятся расчеты. А авторы расчетных модулей если и пишут оболочки, то главным образом для собственных нужд.
С учетом всего вышесказанного очевидно, что переход на DVF 5.0 можно однозначно порекомендовать тем, кто еще работает с MS Fortran 5.0. По-видимому, он будет полезен и большинству пользователей FPS 1.0. Что же касается замены FPS 4.0, то здесь есть над чем подумать: ведь принципиально новые возможности DVF 5.0, такие, как работа с COM-объектами, не слишком интересны разработчикам расчетных модулей.
Если говорить о самом компиляторе, то с функциональной точки зрения новые элементы DVF 5.0 представляются не очень значительными. Что же касается качества реализации, то мы не заметили у DVF 5.0 ни недостатков, ни особых преимуществ по сравнению с компилятором Microsoft, да и в публикациях нам не попадалось упоминаний о существенных отличиях. Перенос программ из FPS 4.0 в DVF 5.0 у нас прошел без проблем. В одном пункте FPS 4.0 и DVF 5.0 все-таки несовместимы (DVF считает ошибкой табуляции в начале строк), но на Web-узле Digital имеется утилита, которая проверяет исходный код программы и корректно конвертирует его.
Однако с выходом следующей версии, в которой будет реализована компиляция в режиме Fortran 95 и, возможно, оптимизация для архитектурных новшеств различных процессоров, в первую очередь Intel, интерес к DVF должен повыситься.
Уже сегодня DVF 5.0 может эффективно использоваться для обучения студентов технических и естественных специальностей. Он позволит студентам и работать с огромным вычислительным наследием прошлого, и осваивать разработку современных Windows-программ.
Формальные характеристики
Пакет DVF 5.0 поставляется в двух редакциях - Standard и Professional. Последняя появилась только в конце 1997 г. и включает дополнительно все ту же математическую библиотеку IMSL фирмы Visual Numerics. Функционально эта библиотека не отличается от включенной в FPS 4.0, но последний вариант ее исходного кода переписан с использованием стандарта Fortran 90.
Стоимость двух редакций DVF 5.0 cоставляет соответственно 599 и 799 долл., причем документацию и лицензию можно приобрести по отдельности. Кроме того, имеются специальные цены (вариант Standard - 360 долл.) для зарегистрированных пользователей средств разработки на Фортране, причем не только фирм Digital и Microsoft, но и других производителей. Бюджетные научные институты и вузы могут приобрести пакет с "академической" скидкой за 389 долл.
По полноте и качеству документации DVF 5.0, как нам представляется, заметно уступает FPS 4.0: в руководстве встречаются просто неработоспособные примеры. Однако во второй половине 1997 г. Digital выпустила довольно много исправлений и дополнений как для самого программного пакета, так и для документации, которые доступны на Web-странице www.digital.com/fortran. В частности, там имеется полный вариант нового руководства программиста в формате PDF. На этой же странице можно найти свободно распространяемые утилиты, обзоры литературы и статьи по Fortran 90 и 95. Очень интересен большой и довольно активно обновляемый раздел вопросов и ответов.
Техническая поддержка пользователей DVF включает возможность двух бесплатных обращений в течение 90 дней после покупки пакета. Дополнительная поддержка предоставляется за плату службой Digital MCS. В России DVF 5.0 продают фирмы - партнеры Digital, адреса которых можно узнать в московском офисе Digital по телефону: (095) 244-95-40.
Колесов Андрей Александрович - канд. техн. наук, обозреватель PC Week/RE, e-mail: akolesov@glasnet.ru Поздняков Сергей Павлович - докт. геол.-минерал. наук, старший научный сотрудник кафедры гидрогеологии МГУ, e-mail: spozdniakov@glasnet.ru.
Стандарт Fortran 95
Отличительной особенностью Фортрана является довольно жесткая стандартизация, которая во многом обеспечила его высокую межплатформную переносимость и, как следствие, долгожительство в компьютерном мире (Фортран был создан в 1954 г.). За сорок лет существования языка для него было принято три международных стандарта: FORTRAN 66, FORTRAN 77 и Fortran 90. (В 1990 г. Международная Организация по Стандартам - ISO - приняла новые правила написания названий языков программирования: заглавной пишется только первая буква.)
В 1995 г. ISO разработала проект нового стандарта - Fortran 95, который был принят ею в октябре 1996 г. Однако Американский национальный институт стандартов (ANSI), на решения которого ориентируются все разработчики США, утвердил Fortran 95 только летом 1997 г.
В последний стандарт включено 17 новых (по сравнению с Fortran 90) функций; частично это расширения существующих операторов. Одновременно из языка удалено пять старых конструкций. Кроме того, составлен список "устаревающих" операторов, которые становятся кандидатами на удаление при следующем пересмотре стандарта. Такой список появился еще при создании стандарта Fortran 90, но некоторые из включенных в него операторов остались в Fortran 95.
В целом нововведения в Fortran 95 представляются не очень существенными, тем более что большинство из них уже были реализованы во многих компиляторах различных производителей в качестве нестандартных расширений. В любом случае принятие нового стандарта не идет ни в какое сравнение с действительно революционными изменениями, произведенными при переходе к Fortran 90.
С более подробным описанием стандарта Fortran 95 можно познакомиться по адресу: www.npac.syr.edu/users/haupt/F90/F95/f95.html