G95
Реализация языка программирования FORTRANG95 — стабильный компилятор Fortran 95 доступный для множества архитектур и операционных систем. Разработка компилятора продолжается в области нововведений и оптимизации. Были добавлена частичная поддержка F2003. Имеет внушительный список компилирующихся пакетов программ.
G95 определяет тип компиляции в зависимости от расширения файла. Допустимые расширения файлов ограничены следующими: .f, .F, .for, .FOR. .f90, .F90, .f95, .F95, .f03, .F03. В каком формате (то есть в фиксированном или свободном) будет обрабатываться исходный файл, определяется его расширением. Расширения .f, .F, .for и .FOR считаются написанными в фиксированном формате, совместимым со старым f77. Расширения .f90, .F90, .f95, .F95. .f03 и .F03 считаются написанными в свободном формате. Расширения, начинающиеся с заглавной буквы F, будут обработаны Си-препроцессором по умолчанию, а начинающиеся с маленькой f по умолчанию им не обрабатываются.
Реализовано множество способов тонкой настройки поведения программы во время ее исполнения через “переменные окружения”. Для получения описаний всех этих переменных необходимо запустить программу, скомпилированную g95, с инструкцией -g95. Эти переменные всегда имеют символьные значения, но значения интерпретируются, как целочисленные или логические.
Как множество других вещей. g95 родился в результате чувства неудовлетворенности. Автор g95 писал код для своей диссертации на Фортране 77, используя g77. Получившаяся программа содержала множество достаточно сложных структур — связанные списки, октарные деревья, разреженные матрицы, генерацию сетки на конечных элементах, решение уравнения Пуассона, многополюсные разложения, минимизация методом сопряженных градиентов и множество геометрических расчетов. Из-за использования Фортрана 77, код получился “некрасивым” и мог бы быть намного лучше, если бы использовал динамические массивы и производные типы данных. Кроме более продвинутых особенностей языка его также сильно вдохновили работы Билла Казна. В результате чего было принято решение о написании свободного компилятора распространяемого под лицензией GNU GPL.
Основные характеристики G95
- бесплатный компилятор языка Fortran 95
- лицензия GNU GPL
- выполнение скомпилированных программ может быть изменено с помощью большого количества переменных окружения, документированных в самой скомпилированной программе
- TR15581 — динамически размещаемые формальные параметры и компоненты производных типов
- указатели на процедуры, структуры
-
передача формальных параметров типа
VALUEв подпрограмму по значению -
использование запятой как разделителя в десятичных дробях в операторах
OPEN,READиWRITE - квадратные скобки могут быть использованы в конструкторах массивов
- обратная бинарная совместимость с g77
- доступны целочисленные типы данных по умолчанию размером 32 и 64 бит
-
исполнение системных команд с помощью
SYSTEM() - имена переменных могут содержать $
- встроенные системные функции из VAX (SECNDS и т.д.)
- системные функции из Unix (getenv, etime, stat и т.д.)
- выявление выходящих за границы массивов во время исполнения
- выявление утечек памяти
- указание места ошибки исполнения в исходном коде
- работает на Lmux/x86, PowerPC, 64-bit Opteron, 64-bit Itanium, 64-bit Alpha
- работает на Windows/Cygwin, MinGW, и Interix
- работает на OSX на Power Mac G4, x86-OSX
- работает на PreeBSD на х8б, HP-UX 11, Sparc-Solaris, x86-Solaris, OpenBSD, NetBSD, AIX, IRIX, Tru64 UNIX на процессорах Alpha
Функциональные возможности стандарта Fortran 2003
В G95 реализована часть функционала стандарта Fortran 2003.
Реализованы следующие встроенные процедуры:
-
C0MMAND_ARGUMENT_C0UNT(),GET_COMMAND_ARGUMENT(),GET_COMMAND()иGET_ENVIRONMENT_VARIABLE() - переменные цикла DO вещественного типа (включая двойную точность) не поддерживаемые в g95
-
квадратные скобки
[и]могут использоваться как альтернатива(/и/)в конструкторах массивов - TR 15581 — динамически размещаемые компоненты производных типов. Использование динамически размещаемых ALLOCATABLE атрибутов формальных параметров, результатов вычисления функций и компонентов структур
- потоковый (Stream) ввод/вывод — F2003 потоковый доступ дает возможность читать и писать бинарные файлы, не заботясь о структуре записей
-
оператор
IMPORT. Используется в теле интерфейса для доступа к объектам объемлющей контекстной области (Host Scoping Unit) -
“европейский” способ представления вещественных чисел — тэг
DECIMAL='COMMA'используется в операторахOPEN,READ,WRITEдля отделения десятичной части дробей запятой вместо точки -
MIN()иМАХ()работают с символьными данными -
атрибут задания типа
VALUEдля формальных параметров подпрограммы передает фактический аргумент по значению - поддерживаются конструкции структур в стиле F2003
- поддерживаются указатели на процедуры
-
оператор
BIND(C), модульISO_C_BINDINGобеспечивают возможность облегченного взаимодействия с C / C++.
Комментарии
]]>blog comments powered by Disqus
]]>