]]> ]]>

G95

Реализация языка программирования FORTRAN

G95 — стабильный компилятор 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

]]>

Работа программистам