Компиляторы Fortran от Microsoft
Андрей Колесов

© 1996, А.Колесов
Исходный, авторский вариант статьи, опубликованной в еженедельнике ComputerWeek-Moscow (№ 13'96, с. 1, 26-27) с незначительной правкой научного и литературного редактирования.


В конце 1995 г. фирма Microsoft выпустила новую версию Fortran PowerStation 4.0 для Windows 95 и Windows NT Workstation.
Разработкой компиляторов Fortran для Intel-совместимых ПК занимается целый ряд американских фирм, в частности, определенной популярностью пользуются продукты фирм Salford и Lahey Computer System. Последняя выпустила свою новую систему Lahey Fortran 90 2.00a в декабре прошлого года. Однако все же наибольшей популярностью в этом сегменте компьютеров пользуются компиляторы Fortran фирмы Microsoft.

Три уровня решений для Fortran
Fortran PowerStation 4.0
Математические библиотеки подпрограмм

Три уровня решений для Fortran

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

Хотя MS Fortran 5.1 является довольно устаревшей системой пятилетней давности, реализованной в среде MS-DOS, она по-прежнему представляет интерес для тех, кто имеет дело с устаревшими моделями ПК, которых в нашей стране еще немало. Фактически, большинство российских пользователей Fortran до настоящего времени имело дело именно с этим пакетом.

Достоинством данной системы является то, что в ней преодолено ограничение оперативной памяти 640 Кб — созданные в ней приложения могут использовать расширенную память до 64 Мб на компьютерах 386 и старше. Она позволяет создавать как объектные (OBJ), так и динамические (DLL) библиотеки.

Первая версия Fortran PowerStation (FPS) 1.0 для Windows появилась в начале 1993 г., а несколько позднее была выпущена версия FPS 1.0 для Windows NT. Среда разработки FPS 1.0 была реализована в Windows, а 32 -разрядные приложения были предназначены для работы в MS-DOS. Использование DOS в качестве базового режима работы представляется не случайным: этот режим обеспечивает более высокую производительность, особенно для 32-разрядных приложений, ведь Windows — 16-разрядная среда. Для расчетных задач это является наиболее важным и, наверное, именно поэтому в научной сфере DOS продолжает оставаться довольно популярной операционной системой.

Интегрированная среда FPS 1.0 под названием Visual Workbench вполне удовлетворяла современным требованиям разработчика, включая встроенную справочную систему, редактор с различными средствами управления представлением исходного текста, отладчик, инструменты Browser и Profiler и многое другое.

В компиляторах FPS используется так называемая flat-модель памяти, которая за счет 32-разрядной адресации позволяет работать с массивами, ограниченными практически только размерами физической памяти компьютера (до 4 Гб). FPS 1.0 полностью соответствует стандарту ANSI-F77 и поддерживает подмножество стандарта Fortarn 90. Кроме того, он включает нестандартные расширения, используемые в DEC VAX и IBM VS/SAA.

При работе с версией FPS для Windows NT пользователь получает также целый ряд дополнительных возможностей, предоставляемых этой операционной системой: распределенная обработка в сетях, симметричные параллельные многопроцессорные вычисления, работа в режиме разделения времени.

В начало статьи

Fortran PowerStation 4.0

В декабре 1995 г. фирма Microsoft выпустила новую версию Fortran PowerStation 4.0, которая имеет ряд существенных отличий от предыдущих версий. Прежде всего, данная 32-разрядная система реализована в рамках Windows 95 и Windows NT Workstation, а разработанные программы предназначены именно для этих ОС. Теперь она поставляется в двух редакциях: Профессиональной (799 долл.) и Стандартной (599 долл.). В отличие от Стандартной, Профессиональная редакция имеет в своем составе библиотеку математических подпрограмм Microsoft IMSL.

FPS 4.0 полностью поддерживает новый стандарт Fortran 90. Кроме того, в нем увеличен список дополнительных нестандартных расширений языка, которые используются в ряде популярных систем на других платформах (DEC, IBM, Cray). Благодаря новому стандарту Fortran 90, FPS 4.0 обеспечивает полную поддержку смешанного программирования с Visual C++ (в том числе с библиотекой MFC) на уровне объектных OBJ модулей, и с Visual Basic на уровне DLL-библиотек.

При работе с FPS 4.0 можно создавать исполняемые EXE-модули трех типов: Consol, Standard Graphics и QuickWin Graphics. Первый из них реализует наиболее простой тип диалогового интерфейса — ввод данных в традиционном стиле DOS (текстовый режим экрана). Этот вариант обеспечивает самое высокое быстродействие программы. Второй тип использует графический интерфейс, но только с одним диалоговым окном (single-document interface). QuickWin Graphics соответствует обычному для Windows многооконному интерфейсу.

FPS 4.0 поставляется со стандартной интегрированной средой разработки Microsoft Developer Studio (она используется, в частности, Visual C++ 4.0). Это существенно упрощает проблему освоения системы, а также разработку программ в режиме смешанного программирования (можно работать в одной среде). В целом новая система оптимизирована для применения на компьютерах 486 и Pentium, хотя может работать и на 386 процессоре.

В начало статьи

Математические библиотеки подпрограмм

Традиционно, сильной стороной Fortran является наличие мощного набора готовых математических решений в виде библиотек подпрограмм. За многие годы применения языка своеобразным стандартом в этой области стала коллекция фирмы Visual Numerics — библиотека IMSL. Фактически, как продукт самого разработчика, библиотека представляет собой набор процедур с исходными текстами на Fortran, который может использоваться на любой платформе, имеющей Fortran-компилятор: мэйнфреймах, рабочих станциях, персональных компьютерах.

Библиотека IMSL содержит более 1000 функций, которые объединены в три группы:

  1. общие математические (векторные и матричные операции, вычисление собственных значений, численные методы решения линейных и нелинейных уравнений, интегрирование и дифференцирование, интреполяция и аппроксимация, оптимизация и пр.);
  2. специальные функции (функции Бесселя, Кельвина, Эйри, Матье, тригонометрические, гиперболические, эллиптические и интегральные функции, гамма-функции и т.д.);
  3. статистические (кластерный, факторный и дискриминантный анализ и многое другое).

По лицензионному соглашению с Visual Numerics фирма Microsoft распространяет для Intel-совместимых компьютеров три варианта этой библиотеки под названием Microsoft IMSL Mathematical and Statistical Libraries: 16-разрядную библиотеку для MS-DOS (для MS Fortran 5.1), 32-разрядную для MS-DOS/Windows и 32-разрядную для Windows NT.

Начиная с версии MS FPS 4.0, библиотека IMSL входит в состав Профессиональной Редакции. Это, конечно, очень выгодно для серьезных пользователей языка, так как отдельно библиотека стоит около 500 долл. Следует отметить, что еще три года назад не столь полный вариант IMSL для ПК стоил не менее 1800 долл.

Библиотека IMSL автоматически интегрируется в среду разработки Microsoft Developer Studio, в которой, в частности, можно получить подробную справку (включая графические иллюстрации) о назначении и работе любой функции. Процедуры библиотеки могут также без каких-либо проблем использоваться в среде разработки Visual C++.

Кроме IMSL, в обе редакции MS FPS 4.0 входит коллекция математических подпрограмм Numerical Recipes (численные рецепты). Эта библиотека является разработкой Cambridge University Press и распространяется на правах бесплатного приложения (есть такой термин "courtesy of ..." — "любезность со стороны ..."). Однако авторы накладывают определенные ограничения на право пользователей копировать и распространять исходные тексты подпрограмм. Данная библиотека находилась еще и в составе предыдущей версии MS FPS 1.0, она является альтернативным вариантом библиотеки IMSL (примерно те же функции). Процедуры Numerical Recipes поставляются в исходных текстах, а сама библиотека содержит большое число примеров их применения. Но следует иметь в виду, что печатная документация по этой библиотеке в состав FPS не входит — ее нужно покупать отдельно.

В начало статьи