Фортран (Fortran) (раніше FORTRAN — скорочення від «The IBM Mathematical Formula Translating System», тобто «Система трансляції математичних формул від IBM») — імперативна мова програмування загального призначення, яка особливо підходить для інтенсивних чисельних та наукових обчислень. Розроблена корпорацією IBM в 1950-х роках в університетському містечку на півдні Сан-Хосе (Каліфорнія) для потреб наукових та інженерних проєктів.
Fortran | |
---|---|
Парадигма | структурна, імперативна (процедурна, об’єктно-орієнтована), узагальнена, паралельна |
Дата появи | 1957 |
Творці | Джон Бекус |
Розробник | Джон Бекус і IBM |
Останній реліз | Fortran 2023 (17 листопада 2023) |
Система типізації | , статична, |
Основні реалізації | Absoft, Cray, GFortran, , IBM, Intel, Lahey/Fujitsu, , Pathscale, , , Oracle, , Visual Fortran, та інші |
Під впливом від | |
Вплинула на | ALGOL 58, BASIC, C, (PL/I), , , |
Ліцензія | MIT |
Звичайні розширення файлів | . |
Репозиторій вихідного коду | github.com/fortran-lang |
Вебсайт | fortran-lang.org |
|
Досить швидко Фортран почав домінувати в цій галузі програмування, і понад півстоліття постійно використовується для чисельного прогнозу погоди, аналізу методом скінченних елементів, обчислювальної гідродинаміки, обчислювальної фізики та хімії. Це одна з найбільш популярних мов для високопродуктивних обчислень, а також використовується для тестування швидкодії найпотужніших у світі суперкомп'ютерів.
Фортран вважається першою мовою програмування, що широко використовувалась та підтримувала найрізноманітніші комп'ютерні архітектури. Розвиток Фортрану відбувався паралельно ранній еволюції технології компіляторів, і багато досягнень в галузі теорії та розробки компіляторів були спеціально мотивовані необхідністю створення ефективного коду для програм мовою Фортран.
Історія розвитку
Фортран як мова розвивалась стабільно і навіть консервативно. Кожен наступний стандарт був створений після тривалої дискусії між виробниками компіляторів та зацікавленими експертами. Тому кожна з версій, що розвивалася, зазвичай додавала тільки розширення мови, одночасно зберігаючи при цьому сумісність з попередніми версіями (однак були і винятки). Версія Fortran 77 додала підтримку для обробки символьних даних; операції з масивами і модульне програмування з'явилися у версії Fortran 90; функційне програмування у версії Fortran 95 (частково), об'єктно-орієнтоване програмування та узагальнене програмування у версії Fortran 2003. Узагальнене паралельне програмування з допомогою co-arrays, що використовує архітектурно-незалежний та близький для фортрану синтаксис для паралельної декомпозиції даних та виконання інструкцій, було стандартизовано у версії Fortran 2008.
До 1960 версії мови Фортран були доступні для комп'ютерів IBM моделей 709, 650, , і 7090. Зростання популярності мови спонукало виробників комп'ютерів забезпечити компіляторами Фортрану свої машини, до 1963 існувало понад 40 різних компіляторів Фортрану.
До появи дисків та файлів, текстових редакторів та терміналів, програми найчастіше вводили за допомогою перфокарт на клавіатурі перфоратора на 80 знаків. Колода карт подавалася в спеціальний [en] для компіляції. Тому оригінальний код Фортрану мав фіксований формат завдовжки 80 символів (стовпчиків). Не підтримувалась рекурсія та підпрограми.
FORTRAN
Наприкінці 1953 Джон В. Бекус запропонував своєму керівництву в IBM розробити більш практичну альтернативу мови програмування для їхньої ЕОМ IBM 704. До команди створення мови Фортран увійшли також програмісти Річард Ґолдберґ, Шелдон Бест, Гарлан Геррік, Пітер Шерідан, Рой Натт, Роберт Нельсон, Ірвін Ціллер, Лоїс Гейбт, Девід Сейр. Проєкт специфікації системи було завершено до середини 1954. Перший посібник для мови Фортран з'явився в жовтні 1956, а перший компілятор — у квітні 1957.
Це був перший у світі оптимізувальний компілятор, оскільки клієнти погоджувалися використовувати мови програмування високого рівня тільки якщо компілятор зможе генерувати код з продуктивністю близькою до коду, який може написати досвідчений програміст безпосередньо на асемблері. Мова була позитивно прийнята вченими та інженерами для написання програм, котрі створили необхідні умови та ринок для створення компіляторів, які можуть генерувати більш швидкий і ефективний код. Додання комплексних чисел зробило мову особливо зручною також для технічних та інженерних програм, таких як електротехніка.
FORTRAN II
FORTRAN II від IBM з'явився 1958. Основними поліпшеннями були підтримка процедурного програмування, тобто підпрограми і функцій з параметрами, що передавалися за посиланням (by reference). Для підпрограм надали можливість доступу до глобальних змінних.
FORTRAN III
1958 IBM розробила FORTRAN III, що дозволяв писати на асемблері у функціях, цю версію не випустили на ринок як готовий продукт.
FORTRAN для IBM 1401
Для машини IBM 1401 було створено інноваційний на той час 63-прохідний компілятор Фортрану, розміром 8 кілобайт. Він зберігав код програми в пам'яті та одночасно поступово транслював її машинною мовою — це був перший у світі інтерпретатор мови програмування. Наступний інтерпретатор для іншої мови (Паскаль) зʼявився 1970.
FORTRAN IV
Починаючи з 1961, після вивчення потреб клієнтів, компанія IBM розпочала розробку версії FORTRAN IV, в якій були видалені машиннозалежні особливості FORTRAN II (такі як READ INPUT TAPE), і додано багато нових елементів, таких як: логічний тип даних, логічні операції та логічний IF як альтернативу арифметичному IF. FORTRAN IV випустили 1962, спочатку для комп'ютерів IBM 7030 («Stretch»), а потім і для IBM 7090 та IBM 7094. До 1965 FORTRAN IV був «стандартом» відповідно до American Standards Association X3.4.3 FORTRAN Working Group.
FORTRAN 66
Після рішення Американської асоціації стандартів (ANSI зараз) сформувати комітет для розробки «американського стандарту Фортрану» в березні 1966 Fortran 66 фактично став першою «стандартною для індустрії» версією Фортрану.
Fortran 66 мав дуже багато удосконалень:
- програмні одиниці: головна програма,
subroutine
,function
, таblock data
; - типи даних
integer
,real
,double precision
,complex
таlogical
; - інструкції
common
,dimension
, іequivalence
; - інструкція
data
для специфікації початкових значень змінних; - функції
intrinsic
таexternal
(тобто бібліотечні); - інструкції
goto
, визначенийgoto
, та обчислюванийgoto
; - логічний та арифметичний (триваріантний)
if
; - цикл
do
; - ключові слова для послідовних операцій вводу-виводу
read
,write
,backspace
,rewind
, таendfile
; - інструкція для форматованого вводу-виводу
format
; - інструкції
call
,return
,pause
, таstop
; - константи Голлеріта у виразах
data
таformat
, а також як аргументи для процедур; - ідентифікатори з довжиною до 6 символів,
- можливість запису коментарів у коді.
FORTRAN 77
Після оприлюднення стандарту FORTRAN 66, виробники компіляторів продовжували на прохання користувачів додавати розширення для мови, що змусило ANSI 1969 року почати перегляд стандарту, затвердженого 1966 року. Остаточні проєкти наступного стандарту завершено 1977 року, офіційне затвердження стандарту FORTRAN 77 відбулося в квітні 1978 року.
Новий стандарт FORTRAN 77 додавав низку істотних особливостей для вирішення багатьох недоліків FORTRAN 66:
- блоки
if ... end if
, з опціональнимиelse ... else if
, що значно полегшували структурне програмування; - розширення циклів з параметричними виразами, негативним інкрементом та нульовим циклом
do
; - інструкції
open
,close
, таinquire
для роботи з файлами, а також прямий доступ до файлів; - вираз
implicit
та символьний тип данихcharacter
з великою кількістю функцій для нього; parameter
для декларування констант;save
для постійних локальних змінних;- загальні імена для вбудованих функцій.
У цій версії стандарту окремі інструкції були вилучені або оголошені застарілими (тобто такими, що будуть вилучені в наступних версіях мови).
Fortran 90
Зі значним запізненням, як наступник FORTRAN 77, відомий зараз як Fortran 90 (попередня назва Fortran 8X) був випущений як стандарт ISO 1991 і стандарт ANSI 1992. Це був досить масштабний перегляд попереднього стандарту, котрий також враховував нові тенденції та розвиток інших мов. Було додано безліч нових функцій, щоб відобразити значні зміни в практиці програмування:
- нефіксована форма запису джерельного коду (інструкції можуть бути розміщені де завгодно в рядку,
&
означає продовження інструкції в наступному рядку,;
розділяє кілька інструкцій в одному рядку) а також запис ключових слів малими літерами; - ідентифікатори змінних довжиною до 31 символа;
- вбудовані однорядкові коментарі
!
; - операції над масивами як ціле, та над вибірками масивів, що значно спрощувало математичні та інженерні обчислення, введено поняття масиву без елементів (нульового розміру);
- рекурсивні процедури (підпрограми та функції);
- модулі
module ... end module
для групування пов'язаних процедур і даних, щоб зробити їх доступними для інших частин програми, включаючи можливість обмежувати доступ тільки до певних частин модуля з допомогоюprivate/public
; - значно покращився механізм передачі аргументів (атрибути
optional
,intent(in/out/inout)
), що дозволяло перевіряти інтерфейси функцій та процедур під час компіляції (атрибутintrinsic
); додано також опціюresult()
для оголошення назви змінної, що повертається функцією; - передбачено створення інтерфейсів
interface ... end interface
користувачем для узагальнених процедур; - перевантаження операторів;
- похідні/абстрактні типи даних
type ... end type
з оператором вибору компонента
%
; новий тип синтаксису для декларації типу даних та інших атрибутів змінних:kind
(та додатковоlen
для символьногоcharacter
вбудованого типу),save
, та іменованих константparameter
; - динамічне виділення пам'яті за допомогою атрибутів
allocate/deallocate
таallocatable
; - вказівник
pointer
та атрибутtarget
для типу, на який вказує вказівник,— для полегшення створення та операцій з динамічними структурами даних; - нові оператори порівняння
<
,<=
,==
,/=
,>
,>=
; - структуровані циклічні конструкції
do i = x,y,z ... end do
зend do
, а неcontinue
для завершення циклу,cycle
таexit
для контролю та виходу з ітерацій циклу; циклиdo while () ... end do
, необмежені цикли у форміdo ... end do
без лічильника; select case ... end select
для багатоходового вибору;sequence
інструкцію для контролю запису на фізичний носій об'єктів похідних типів, якщо такі об'єкти знаходяться в інструкціяхequivalence
таcommon
;- конструкцію
where () ... elsewhere ... end where
для полегшення маніпуляцій з масивами; - специфікації точності обчислень під контролем користувача;
- нові та вдосконалені вбудовані процедури (понад 100 нових функцій та підпрограм);
На відміну від попередніх версій, з версії стандарту Фортран 90 не було видалено жодного елементу, однак багато оголосили застарілими: нецілі лічильники в конструкціях циклів, завершення циклу з допомогою визначеної мітки, спільні continue
для вкладених do
циклів, арифметичні конструкції if(x) a,b,c
, інструкцію pause
, assign
.
Fortran 95
Fortran 95 був незначним переглядом попереднього стандарту, переважно для вирішення нагальних питань з практики програмування за допомогою стандарту Fortran 90.
До версії Fortran 95 також було додано розширення:
- з так званого високопродуктивного фортрану (High Performance Fortran):
forall
і вкладені інструкціїwhere
, для полегшення векторизації; pure
і елементарніelemental
процедури;- стандартна ініціалізація за замовчуванням компонентів похідних типів;
- розширено можливості використання виразів ініціалізації;
- доповнили явним роз'ясненням, що пам'ять зайнята динамічними (
allocatable
) масивами автоматично звільняється, коли вони виходять з своєї області видимості; - розширили кількість вбудованих функцій.
Окремі інструкції відзначені у версії Fortran 90 як застарілі, були видалені з версії Fortran 95: цикли з дійсними лічильниками, pause
тощо.
Важливим доповненням до Fortran 95 стала доповідь ISO TR-15581. У цій специфікації визначено розширене використання динамічних (allocatable
) масивів, ще до наявності повністю сумісних компіляторів для версії Fortran 2003. Додали можливість для динамічних масивів бути компонентами похідних типів, в списках формальних параметрів процедур, а також як значення, що повертаються функцією.
Ще одним важливим доповненням до Fortran 95 була технічна доповідь ISO TR-15580: з обробкою винятків роботи з рухомою комою, неофіційно відомий як IEEE TR. В цій специфікації визначено також повну підтримку IEEE арифметики з рухомою комою. Fortran 95 також додав два додаткові модулі для підтримки рядків змінної довжини (Varying character strings (ISO/IEC 1539-2 : 2000)) та умовної компіляції (Conditional compilation — ISO/IEC 1539-3 : 1998).
Fortran 2003
Fortran 2003 став одним з основних переглядів, що додав багато нових можливостей.
Основні поліпшення для нової версії стандарту:
- покращення для похідних типів — додано параметризовані похідні типи (з допомогою вхідних параметрів типу
kind
, таlen
); - покращено контроль доступності;
- поліпшено структури конструкторів та введено явні деструктори з допомогою
final
; - додано зв'язування модульних процедур до оголошених в похідному типі процедур та операторів (перевантаження та створення нових операторів) у вигляді
=>
; - додано узагальнені ідентифікатори-назви
generic
для зв'язаних процедур-методів похідного типу (поліморфних для різних типів вхідних параметрів); - додано явні атрибути
pass
таnopass
для керування передачі вказівника на об'єкт в прив'язаних до типу процедур, можливість керувати видимістю (private
,public
) окремих компонентів типу — як видимістю компонентів з даними так і видимістю прив'язаних процедур (слід однак мати на увазі, що видимість і доступність типів, компонент типів, об'єктів та змінних в фортрані заснована на модулях/субмодулях, а не на похідних типах, як в багатьох інших ОО-мовах); - об'єктно-орієнтоване програмування — розширення типу і успадкування (за допомогою
extends
) та заборона за потреби переозначення зв'язаних до батьківського типу процедур (ключове словоnon_overridable
), поліморфізм типів (class
, необмежений поліморфний специфікаторclass(*)
, конструкціїselect type ... end select
, та вбудовані функціїsame_type_as
,extends_type_of
), відкладене зв'язування (deffered
) та абстрактні типи (abstract
), динамічне виділення пам'яті для типів та прив'язаних до типу процедур; - покращення маніпуляцій з даними — динамічне виділення пам'яті для компонентів типів, автоматичне виділення пам'яті для динамічних масивів під час присвоєння, перевиділення(перенесення) пам'яті для динамічної змінної (з допомогою підпрограми
move_alloc
); - блок для скороченого іменування довгих виразів
associate ... end associate
; - атрибут
volatile
; - явні специфікації типу в конструкторах масивів;
- удосконалення вказівників
pointer
; - введення вказівників на модульні процедури, вказівників на процедури як компонент похідних типів (procedure pointer components дозволяють реалізувати динамічне зв'язування (ручну динамічну диспетчеризацію) процедур-методів в об'єкті-примірнику похідного типу в часі виконання), розширені вирази для ініціалізації, і покращення вбудованих процедур;
- внесення концепції вбудованих модулів (
intrinsic
), а також самі модулі, напр —iso_fortran_env
; - видимість модульних об'єктів — додано
protected
для видимості модульних об'єктів, додано можливість перейменовувати (невбудовані) об'єкти і сутності модуля (об'єкти даних, похідні типи, інтерфейсні блоки, процедури, узагальнені ідентифікатори та групи списків імен) в специфікаторіuse
, додано твердженняimport
для контролю видимості модульних об'єктів в тіліinterface ... end interface
; - операції читання/запису — асинхронна передача в інструкціях читання/запису (
asynchronous='yes'
) та для оголошених змінних, потоковий доступ, визначені користувачем операції для похідних типів, контроль за округленням в специфікаціїformat
, іменовані константи для відкритих файлових потоків, інструкціяflush
для завершення запису з буферів, регуляризація ключових слів та доступ до повідомлень про помилки; - визначені користувачем операції читання/запису для похідних типів (англ. User-Defined Derived Type Input/Output або UDTIO), що дозволяють розробнику деталізувати, як похідний тип читається з файла та записується в файл з допомогою вбудованих інструкцій
read
таwrite
. Технічно це задається зв'язуванням узагальнених та прив'язаних до типу процедур-інструкційgeneric :: read(formatted) =>X
,generic :: write(formatted)=>Y
,generic :: read(unformatted) => X
,generic :: write(unformatted) => Y
з приватними підпрограмами X та Y з визначеним інтерфейсомX(dtv, unit, iotype, v_list, iostat, iomsg)
; - підтримка IEEE із рухомою комою і обробка винятків (включаючи TR 15580) у вбудованому модулі
ieee_arithmetic
(нові типи, та нові функціїieee_support_underflow_control
,ieee_get_underflow_mode
,ieee_set_underflow_mode
, та багато ін.); - взаємодія з мовою програмування C з допомогою вбудованого модуля
iso_c_binding
, де оголошені іменовані константи для kind параметрів більшості типів мови C (c_int
,c_short
,c_long
,c_long_long
та всі інші цілі типи,c_signed_char
,c_size_t
,c_float
,c_double
,c_long_double
,c_float_complex
,c_double_complex
,c_long_double_complex
,c_bool
,c_char
, а такожc_null_char
,c_backspace
,c_form_feed
,c_new_line
,c_carriage_return
,c_horizontal_tab
,c_vertical_tab
), для вказівників та їх нульових значень (c_ptr
,c_funptr
,c_null_ptr
,c_null_funptr
), а також додаткові процедури (c_loc
,c_funloc
,c_associated
,c_f_pointer
,c_f_procpointer
); додано атрибутbind(c)
для модульних змінних та похідних типів, щоб вони могли бути сумісними зі структурами в мові C; - підтримка інтернаціоналізації: доступ до ISO 10646 4-байтових символів і вибір десяткового знаку чисел під час форматованого читання/запису (
selected_char_kind
); - введення констант в двійковій
b'10001'
, вісімковійo'345'
, та шістнадцятковійz'1234abcd'
системі числення як аргументів до вбудованих функцій (int(),real(),cmplx(),dble()
); - введення квадратних дужок
[...]
як альтернативу для ініціалізації масивів з допомогою конструктора(/.../)
; - розширена інтеграція з основною операційною системою — доступ до аргументів командного рядка, змінні оточення, та повідомлення про помилки процесора з вбудованого модуля
iso_fortran_env
(input_unit
,output_unit
,error_unit
,iostat_end
,iostat_eor
,numeric_storage_size
,character_storage_size
,file_storage_size
), а також додано вбудовані функціїcommand_argument_count
,get_command
,get_command_argument
,get_environment_variable
;
Важливим доповненням у версії Fortran 2003 стала доповідь ISO TR-19767: про розширення модулів в Фортрані. Ця доповідь внесла додатковий submodule
що дозволяє визначення і реалізацію модулів, які можуть описуватись частинами в окремих блоках програми, і дозволяє покращити архітектуру великих бібліотек, полегшує публікацію інтерфейсів, а також запобігає каскадній компіляції.
Fortran 2008
Стандарт ISO / IEC 1539-1:2010, неофіційно відомий як Fortran 2008, було затверджено голосуванням у вересні 2010. Як і Fortran 95, це незначне оновлення, включає роз'яснення та поправки до Fortran 2003, але також додає кілька нових можливостей:
submodule
— замінили ISO / IEC TR 19767:2005;- Coarray Fortran (CAF) — вбудований в мову синтаксис для паралельних обчислень;
- конструкція
do concurrent
для розпаралелювання циклів без взаємозалежностей; - атрибут
contiguous
для масивів, які розміщені безперервно одним шматком в оперативній пам'яті та вказівників, котрі на такі масиви вказують і функціюis_contiguous
; - конструкція
block
, всередині якої можна оголошувати нові змінні з локальною межею видимості і котрі можуть бути вкладеними; - рекурсивні динамічні компоненти похідних типів;
- внутрішні вкладені процедури можуть використовуватись як аргументи в інших процедурах
- доступ до дійсної та уявної частини комплексних чисел в «стилі ООП» з допомогою псевдокоманд
%re
та%im
; - створення нової динамічної змінної в
allocate (b, mold=a)
копіюючи розмірність та тип іншої змінної, але без копіювання значень з допомогою нового специфікатораmold
додатково до вже наявногоsource
; також ці специфікатори дозволяється використовувати для одночасного створення кількох змінних; - автоматичне виділення пам'яті змінних під час операції присвоєння, які раніше були задекларовані як
allocatable
; - рекурсивні операції вводу/виводу для будь-яких файлів (на відміну від стандарту 2003, де це дозволялось тільки для внутрішніх файлів)
- специфікатор
newunit
для інструкціїopen
, який автоматично виділяє унікальне ціле число-ідентифікатор для операцій читання та запису; - новий універсальний дескриптор формату
g0.x
- нові вбудовані функції — математичні (
acosh
,asinh
,atanh
,bessel_j0
,bessel_j1
,bessel_jn
,bessel_y0
,bessel_y1
,bessel_yn
,erf
,erc
,erf_scaled
,gamma
,log_gamma
,hypot
,norm2
), маніпуляції з бітами (bge
,bgt
,ble
,blt
,dshiftl
,dshiftr
,iall
,iany
,iparity
,leadz
,popcnt
,poppar
,trailz
,maskl
,masr
,merge_bits
,shiftl
,shiftr
), для паралельної роботи з комасивами (atomic_define
,atomic_ref
,image_index
,lcobound
,num_images
,this_image
,ucobound
), для взаємодії з операційною системою та запуску її командexecute_command_line
, для пошуку в масивахfindloc
, для отримання розміру об'єктів в пам'ятіstorage_size
, - розширення модуля
iso_fortran_env
з допомогою додаткових процедурcompiler_version
таcompiler_options
, які дають за потреби інформацію про компілятор та його опції під час фази компіляції - в модулі
iso_c_binding
доданоc_sizeof
— відповідає операторуsizeof
в мові C.
Остаточний проєкт міжнародного стандарту (Final Draft international Standard — FDIS) наводиться в документі N1830, та технічні доповнення N1903 та N1958. Важливим розширенням до Fortran 2008 стало ISO Technical Specification (TS) 29113 щодо взаємодії Фортрану з мовою C, який був представлено ISO в травні 2012 на затвердження. Специфікація додає підтримку доступу до дескриптора масиву з мови C і дозволяє не звертати уваги на тип і ранг аргументів.
Fortran 2018
Робота над наступним стандартом тривала понад 8 років. 1 грудня 2012 затверджено й опубліковано «ISO/IEC TS 29113:2012» Technical Specification (TS29113) щодо взаємодії Фортрану з мовою C, 19 листопада 2015 затверджено й опубліковано «ISO/IEC TS 18508:2015 Information technology — Additional Parallel Features in Fortran» щодо розпаралелювання за допомогою комасивів (TS18508). Офіційне оприлюднення стандарту Fortran 2018, ISO/IEC 1539:2018 відбулося з кількамісячним запізненням 2 грудня 2018 року.
Додано такі удосконалення до цього стандарту:
- Значно розширено сумісність мови Fortran з мовою C у зворотному напрямку. Для цього компілятор супроводжується вихідним файлом
ISO_Fortran_binding.h
котрий значним чином розширено у новому стандарті і містить визначення та прототипи, що дозволяють функціям C працювати з об’єктами мови Fortran, і отримувати доступ до всіх їх властивостей. Для цього до файлу додано коди атрибутівCFI_attribute_pointer
,CFI_attribute_allocatable
,CFI_attribute_other
, також типCFI_dim_t
таCFI_type_struct
, що сумісний з похідними типами мови Fortran. Також доданоCFI_MAX_RANK
,CFI_VERSION
та цілий ряд макросів для типів мови C але з точки зору мови Fortran. Додано також функціїCFI_establish
,CFI_setpointer
,CFI_allocate
,CFI_deallocate
, функції для секцій (перерізів) масивівCFI_section
,CFI_select_part
, і функцію адресаціїCFI_address
. Крім того додано функцію перевірки масиву на суцільністьCFI_is_contiguous
та цілий ряд константних кодів для позначення помилок.c_ptrdiff_t
тип додано в модульiso_c_binding
для використання в якості параметра типу, щоб забезпечити взаємодію з типомptrdiff_t
. - Додано поняття передбачуваного рангу
assumed rank
для полегшення взаємодії з функціями C, які були написані для аргументів будь-якого рангу. Фіктивний аргумент, який не є масивом і не має атрибутаvalue
, може бути оголошений з передбачуваним рангом із синтаксисом(..)
Щоб процедура Fortran могла визначити ранг, додано нову внутрішню функціюrank(a)
. Для виконання альтернативного коду в залежності від фактичного рангу об’єкта з припущеним рангом надається конструкціяselect rank .. end select
з селекторамиrank (scalar-int-constant-expr )
,rank (*)
чиrank default
. Додано поняття передбачуваного типуassumed type
, щоб функція C могла приймати аргумент будь-якого типу. Масив із передбачуваним рангом може мати атрибут неперервностіcontiguous
. - Асинхронний атрибут
asynchronous
розширено з застосування вводу-виводу для випадків, що виконується іншими способами, ніж Fortran (напр. MPI). - Значно розширено можливості паралельного програмування з допомогою комасивів. Поняття команди/колективу
team
було введено, щоб дозволити виконувати самостійно окремі набориimages
. Для цього можна використовувати новий типteam_type
із внутрішнього модуляiso_fortran_env
. Створення нової командиteam
задається інструкцієюform team
для вибраних зображень. Зміна команди відбувається з допомогою блоку інструкційchange team .. end team
- Константу
stat_failed_image
додано до модуляiso_fortran_env
, щоб позначати чи отримувати стан про зображенняimage
в станіfailed
. Термінactive
додано для зображенняimage
, яке не знаходиться ані в стані помилки, ані зупинки. - Поняття подій
event
були введені, щоб дозволити не виконувати інструкції до тих пір, поки одна або кілька дій не будуть виконані з іншими зображеннями. Запис про події зберігається у скалярному масиві розширюваного типуevent_type
із внутрішнього модуляiso_fortran_env
і відомий тепер якevent
-змінна . Зображення виконуєevent wait
, якщо йому потрібно затримати інструкції виконання для інших зображень. Кожен викликevent post
має відповідний викликevent wait
, що включає одну й ту саму зміннуevent
. - Для синхронізації було введено
sync team
, щоб дозволити синхронізацію вteam
предка, не виходячи за межі блокуchange team
- Додано внутрішні функції
get_team
,team_number
, а функціїimage_index
,num_images
,this_image
тепер мають три форми аргументів - Внутрішня функція
move_alloc
тепер не єpure
, якщо її аргументи є масивами. - Інструкція
fail image
змушує виконуване зображення отримати статусfailed
. Також додано нові внутрішні процедури для ідентифікації невдалих (failed
) та зупинених (stopped
) зображень:failed_images([ team, kind])
,stopped_images([ team, kind])
,image_status(image[, team])
- Додано внутрішні підпрограми
co_broadcast
,co_max
,co_min
,co_sum
,co_reduce
для виконання колективних операцій над усіма зображеннями команди - Додано дев’ять атомарних підпрограм, і дві старі отримали додатковий аргумент:
atomic_add
,atomic_and
,atomic_or
,atomic_xor
,atomic_fetch_add
,atomic_fetch_and
,atomic_fetch_or
,atomic_fetch_xor
,atomic_cas
- Для відповідності новому стандарту IEEE для арифметики з рухомою комою ISO/IEC/IEEE 60559:2011 було внесено велику кількість змін до внутрішніх вбудованих модулів
ieee_arithmetic
,ieee_exceptions
таieee_features
. - Змінено доступність за замовчуванням для об'єктів, до яких здійснюється доступ із модулів. Розширено можливості посилання на властивість об’єкта у константних виразах. Додано універсальні дескриптори форматування виводу
d0.d, e0.d, es0.d, en0.d, g0.d and ew.de0
Додано нову елементарну внутрішню функціюout_of_range
, щоб перевірити чи дійсне/ціле значення можна безпечно перетворити на інший дійсний чи цілийtype
таkind
. Додано нову трансформаційну внутрішню функціюreduce
для звичайного масиву, яка відповідає колективній підпрограміco_reduce
для комасивів . Додано внутрішню функціюcoshape
. - У Fortran 2008 були виявлені проблеми із використанням підпрограми генератора випадкового числа
random_number
. Fortran 2018 вимагає, щоб кожне зображення мало свійseed
для ефективності, і для управління ініціалізацієюseed
було додано внутрішню підпрограмуrandom_init
- Вираз імпорту, що використовується у вбудованій підпрограмі або конструкції блоку для управління асоціацією, тепер має нові форми:
import, only: import-name-list
,import, none
,import, all
- Видалено застарілу інструкцію
arithmetic if
Особливості та можливості
Можливості та переваги походять зі сфери застосування цієї мови (наука, інженерія, та високошвидкісні, паралельні обчислення):
- проста у використанні, стандартизована мова (граматика і синтаксис наближені до англійської мови та математичних формул);
- багато загальних операцій організовано на вищому рівні, ніж це зроблено в C чи C++, і це дає можливість писати коротший і зрозуміліший код;
- рядки символів це об'єкти першого класу і операції з рядками символів є надзвичайно простими і зрозумілими;
- операції введення/виведення простіші і організовані переважно як інструкції а не як процедури чи функції;
- використання модулів та інтерфейсів дозволяє кращу діагностику на етапі компіляції;
- менше використання вказівників у коді та високорівневий доступ до пам'яті роблять код безпечнішим;
- вказівники впроваджені таким чином, що компілятору надзвичайно просто ідентифікувати їх і неправильне їхнє використання;
- мало «винятків з правил» чи непередбачуваної поведінки компіляторів відповідно до стандарту;;
- в середньому гарна діагностика від компіляторів, тому початківець отримує багато підказок
- операції з комплексними числами та числами підвищеної точності;
- багато вбудованих функцій з автоматичним вибором точності та типу (такі функції дуже добре оптимізуються);
- вбудована підтримка операцій з багатомірними масивами як ціле, і з вибірками (окремо, і в інструкціях, напр. вибору
select case
); - підтримка одного рівня «вкладених функцій» (англ. nested function) за допомогою
contains
; - індекси масивів можуть бути будь-які цілі числа (від'ємні також);
- дуже гарна підтримка операцій читання/запису (форматованого, асинхронного та ін);
- спеціальний синтаксис для розпаралелювання обчислень за допомогою комасивів Coarray Fortran;
- стандартна (найшвидша) передача змінних за посиланням (by reference) як параметрів у функціях та підпрограмах;
- краща (загалом) оптимізація коду, що позитивно впливає на швидкодію програм та більш оптимізовані математичні обчислення;
- порядок математичних операцій визначено абсолютно точно і також контролюється дужками;
- нечутливість до регістру дозволяє уникати помилок при неправильному записі «КоНстаНт» та «ЗміНниХ»;
- всі слова мови ключові, але не зарезервовані, що додає певний додатковий простір вибору назв змінних;
- принцип «одна інструкція на рядок коду» загалом додає стабільності програмам (однак можна використовувати крапку з комою для запису двох і більше інструкцій в рядку);
- Перевантаження стандартних операторів та розширення набору операторів за допомогою створення нових дозволяє писати програми максимально наближеними до складних математичних формул.
Основні можливості об'єктно-орієнтованого програмування додали до стандарту Fortran 90. Починаючи зі стандарту Fortran 2003, мова отримала повний набір можливостей, що дозволяють класифікувати її як об'єктно-орієнтовану мову програмування: інкапсуляцію та модульність; успадкування; прив'язані до типів процедури; поліморфізм; вказівники на процедури; . Також сучасний стандарт частково дозволяє використовувати функційну парадигму програмування з допомогою pure
та elemental
функцій, рекурсії та функцій вищого порядку (як аргумент, результат та з одним рівнем вкладених функцій),- однак без замикань (closures), анонімних функцій (лямбда-функцій) та [en].
Компілятори
Основні, широковідомі компілятори, та такі, що розвиваються:
- GNU gfortran
- Intel ifort
- NAG Fortran Compiler
- Silverfrost FTN95 для Windows
- Oracle f90 (раніше входив до Sun Studio)
- MS/Compaq/Dec FORTRAN
- IBM XL Fortran
- Open64 Fortran
- fortran
- PathScale Fortran Compiler
Всі названі компілятори значно відрізняються між собою рівнем підтримки сучасних стандартів фортрану. Деякі з них зупинилися на версії Fortran 90, чи Fortran 95, а деякі завершують імплементацію нововведень останніх стандартів Fortran 2003/2008 (GNU gfortran, INTEL ifort, PGI pgfortran, NAG Fortran Compiler). Більшість з цих компіляторів є комерційними, однак GNU gfortran, та Open64 випускаються під публічними відкритими ліцензіями. В листопаді 2015 NVIDIA, Національна Адміністрація ядерної безпеки США (NNSA) та інші три національні лабораторії оголосили про початок розробки нового відкритого компілятора Фортран для суперкомп'ютерів на базі архітектури LLVM
Бібліотеки
Фортран дозволяє скористатись дуже багатьма зразками наявного сумісного і перевіреного коду різноманітних математичних бібліотек, а також спеціалізованого коду з усіх галузей науки та техніки. Дуже широко розвинутими є напрямки математичних бібліотек та спеціалізовані алгоритми з чисельних методів. Найбільш відомі загальні математичні бібліотеки для роботи в Fortran це комерційні , , IMSL, та з публічними ліцензіями: netlib.org, TOMS алгоритми, BLAS, LAPACK, , , GSL разом з FGSL, SPHEREPACK, FISHPACK90, FFTPACK5, та ін.
Проблеми
Більшу частину коду на фортрані почали розробляти ще до затвердження стандарту Fortran 90 і тому він часто містить в собі всі недоліки попередніх стандартів (фіксований код, нестандартні розширення, погану структурованість, незрозумілі назви змінних, статичне виділення пам'яті, проблеми з багатонитковою безпекою та інше). Дуже мало старих бібліотек переписувалось за новими стандартами. Додавати такий код в сучасні проєкти не проблема, але проблеми часто виникають, коли в коді цих бібліотек необхідно щось змінити.
В фортрані майже відсутні бібліотеки з узагальненими алгоритмами для роботи з різноманітними типами даних. Також немає достатньої кількості зразкового коду, що використовує об'єктно-орієнтовану модель, шаблони проєктування та роботу з узагальненими типами даних. Звичайно це пояснюється низькою потребою в такому коді в тих галузях, де використовується Фортран.
Сумісність
Зі стандартом 2003—2008 значно покращилась сумісність та можливість взаємодії бібліотек та програм на C та Фортрані. Тому на даний час можна безпосередньо писати звичайний інтерфейс для використання потрібних бібліотек, що написані мовою C. Це використовується наприклад в FGSL — інтерфейсі до GNU Scientific Library. В деяких випадках можна згенерувати такий інтерфейс автоматично. Багато фірм-розробників компіляторів додають також інші нестандартні додаткові функції: в gfortran — у вигляді GNU extension функцій, або ж як в intel ifort у вигляді додаткового модуля-бібліотеки «intel portability library», котра підключається з допомогою інструкції USE IFLPORT.
Графічні інтерфейси
Для програмування графічних інтерфейсів на Фортрані також можна виділити кілька відомих бібліотек, що дозволяють відносно швидку реалізацію ГІК, чи візуалізувати дані у вигляді різноманітних графіків: , , , , , , , f90gl, JAPI, , g2, , f03gl, gnufor2, gnuplotfortran, ogpf.
Автоматизовані CASE-засоби розробки ПЗ на Fortran
- рефакторинг коду — CamFort, PlusFORT, Photran
- статичний аналіз — Forcheck, PlusFORT, SciTools Understand Fortran, Cleanscape FortranLint, ftnchek
- UML інструменти: ForUML
Інтегровані середовища розробки для Fortran
Розробку ПЗ на Fortran підтримують наступні ІСР: Eclipse з встановленим Eclipse Parallel Tools Platform (PTP), Code::Blocks, NetBeans, Geany, Oracle Developer Studio, від Approximatrix, IntelliJ IDEA за наявності додатка, Atom з додатком ide-fortran, та інші.
Критика
- Критика, пов'язана з незнанням сучасних стандартів Фортрану
Спеціалісти, котрі стикалися з ним кілька десятків років тому, тобто щонайбільше зі стандартом Fortran 77 уявляють Фортран кодом у фіксованому форматі зі скороченими (чи обрізаними) іменами змінних, з неявною типізацією, статичним виділенням пам'яті та надзвичайно перевантаженим використанням інструкції безумовного переходу goto
. Незважаючи на те, що такий код дійсно підтримується майже всіма компіляторами, в сучасному Фортрані це архаїзм і більше не використовується в нових проєктах.
- Критика та суперечки щодо того, яка мова програмування (точніше компілятор) дає більш оптимізований за швидкодією код
Внаслідок довготривалого розвитку та орієнтації мови Фортран на чисельне математичне програмування, компілятори мають дуже високий рівень оптимізації. Тому дискусія зводиться переважно до суперечки: швидше C чи Фортран. Компілятори для програми на з використанням шаблонів та метапрограмування можуть також позмагатися у швидкодії з Фортраном, однак зневадження коду на C++, що використовує такий підхід та супроводження і модифікація є надзвичайно складними і затратними. Загалом швидкодія програм написаних на Фортрані та на C є приблизно однакова.
- Критика пов'язана з неправильною інтерпретацією сфери застосування
Фортран має достатньо вузьку нішу застосування, що часто використовується критиками при порівнянні з іншими мовами широкого профілю такими як C чи C++. Однак Фортран не призначено для системного чи низькорівневого програмування.
- Критика (справедлива) про недоліки мови Фортран та компіляторів
- Немає бібліотек з універсальними алгоритмами для роботи зі складними структурами даних на кшалт STL чи Boost в . Всі відомі та широковживані контейнери (дерева, черги, купи, таблиці, стеки, зв'язані списки ітд.) винаходяться щоразу майже заново.
- Недостатня підтримка основними компіляторами останнього стандарту
- В стандарті мови відсутні деякі відомі з інших мов вбудовані прості типи, наприклад беззнакові цілі (невід'ємні) числа, а це зазвичай ускладнює створення алгоритмів з бітовою арифметикою.
- Узагальнене програмування для хоча і є в стандарті, але на практиці реалізація виявляється складною. Шаблони для різних типів, як в C++ відсутні. Відсутність механізму використання шаблонів у Фортрані порівняно з C++ є однією з основних вад в контексті використання мови в об'єктно-орієнтованому програмуванні.
- Компілятори загалом несумісні з ABI (англ. Application Binary Interface) тобто на рівні двійкового коду, а це ускладнює поширення готових бібліотек.
- Немає звичного вбудованого механізму обробки винятків, як в інших мовах і тому неможливо реагувати програмно на виняткові ситуації. Існує підтримка винятків для IEEE арифметики з рухомою комою та для інструкцій
read
іwrite
. - Дещо обмежене поняття вказівника — наприклад для створення масиву вказівників потрібно використовувати окремий похідний тип з компонентом-вказівником всередині і потім створювати масив таких об'єктів-вказівників.
- Ієрархічна модель простору імен (по аналогії до
namespace
в C++) — у Фортрані відсутня і до версії Fortran 2008 це створювало незручності для організації ієрархії коду та її компіляції. Зазвичай перший рівень простору імен забезпечувався модулями з певним рівнем видимості для змінних (вживаючи відповідні інструкціїprivate
чиpublic
для певних змінних) або ж обмежуючи видимість сутностей в модулі за допомогоюuse module_name, only: some_variable
. Популярним також було безпосереднє додавання префіксів для кожної змінної в певному модулі, чи створення нового модуляzz_module_name
в котрому робили перейменування всіх видимих змінних:use module_name, x=>zz_x
. Ієрархію простору імен можна також симулювати декларуванням похідних типів, котрі в свою чергу містять наступні типи, однак такий спосіб не вирішує повністю проблем розділення видимості (наприклад при розпаралелюванні програми з такими типами). Починаючи зі стандарту Fortran 2008, задача локалізації видимості об'єктів та змінних навіть в межах одного модуля вирішується з використанням ієрархії на основіsubmodule
, оскільки інші субмодулі певного модуля типово не мають доступу до об'єктів, які оголошені локально в кожному з цих субмодулів. Субмодуль може мати тільки один предок-модуль та ієрархію предків-субмодулів. Використовуючи видимість та ієрархію за допомогою субмодулів двох окремих модулів можна легко добратись навіть перехресно до об'єктів та сутностей, оголошених в кожному з цих модулів, — субмодуль модуля А може використовувати об'єкт з модуля Б, а субмодуль модуля Б в свою чергу використовує об'єкт модуля А (що без субмодулів явно заборонено і викликає помилку циркулярної взаємозалежності модулів А та Б під час компіляції). - Код на Фортрані, хоча й в меншій мірі, але як і в C чи , може містити серйозні уразливості щодо безпеки, які не завжди виявляють компілятори: переповнення цілочисельного буферу, завислі вказівники та ін.
Приклади
Програма ілюструє динамічне виділення пам'яті та операції з масивами; необхідно відзначити відсутність явних циклів та математичні операції з масивами як ціле. Цей приклад обчислює середнє арифметичне з даних, введених інтерактивно:
program average ! обчислення середнього арифметичного для заданих чисел ! якщо немає вводу, повертаємо нуль ! така поведінка обрана для спрощення коду implicit none real, dimension(:), allocatable :: points integer :: number_of_points real :: average_points=0., positive_average=0., negative_average=0. write (*,*) "Input number of points to average:" read (*,*) number_of_points allocate (points(number_of_points)) write (*,*) "Enter the points to average:" read (*,*) points ! Обчислити середнє if (number_of_points > 0) average_points = sum(points) / number_of_points ! Зараз середнє для додатних чи від'ємних чисел if (count(points > 0.) > 0) then positive_average = sum(points, points > 0.) / count(points > 0.) end if if (count(points < 0.) > 0) then negative_average = sum(points, points < 0.) / count(points < 0.) end if deallocate (points) ! вивести результат в терміналі write (*,'(a,g12.4)') 'Average = ', average_points write (*,'(a,g12.4)') 'Average of positive points = ', positive_average write (*,'(a,g12.4)') 'Average of negative points = ', negative_average end program average
Наступна програма використовує можливості розпаралелювання з допомогою комасивів (використовуються можливості з TS18508):
program hello_world implicit none character(len=20) :: name[*] ! скалярний комасив, одне name для кожного image ! тобто: "name" це локальна змінна а "name[<index>]" надає доступ ! до копії цієї змінної в конкретному image; "name[this_image()]" те ж саме, що і "name". ! взаємодія з користувачем в image 1; виконання всіх інших проходить без переривання. if (this_image() == 1) then write(*,'(a)',advance='no') 'enter your name: ' read(*,'(a)') name end if ! розсилання інформації в змінній name з image 1 всім іншим відображенням call co_broadcast(name,source_image=1) ! виведення з усіх відображень виконуються в довільному порядку, але кожна інструкція write завершується повністю write(*,'(3a,i0)') 'hello ',trim(name),' from image ', this_image() end program hello_world
Гумор
Впродовж багатьох років існування та розвитку в розробників стали поширеними саркастичні жарти та специфічний фольклор щодо Фортрану.
- Відомий експерт професор Едсгер Дейкстра 1975 сказав: «Фортран страждає від дитячої хвороби — на даний час вже існує майже 20 років і є безнадійно неадекватний для розробки будь-якої комп'ютерної програми, котра вам спаде на думку сьогодні: він занадто незграбний, занадто ризикований і обходиться занадто дорого у використанні». А також: «У старі добрі часи фізики відтворювали експерименти інших фізиків, просто щоб бути впевненими. Сьогодні вони вчепилися за Фортран, бо можуть просто поділитися один з одним програмами, включно з усіма помилками в коді».
- Знавець Unix i BSD, Дон Сілей, (англ. Donn Seeley) написав роздуми на тему: «Як не писати на Фортрані будь-якою мовою програмування». Як наслідок, набув значного поширення вислів «ви можете програмувати на Фортрані, використовуючи будь-яку мову».
- Кен Томпсон у статті «Reflections on Trusting Trust» сказав: «Фортран вибирають з тієї самої причини, з якої є популярними змагання з бігу зі зв'язаними ногами».
- В Sun FORTRAN Reference Manual стверджувалось: «систематичне відокремлення слів прогалинами стало загальною звичкою близько десятого століття нашої ери і це тривало приблизно до 1957 року, коли в мові FORTRAN відмовилися від цієї практики».
- Алан Перліс: «FORTRAN — не квітка, а бур'ян: витривалий, іноді цвіте, але виростає в кожному комп'ютері»; «ви можете виміряти перспективність програміста, дізнаючись про його ставлення до (дивної) триваючої життєздатності мови FORTRAN»; «хоча китайці повинні обожнювати APL, вони вкладають свої гроші чомусь у ФОРТРАН»; «протягом багатьох століть навіть древні індіанці різних племен розробили спільну мову жестів для спілкування та пояснення явищ, що являють певний обопільний інтерес. Програмісти з різних племен (FORTRAN, LISP, Алгол, SNOBOL та інших) могли б також навчитись якоїсь однієї мови, яка б не вимагала від них возити за собою шкільну дошку на своїх поні, щоб порозумітися».
- Стівен Фейнер (англ. Steven Feiner): «ви можете сказати, як далеко нам ще потрібно пройти, якщо FORTRAN — це зараз у нас мова для суперкомп'ютерів.»
- Unix програма fortune видає таку «мудрість»: «комп'ютер без COBOL'у та FORTRAN'у — це як шматочок шоколаду без кетчупу та гірчиці»
- Під час засідання комітету затвердження стандарту FORTRAN 77 була внесена технічна пропозиція під назвою «Літера О розглядається як небезпечна». В ньому містилось пояснення, що оскільки літера О подібна до цифри 0, то необхідно заборонити вживання літери О в наступному стандарті в іменах змінних та видалити її з дозволених символів. Це допоможе уникати помилок, а також сприятиме кращій структуризації програм (роблячи неможливим використання горезвісного
goto
). Небезпечну інструкціюformat
теж буде нейтралізовано. Відзначалося, що це «може зробити деякі наявні програми неробочими», але більшість з них «ймовірно, були несумісними зі стандартом так чи інакше ще раніше.» - В «FORTRAN manual for Xerox computers» був такий абзац: «Основною метою інструкції
data
є називання констант: замість посилання щоразу на π як +3,141592653589793 змінній π може бути надане це значення і використовуватись на заміну числової форми постійно. Це також спрощує модифікацію програми в тому випадку, коли значення π раптом зміниться». - FORTRAN — це не мова програмування. Це спосіб перетворити мейнфрейм, що коштує багато мільйонів, на програмований науковий калькулятор за 50$.
Примітки
- До версії Fortran 90 всі ключові слова мали писатися великими літерами. Починаючи з версії Fortran 90 назву мови FORTRAN офіційно почали писати як Fortran.
- Найбільш відомий комплекс програм для моделювання та прогнозу погоди у відкритому доступі: The Weather Research and Forecasting (WRF) Model (National Center for Atmospheric Research, USA) [ 17 червня 2015 у Wayback Machine.](англ.)
- The NAS Parallel Benchmarks (NPB) [ 29 грудня 2016 у Wayback Machine.] від NASA
- CPU™ 2006[недоступне посилання з липня 2019]
- McCracken, Daniel D. (1965). Preface. A Guide to FORTRAN IV Programming. New York: Wiley. с. v. ISBN .
- огляд нових можливостей Fortran 2003 на офіційному сайті робочої групи Фортран. Fortran Working Group (WG5) [ 12 вересня 2017 у Wayback Machine.]. Завантажити як PDF file [ 15 січня 2018 у Wayback Machine.]
- N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology — Programming languages — Fortran — Part 1: Base language ftp://ftp.nag.co.uk/sc22wg5/N1801-N1850/N1836.pdfPDF ( 101 KiB)
- John Reid, The new features of Fortran 2008, JKR Associates, UK. May 6, 2009[недоступне посилання з липня 2019](англ.)
- станом на квітень 2016 кілька комерційних компіляторів (Cray, Intel) підтримували це нововведення, також створено суспільний проєкт з відкритим джерельним кодом OpenCoarrays [ 26 квітня 2016 у Wayback Machine.], який забезпечує підтримку двійкового інтерфейсу (ABI) coarray Fortran (CAF) в GFortran
- N1830, Information technology — Programming languages — Fortran — Part 1: Base language http://j3-fortran.org/doc/standing/links/007.pdfPDF ( 7.9 MiB)
- Technical corrigendum 1 [недоступне посилання з липня 2019]
- Technical corrigendum 2[недоступне посилання з липня 2019]
- ISO page to ISO/IEC DTS 29113, Further Interoperability of Fortran with C [ 17 березня 2012 у Wayback Machine.]
- Draft of the Technical Specification (TS) 29113 ftp://ftp.nag.co.uk/sc22wg5/N1901-N1950/N1917.pdfPDF ( 312 kiB)
- . Архів оригіналу за 23 квітня 2011. Процитовано 3 липня 2012.
- . Архів оригіналу за 24 лютого 2017. Процитовано 22 серпня 2013.
- TS 29113 Further Interoperability of Fortran with C[недоступне посилання з липня 2019]
- TS18508, Additional Parallel Features in Fortran — ISO чорновик (2013)[недоступне посилання з червня 2019], N2074, вільнодоступний чорновик з iso.org, (2015)
- . Архів оригіналу за 7 грудня 2019. Процитовано 13 листопада 2017.
- Doctor Fortran in «One Door Closes», 21 вересня 2015 [ 5 вересня 2015 у Wayback Machine.](англ.)
- . Архів оригіналу за 1 грудня 2017. Процитовано 24 січня 2019.
- Reid J. The new features of Fortran 2018 [ 11 серпня 2021 у Wayback Machine.](англ.)
- Damian Rouson et al. This Isn't Your Parents' Fortran: Managing C++ Objects with Modern Fortran, Comput. Sci. Eng. 14, 46 (2012)
- Damian Rouson, Jim Xia, Xiaofeng Xu, Scientific Software Design: The Object-Oriented Way, Cambridge University Press, 2011 [ 13 травня 2016 у Wayback Machine.]
- Magne Haveraaen et al. High-Performance Design Patterns for Modern Fortran, Scientific Programming, Volume 2015 (2015), див. також 1, 2
- Ed Akin, Object-Oriented Programming Via Fortran 90/95, Cambridge University Press, 2003 [ 13 травня 2016 у Wayback Machine.]
- Markus A., Metcalf w.M. Modern Fortran in practice, Cambridge University Press 2012 [ 13 травня 2016 у Wayback Machine.]
- набір компіляторів (включаючи nvfortran) та спеціалізованих бібліотек, які дозволяють розробникам програмувати для HPC платформ, базованих на GPUs та CPUs. Раніше це був набір компіляторів від Portland Group, Inc, однак в червні 2013 NVIDIA Corporation придбала цю компанію і зараз це окремий підрозділ NVIDIA. З того часу набір компіляторів поширювався у версії "PGI Community Edition", включно з компілятором фортрану. Зараз NVIDIA HPC SDK [ 26 листопада 2020 у Wayback Machine.] надається NVIDIA під безкоштовною ліцензією.
- Compiler Support for the Fortran 2003 Standard [ 3 вересня 2013 у Wayback Machine.](англ.)
- Compiler Support for the Fortran 2008 Standard [ 3 вересня 2013 у Wayback Machine.](англ.)
- . Архів оригіналу за 12 серпня 2013. Процитовано 19 липня 2013.
- . Архів оригіналу за 9 серпня 2013. Процитовано 19 липня 2013.
- . Архів оригіналу за 9 серпня 2013. Процитовано 19 липня 2013.
- (PDF). Архів оригіналу (PDF) за 23 квітня 2015. Процитовано 2 листопада 2015.
- NNSA, national labs team with Nvidia to develop open-source Fortran compiler technology [ 22 квітня 2016 у Wayback Machine.](англ.)
- (PDF). Архів оригіналу (PDF) за 15 серпня 2017. Процитовано 15 серпня 2017.
- . Архів оригіналу за 19 травня 2017. Процитовано 15 серпня 2017.
- наприклад Computer Physics Communications Program Library [ 8 лютого 1997 у Wayback Machine.] — колекція понад 3000 програм журналу Computer Physics Communications з обчислювальної фізики та хімії
- Список чисельних бібліотек на фортрані (англ.)
- Netlib колекція математичнного ПЗ [ 21 квітня 2016 у Wayback Machine.] (більшість з якого написано фортраном)
- Software associated with papers published in the Transactions on Mathematical Software [ 17 квітня 2016 у Wayback Machine.](англ.)
- . Архів оригіналу за 10 січня 2010. Процитовано 6 квітня 2016.
- . Архів оригіналу за 24 лютого 2011. Процитовано 6 квітня 2016.
- . Архів оригіналу за 21 квітня 2016. Процитовано 6 квітня 2016.
- . Архів оригіналу за 17 квітня 2016. Процитовано 6 квітня 2016.
- . Архів оригіналу за 20 серпня 2012. Процитовано 28 липня 2012.
- . Архів оригіналу за 27 березня 2016. Процитовано 6 квітня 2016.
- . Архів оригіналу за 19 березня 2016. Процитовано 6 квітня 2016.
- . Архів оригіналу за 27 березня 2016. Процитовано 6 квітня 2016.
- . Архів оригіналу за 30 січня 2016. Процитовано 6 квітня 2016.
- . Архів оригіналу за 5 березня 2022. Процитовано 5 квітня 2022.
- . Архів оригіналу за 11 червня 2018. Процитовано 10 травня 2015.
- . Архів оригіналу за 25 березня 2017. Процитовано 28 липня 2012.
- . Архів оригіналу за 18 травня 2015. Процитовано 9 травня 2015.
- Intel Fortran QuickWin library [ 9 серпня 2016 у Wayback Machine.] Графічна бібліотека поставляється з (раніше Compaq Visual Fortran) тільки для MS Windows.
- Winteracter Winteracter [ 31 липня 2016 у Wayback Machine.] Графічний інтерфейс і засоби візуалізації. Мультиплатформне власницьке ПЗ.
- DISLIN [ 22 липня 2016 у Wayback Machine.] закрита графічна бібліотека для відображення даних у вигляді графіків, гістограм, кругових діаграм, 3D-кольорових ділянок, поверхонь, контурів і карт, створена в Max Planck Institute for Solar System Research. Мультиплатформна і для багатьох компіляторів. Безкоштовна для некомерційного використання.
- GINO [ 2 вересня 2016 у Wayback Machine.] Графічний інтерфейс і засоби візуалізації. Мультиплатформне власницьке ПЗ.
- PLPLOT [ 30 січня 2022 у Wayback Machine.] Бібліотека для наукових графіків. Мультиплатформна, вільне програмне забезпечення під ліцензією LGPL.
- GrWin [ 16 липня 2016 у Wayback Machine.] Графічна бібліотека для Windows, безкоштовна для некомерційного використання.
- f90gl [ 27 липня 2016 у Wayback Machine.] Надає Fortran 90 інтерфейс до OpenGL, GLU і GLUT. Мультиплатформна. Працює з багатьма компіляторами. Ліцензія: суспільне надбання.
- JAPI [ 6 жовтня 2016 у Wayback Machine.] Графічна бібліотека на JAVA і C, що забезпечує доступ до JAVA AWT Toolkit для C, Fortran, Pascal і Basic. Мультиплатформна, вільне програмне забезпечення під ліцензією LGPL.
- PGPLOT [ 1 липня 2012 у Wayback Machine.] Графічна бібліотека, мультиплатформна, безкоштовна для некомерційного використання.
- g2 graphical library [ 17 серпня 2012 у Wayback Machine.] Мультиплатформна графічна бібліотека, вільне програмне забезпечення під ліцензією LGPL.
- MathGL [ 11 липня 2016 у Wayback Machine.] Мультиплатформна графічна бібліотека, надає інтерфейс для багатьох мов програмування, зокрема для Фортрану, вільне програмне забезпечення
- f03gl [ 13 травня 2016 у Wayback Machine.] Бібліотека забезпечує інтерфейс версії Fortran 2003 до бібліотеки OpenGL, GLU і GLUT, вільне ПЗ, ліцензія GPL3
- gnufor2 [ 22 липня 2016 у Wayback Machine.] — модуль, написаний версією Fortran 90, надає інтерфейс до Gnuplot ПЗ
- gnuplotfortran [ 17 серпня 2020 у Wayback Machine.] бібліотека надає також контроль сеансу Gnuplot з коду на Fortran 95.
- ogpf [ 17 червня 2018 у Wayback Machine.] бібліотека для сеансу Gnuplot з коду на Fortran 2003/2008.
- . Архів оригіналу за 24 вересня 2016. Процитовано 23 вересня 2016.
- . Архів оригіналу за 24 вересня 2016. Процитовано 23 вересня 2016.
- . Архів оригіналу за 24 вересня 2016. Процитовано 23 вересня 2016.
- . Архів оригіналу за 16 вересня 2016. Процитовано 23 вересня 2016.
- . Архів оригіналу за 16 вересня 2016. Процитовано 23 вересня 2016.
- . Архів оригіналу за 24 вересня 2016. Процитовано 23 вересня 2016.
- . Архів оригіналу за 17 серпня 2016. Процитовано 23 вересня 2016.
- ForUML на github.com [ 12 червня 2018 у Wayback Machine.], ForUML [ 24 вересня 2016 у Wayback Machine.]
- . Архів оригіналу за 19 грудня 2021. Процитовано 5 квітня 2022.
- . Архів оригіналу за 12 червня 2018. Процитовано 17 травня 2019.
- див. однак: BlockIt and PyF95++: Fortran templating and pre-processing [ 2 березня 2016 у Wayback Machine.](англ.)
- Fortran Wiki, Submodules [ 1 серпня 2016 у Wayback Machine.](англ.)
- Document: WG 23/N0442, ISO/IEC JTC1/SC22/WG5 N1965, Fortran Annex to TR 24772, Guidance to Avoiding Vulnerabilities in Programming Languages through Language Selection and Use, ISO/IEC JTC1/SC22/WG5 [ 8 березня 2018 у Wayback Machine.](англ.)
- Dijkstra, Edsger W. (18 червня 1975), (англ.), архів оригіналу за 22 червня 2012, процитовано 28 липня 2012
- . Архів оригіналу за 22 липня 2012. Процитовано 28 липня 2012.
Стандарти мови Fortran
- Ansi x3.9-1966. (PDF). American National Standards Institute. Архів оригіналу (PDF) за 15 травня 2011. Процитовано 15 травня 2016. (FORTRAN 66)
- Ansi x3.9-1978. . American National Standards Institute. Архів оригіналу за 29 жовтня 2013. Процитовано 15 травня 2016. (FORTRAN 77)
- ANSI X3.198-1992 (R1997) / ISO/IEC 1539:1991. (PDF). American National Standards Institute / ISO/IEC. Архів оригіналу (PDF) за 5 листопада 2020. Процитовано 16 травня 2019. (Fortran 90)
- ISO/IEC 1539-1:1997. (PDF). Архів оригіналу (PDF) за 18 серпня 2011. Процитовано 15 травня 2016. (Fortran 95)
- ISO/IEC 1539-1:2004. Information technology – Programming languages – Fortran – Part 1: Base language (PDF). (Fortran 2003)
- ISO/IEC 1539-1:2010 (Final Draft International Standard). (PDF). Архів оригіналу (PDF) за 20 січня 2020. Процитовано 28 серпня 2019.(Fortran 2008)
Література
- Ray, Subrata (2019), Fortran 2018 With Parallel Programming (англійська) (вид. 1), CRC Press, с. 654, ISBN
- Chapman, Stephen J. (2017), Fortran for Scientists and Engineers (англійська) (вид. 4), McGraw-Hill, с. 1056, ISBN
- Metcalf, M.; Reid, J.; Cohen, M. (2011), Modern Fortran Explained, Numerical Mathematics and Scientific Computation (англійська) (вид. 4), Oxford University Press, с. 512, ISBN
- Clerman, Norman S.; Spector, Walter (2011), Modern Fortran: Style and Usage (англійська) (вид. 1), Cambridge University Press, с. 352, ISBN
- Markus, Arjen (2012), Modern Fortran in Practice (англійська) (вид. 1), Cambridge University Press, с. 272, ISBN
- Chapman, Stephen J. (2007), Fortran 95/2003 for Scientists and Engineers (англійська) (вид. 3), McGraw-Hill, с. 974, ISBN
- Adams, Jeanne C.; Brainerd, Walter S.; Hendrickson, Richard A.; Maine, Richard E.; Martin, Jeanne T. (2008), The Fortran 2003 Handbook: The Complete Syntax, Features and Procedures (англійська) (вид. 1), Springer, с. 712, ISBN
- Chivers, Ian; Sleightholme, Jane (2015), Introduction to Programming With Fortran: With Coverage of Fortran 90, 95, 2003, 2008 and 77 (англійська) (вид. 3), Springer International Publishing, с. 674, ISBN
- Hanson Richard J.; Hopkins Tim (21 November 2013), Numerical Computing with Modern Fortran (англійська) , SIAM, ISBN
- Brainerd W.S. (2009), Guide to Fortran 2003 programming (англійська) (вид. 1), Springer, с. 367, ISBN
- Brainerd W.S. (2015), Guide to Fortran 2008 Programming (англійська) (вид. 2), Springer, с. 408, ISBN
- Немнюгин, Сергей; Стесик, Ольга (2004), Современный Фортран. Самоучитель (російська) (вид. 1), BHV, с. 496, ISBN
Див. також
- — Інтегроване середовище розробки для мови Fortran на основі відкритої IDE Eclipse
- 9548 Фортран — астероїд, названий на честь мови програмування.
Примітки
- Photran — An Integrated Development Environment and Refactoring Tool for Fortran. Архів оригіналу за 25 серпня 2011. Процитовано 28 липня 2012.
- Lutz D. Schmadel. Dictionary of Minor Planet Names. — 5-th Edition. — Berlin, Heidelberg : Springer-Verlag, 2003. — 992 (XVI) с. — .
Посилання
- Фортран-Wiki [ 21 березня 2012 у Wayback Machine.] (англ.)
- Збірка рецептів та порад для написання програм на сучасному Фортрані [ 23 липня 2012 у Wayback Machine.] (англ.)
- Зразки коду на Фортрані від rosettacode.org [ 4 липня 2012 у Wayback Machine.] (англ.)
- Колекція програм та бібліотек на фортрані для чисельного аналізу [ 3 вересня 2012 у Wayback Machine.] (англ.)
- Корисні додатки, бібліотеки та програми від Алана Міллера на Фортрані [ 27 липня 2012 у Wayback Machine.] (англ.)
- Зібрання корисних посилань на ресурси по Фортрану та компіляторах [ 14 серпня 2012 у Wayback Machine.] (англ.)
- Зібрання корисних посилань на ресурси по Фортрану: Michel Olagnon's Fortran 90 List [ 9 квітня 2011 у Wayback Machine.] (англ.)
- (англ.)
- (англ.)
- Fortran 90 Reference Card [ 3 січня 2012 у Wayback Machine.] (англ.)
- Илья Чернов, Fortran-2008. Язык для эффективных расчетов. Palmarium Academic Publishing, (2012), 124 c [ 28 червня 2015 у Wayback Machine.] (рос.)
- Ед Йоргенсен, Вступ до програмування за допомогою Fortran 95/2003/2008 [ 20 травня 2016 у Wayback Machine.] (англ.)
- PGI Fortran Reference Guide — Посібник від Portland Group для Fortran 77-2003 [ 23 листопада 2015 у Wayback Machine.] (англ.)
- Intel® Fortran Compiler 16.0 Update 2 User and Reference Guide — Опис мови Fortran 90-2008 та компілятора ifort від Intel [ 10 квітня 2016 у Wayback Machine.] (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Fortran Fortran ranishe FORTRAN skorochennya vid The IBM Mathematical Formula Translating System tobto Sistema translyaciyi matematichnih formul vid IBM imperativna mova programuvannya zagalnogo priznachennya yaka osoblivo pidhodit dlya intensivnih chiselnih ta naukovih obchislen Rozroblena korporaciyeyu IBM v 1950 h rokah v universitetskomu mistechku na pivdni San Hose Kaliforniya dlya potreb naukovih ta inzhenernih proyektiv FortranParadigma strukturna imperativna procedurna ob yektno oriyentovana uzagalnena paralelnaData poyavi 1957Tvorci Dzhon BekusRozrobnik Dzhon Bekus i IBMOstannij reliz Fortran 2023 17 listopada 2023 Sistema tipizaciyi statichna Osnovni realizaciyi Absoft Cray GFortran IBM Intel Lahey Fujitsu Pathscale Oracle Visual Fortran ta inshiPid vplivom vidVplinula na ALGOL 58 BASIC C PL I Licenziya MITZvichajni rozshirennya fajliv code f for f90 f95 code Repozitorij vihidnogo kodu github com fortran langVebsajt fortran lang org Mediafajli u Vikishovishi Dosit shvidko Fortran pochav dominuvati v cij galuzi programuvannya i ponad pivstolittya postijno vikoristovuyetsya dlya chiselnogo prognozu pogodi analizu metodom skinchennih elementiv obchislyuvalnoyi gidrodinamiki obchislyuvalnoyi fiziki ta himiyi Ce odna z najbilsh populyarnih mov dlya visokoproduktivnih obchislen a takozh vikoristovuyetsya dlya testuvannya shvidkodiyi najpotuzhnishih u sviti superkomp yuteriv Fortran vvazhayetsya pershoyu movoyu programuvannya sho shiroko vikoristovuvalas ta pidtrimuvala najriznomanitnishi komp yuterni arhitekturi Rozvitok Fortranu vidbuvavsya paralelno rannij evolyuciyi tehnologiyi kompilyatoriv i bagato dosyagnen v galuzi teoriyi ta rozrobki kompilyatoriv buli specialno motivovani neobhidnistyu stvorennya efektivnogo kodu dlya program movoyu Fortran Istoriya rozvitkuFortran yak mova rozvivalas stabilno i navit konservativno Kozhen nastupnij standart buv stvorenij pislya trivaloyi diskusiyi mizh virobnikami kompilyatoriv ta zacikavlenimi ekspertami Tomu kozhna z versij sho rozvivalasya zazvichaj dodavala tilki rozshirennya movi odnochasno zberigayuchi pri comu sumisnist z poperednimi versiyami odnak buli i vinyatki Versiya Fortran 77 dodala pidtrimku dlya obrobki simvolnih danih operaciyi z masivami i modulne programuvannya z yavilisya u versiyi Fortran 90 funkcijne programuvannya u versiyi Fortran 95 chastkovo ob yektno oriyentovane programuvannya ta uzagalnene programuvannya u versiyi Fortran 2003 Uzagalnene paralelne programuvannya z dopomogoyu co arrays sho vikoristovuye arhitekturno nezalezhnij ta blizkij dlya fortranu sintaksis dlya paralelnoyi dekompoziciyi danih ta vikonannya instrukcij bulo standartizovano u versiyi Fortran 2008 Do 1960 versiyi movi Fortran buli dostupni dlya komp yuteriv IBM modelej 709 650 i 7090 Zrostannya populyarnosti movi sponukalo virobnikiv komp yuteriv zabezpechiti kompilyatorami Fortranu svoyi mashini do 1963 isnuvalo ponad 40 riznih kompilyatoriv Fortranu Do poyavi diskiv ta fajliv tekstovih redaktoriv ta terminaliv programi najchastishe vvodili za dopomogoyu perfokart na klaviaturi perforatora na 80 znakiv Koloda kart podavalasya v specialnij en dlya kompilyaciyi Tomu originalnij kod Fortranu mav fiksovanij format zavdovzhki 80 simvoliv stovpchikiv Ne pidtrimuvalas rekursiya ta pidprogrami FORTRAN Naprikinci 1953 Dzhon V Bekus zaproponuvav svoyemu kerivnictvu v IBM rozrobiti bilsh praktichnu alternativu movi programuvannya dlya yihnoyi EOM IBM 704 Do komandi stvorennya movi Fortran uvijshli takozh programisti Richard Goldberg Sheldon Best Garlan Gerrik Piter Sheridan Roj Natt Robert Nelson Irvin Ciller Loyis Gejbt Devid Sejr Proyekt specifikaciyi sistemi bulo zaversheno do seredini 1954 Pershij posibnik dlya movi Fortran z yavivsya v zhovtni 1956 a pershij kompilyator u kvitni 1957 Ce buv pershij u sviti optimizuvalnij kompilyator oskilki kliyenti pogodzhuvalisya vikoristovuvati movi programuvannya visokogo rivnya tilki yaksho kompilyator zmozhe generuvati kod z produktivnistyu blizkoyu do kodu yakij mozhe napisati dosvidchenij programist bezposeredno na asembleri Mova bula pozitivno prijnyata vchenimi ta inzhenerami dlya napisannya program kotri stvorili neobhidni umovi ta rinok dlya stvorennya kompilyatoriv yaki mozhut generuvati bilsh shvidkij i efektivnij kod Dodannya kompleksnih chisel zrobilo movu osoblivo zruchnoyu takozh dlya tehnichnih ta inzhenernih program takih yak elektrotehnika FORTRAN II FORTRAN II vid IBM z yavivsya 1958 Osnovnimi polipshennyami buli pidtrimka procedurnogo programuvannya tobto pidprogrami i funkcij z parametrami sho peredavalisya za posilannyam by reference Dlya pidprogram nadali mozhlivist dostupu do globalnih zminnih FORTRAN III 1958 IBM rozrobila FORTRAN III sho dozvolyav pisati na asembleri u funkciyah cyu versiyu ne vipustili na rinok yak gotovij produkt FORTRAN dlya IBM 1401 Dlya mashini IBM 1401 bulo stvoreno innovacijnij na toj chas 63 prohidnij kompilyator Fortranu rozmirom 8 kilobajt Vin zberigav kod programi v pam yati ta odnochasno postupovo translyuvav yiyi mashinnoyu movoyu ce buv pershij u sviti interpretator movi programuvannya Nastupnij interpretator dlya inshoyi movi Paskal zʼyavivsya 1970 FORTRAN IV Pochinayuchi z 1961 pislya vivchennya potreb kliyentiv kompaniya IBM rozpochala rozrobku versiyi FORTRAN IV v yakij buli vidaleni mashinnozalezhni osoblivosti FORTRAN II taki yak READ INPUT TAPE i dodano bagato novih elementiv takih yak logichnij tip danih logichni operaciyi ta logichnij IF yak alternativu arifmetichnomu IF FORTRAN IV vipustili 1962 spochatku dlya komp yuteriv IBM 7030 Stretch a potim i dlya IBM 7090 ta IBM 7094 Do 1965 FORTRAN IV buv standartom vidpovidno do American Standards Association X3 4 3 FORTRAN Working Group FORTRAN 66 Pislya rishennya Amerikanskoyi asociaciyi standartiv ANSI zaraz sformuvati komitet dlya rozrobki amerikanskogo standartu Fortranu v berezni 1966 Fortran 66 faktichno stav pershoyu standartnoyu dlya industriyi versiyeyu Fortranu Fortran 66 mav duzhe bagato udoskonalen programni odinici golovna programa subroutine function ta block data tipi danih integer real double precision complex ta logical instrukciyi common dimension i equivalence instrukciya data dlya specifikaciyi pochatkovih znachen zminnih funkciyi intrinsic ta external tobto bibliotechni instrukciyi goto viznachenij goto ta obchislyuvanij goto logichnij ta arifmetichnij trivariantnij if cikl do klyuchovi slova dlya poslidovnih operacij vvodu vivodu read write backspace rewind ta endfile instrukciya dlya formatovanogo vvodu vivodu format instrukciyi call return pause ta stop konstanti Gollerita u virazah data ta format a takozh yak argumenti dlya procedur identifikatori z dovzhinoyu do 6 simvoliv mozhlivist zapisu komentariv u kodi FORTRAN 77 Pislya oprilyudnennya standartu FORTRAN 66 virobniki kompilyatoriv prodovzhuvali na prohannya koristuvachiv dodavati rozshirennya dlya movi sho zmusilo ANSI 1969 roku pochati pereglyad standartu zatverdzhenogo 1966 roku Ostatochni proyekti nastupnogo standartu zaversheno 1977 roku oficijne zatverdzhennya standartu FORTRAN 77 vidbulosya v kvitni 1978 roku Novij standart FORTRAN 77 dodavav nizku istotnih osoblivostej dlya virishennya bagatoh nedolikiv FORTRAN 66 bloki if end if z opcionalnimi else else if sho znachno polegshuvali strukturne programuvannya rozshirennya cikliv z parametrichnimi virazami negativnim inkrementom ta nulovim ciklom do instrukciyi open close ta inquire dlya roboti z fajlami a takozh pryamij dostup do fajliv viraz implicit ta simvolnij tip danih character z velikoyu kilkistyu funkcij dlya nogo parameter dlya deklaruvannya konstant save dlya postijnih lokalnih zminnih zagalni imena dlya vbudovanih funkcij U cij versiyi standartu okremi instrukciyi buli vilucheni abo ogolosheni zastarilimi tobto takimi sho budut vilucheni v nastupnih versiyah movi Fortran 90 Zi znachnim zapiznennyam yak nastupnik FORTRAN 77 vidomij zaraz yak Fortran 90 poperednya nazva Fortran 8X buv vipushenij yak standart ISO 1991 i standart ANSI 1992 Ce buv dosit masshtabnij pereglyad poperednogo standartu kotrij takozh vrahovuvav novi tendenciyi ta rozvitok inshih mov Bulo dodano bezlich novih funkcij shob vidobraziti znachni zmini v praktici programuvannya nefiksovana forma zapisu dzherelnogo kodu instrukciyi mozhut buti rozmisheni de zavgodno v ryadku amp oznachaye prodovzhennya instrukciyi v nastupnomu ryadku rozdilyaye kilka instrukcij v odnomu ryadku a takozh zapis klyuchovih sliv malimi literami identifikatori zminnih dovzhinoyu do 31 simvola vbudovani odnoryadkovi komentari operaciyi nad masivami yak cile ta nad vibirkami masiviv sho znachno sproshuvalo matematichni ta inzhenerni obchislennya vvedeno ponyattya masivu bez elementiv nulovogo rozmiru rekursivni proceduri pidprogrami ta funkciyi moduli module end module dlya grupuvannya pov yazanih procedur i danih shob zrobiti yih dostupnimi dlya inshih chastin programi vklyuchayuchi mozhlivist obmezhuvati dostup tilki do pevnih chastin modulya z dopomogoyu private public znachno pokrashivsya mehanizm peredachi argumentiv atributi optional intent in out inout sho dozvolyalo pereviryati interfejsi funkcij ta procedur pid chas kompilyaciyi atribut intrinsic dodano takozh opciyu result dlya ogoloshennya nazvi zminnoyi sho povertayetsya funkciyeyu peredbacheno stvorennya interfejsiv interface end interface koristuvachem dlya uzagalnenih procedur perevantazhennya operatoriv pohidni abstraktni tipi danih type end type z operatorom viboru komponenta novij tip sintaksisu dlya deklaraciyi tipu danih ta inshih atributiv zminnih kind ta dodatkovo len dlya simvolnogo character vbudovanogo tipu save ta imenovanih konstant parameter dinamichne vidilennya pam yati za dopomogoyu atributiv allocate deallocate ta allocatable vkazivnik pointer ta atribut target dlya tipu na yakij vkazuye vkazivnik dlya polegshennya stvorennya ta operacij z dinamichnimi strukturami danih novi operatori porivnyannya lt lt gt gt strukturovani ciklichni konstrukciyi do i x y z end do z end do a ne continue dlya zavershennya ciklu cycle ta exit dlya kontrolyu ta vihodu z iteracij ciklu cikli do while end do neobmezheni cikli u formi do end do bez lichilnika select case end select dlya bagatohodovogo viboru sequence instrukciyu dlya kontrolyu zapisu na fizichnij nosij ob yektiv pohidnih tipiv yaksho taki ob yekti znahodyatsya v instrukciyah equivalence ta common konstrukciyu where elsewhere end where dlya polegshennya manipulyacij z masivami specifikaciyi tochnosti obchislen pid kontrolem koristuvacha novi ta vdoskonaleni vbudovani proceduri ponad 100 novih funkcij ta pidprogram Na vidminu vid poperednih versij z versiyi standartu Fortran 90 ne bulo vidaleno zhodnogo elementu odnak bagato ogolosili zastarilimi necili lichilniki v konstrukciyah cikliv zavershennya ciklu z dopomogoyu viznachenoyi mitki spilni continue dlya vkladenih do cikliv arifmetichni konstrukciyi if x a b c instrukciyu pause assign Fortran 95 Fortran 95 buv neznachnim pereglyadom poperednogo standartu perevazhno dlya virishennya nagalnih pitan z praktiki programuvannya za dopomogoyu standartu Fortran 90 Do versiyi Fortran 95 takozh bulo dodano rozshirennya z tak zvanogo visokoproduktivnogo fortranu High Performance Fortran forall i vkladeni instrukciyi where dlya polegshennya vektorizaciyi pure i elementarni elemental proceduri standartna inicializaciya za zamovchuvannyam komponentiv pohidnih tipiv rozshireno mozhlivosti vikoristannya viraziv inicializaciyi dopovnili yavnim roz yasnennyam sho pam yat zajnyata dinamichnimi allocatable masivami avtomatichno zvilnyayetsya koli voni vihodyat z svoyeyi oblasti vidimosti rozshirili kilkist vbudovanih funkcij Okremi instrukciyi vidznacheni u versiyi Fortran 90 yak zastarili buli vidaleni z versiyi Fortran 95 cikli z dijsnimi lichilnikami pause tosho Vazhlivim dopovnennyam do Fortran 95 stala dopovid ISO TR 15581 U cij specifikaciyi viznacheno rozshirene vikoristannya dinamichnih allocatable masiviv she do nayavnosti povnistyu sumisnih kompilyatoriv dlya versiyi Fortran 2003 Dodali mozhlivist dlya dinamichnih masiviv buti komponentami pohidnih tipiv v spiskah formalnih parametriv procedur a takozh yak znachennya sho povertayutsya funkciyeyu She odnim vazhlivim dopovnennyam do Fortran 95 bula tehnichna dopovid ISO TR 15580 z obrobkoyu vinyatkiv roboti z ruhomoyu komoyu neoficijno vidomij yak IEEE TR V cij specifikaciyi viznacheno takozh povnu pidtrimku IEEE arifmetiki z ruhomoyu komoyu Fortran 95 takozh dodav dva dodatkovi moduli dlya pidtrimki ryadkiv zminnoyi dovzhini Varying character strings ISO IEC 1539 2 2000 ta umovnoyi kompilyaciyi Conditional compilation ISO IEC 1539 3 1998 Fortran 2003 Fortran 2003 stav odnim z osnovnih pereglyadiv sho dodav bagato novih mozhlivostej Osnovni polipshennya dlya novoyi versiyi standartu pokrashennya dlya pohidnih tipiv dodano parametrizovani pohidni tipi z dopomogoyu vhidnih parametriv tipu kind ta len pokrasheno kontrol dostupnosti polipsheno strukturi konstruktoriv ta vvedeno yavni destruktori z dopomogoyu final dodano zv yazuvannya modulnih procedur do ogoloshenih v pohidnomu tipi procedur ta operatoriv perevantazhennya ta stvorennya novih operatoriv u viglyadi gt dodano uzagalneni identifikatori nazvi generic dlya zv yazanih procedur metodiv pohidnogo tipu polimorfnih dlya riznih tipiv vhidnih parametriv dodano yavni atributi pass ta nopass dlya keruvannya peredachi vkazivnika na ob yekt v priv yazanih do tipu procedur mozhlivist keruvati vidimistyu private public okremih komponentiv tipu yak vidimistyu komponentiv z danimi tak i vidimistyu priv yazanih procedur slid odnak mati na uvazi sho vidimist i dostupnist tipiv komponent tipiv ob yektiv ta zminnih v fortrani zasnovana na modulyah submodulyah a ne na pohidnih tipah yak v bagatoh inshih OO movah ob yektno oriyentovane programuvannya rozshirennya tipu i uspadkuvannya za dopomogoyu extends ta zaborona za potrebi pereoznachennya zv yazanih do batkivskogo tipu procedur klyuchove slovo non overridable polimorfizm tipiv class neobmezhenij polimorfnij specifikator class konstrukciyi select type end select ta vbudovani funkciyi same type as extends type of vidkladene zv yazuvannya deffered ta abstraktni tipi abstract dinamichne vidilennya pam yati dlya tipiv ta priv yazanih do tipu procedur pokrashennya manipulyacij z danimi dinamichne vidilennya pam yati dlya komponentiv tipiv avtomatichne vidilennya pam yati dlya dinamichnih masiviv pid chas prisvoyennya perevidilennya perenesennya pam yati dlya dinamichnoyi zminnoyi z dopomogoyu pidprogrami move alloc blok dlya skorochenogo imenuvannya dovgih viraziv associate end associate atribut volatile yavni specifikaciyi tipu v konstruktorah masiviv udoskonalennya vkazivnikiv pointer vvedennya vkazivnikiv na modulni proceduri vkazivnikiv na proceduri yak komponent pohidnih tipiv procedure pointer components dozvolyayut realizuvati dinamichne zv yazuvannya ruchnu dinamichnu dispetcherizaciyu procedur metodiv v ob yekti primirniku pohidnogo tipu v chasi vikonannya rozshireni virazi dlya inicializaciyi i pokrashennya vbudovanih procedur vnesennya koncepciyi vbudovanih moduliv intrinsic a takozh sami moduli napr iso fortran env vidimist modulnih ob yektiv dodano protected dlya vidimosti modulnih ob yektiv dodano mozhlivist perejmenovuvati nevbudovani ob yekti i sutnosti modulya ob yekti danih pohidni tipi interfejsni bloki proceduri uzagalneni identifikatori ta grupi spiskiv imen v specifikatori use dodano tverdzhennya import dlya kontrolyu vidimosti modulnih ob yektiv v tili interface end interface operaciyi chitannya zapisu asinhronna peredacha v instrukciyah chitannya zapisu asynchronous yes ta dlya ogoloshenih zminnih potokovij dostup viznacheni koristuvachem operaciyi dlya pohidnih tipiv kontrol za okruglennyam v specifikaciyi format imenovani konstanti dlya vidkritih fajlovih potokiv instrukciya flush dlya zavershennya zapisu z buferiv regulyarizaciya klyuchovih sliv ta dostup do povidomlen pro pomilki viznacheni koristuvachem operaciyi chitannya zapisu dlya pohidnih tipiv angl User Defined Derived Type Input Output abo UDTIO sho dozvolyayut rozrobniku detalizuvati yak pohidnij tip chitayetsya z fajla ta zapisuyetsya v fajl z dopomogoyu vbudovanih instrukcij read ta write Tehnichno ce zadayetsya zv yazuvannyam uzagalnenih ta priv yazanih do tipu procedur instrukcij generic read formatted gt X generic write formatted gt Y generic read unformatted gt X generic write unformatted gt Y z privatnimi pidprogramami X ta Y z viznachenim interfejsom X dtv unit iotype v list iostat iomsg pidtrimka IEEE iz ruhomoyu komoyu i obrobka vinyatkiv vklyuchayuchi TR 15580 u vbudovanomu moduli ieee arithmetic novi tipi ta novi funkciyi ieee support underflow control ieee get underflow mode ieee set underflow mode ta bagato in vzayemodiya z movoyu programuvannya C z dopomogoyu vbudovanogo modulya iso c binding de ogolosheni imenovani konstanti dlya kind parametriv bilshosti tipiv movi C c int c short c long c long long ta vsi inshi cili tipi c signed char c size t c float c double c long double c float complex c double complex c long double complex c bool c char a takozh c null char c backspace c form feed c new line c carriage return c horizontal tab c vertical tab dlya vkazivnikiv ta yih nulovih znachen c ptr c funptr c null ptr c null funptr a takozh dodatkovi proceduri c loc c funloc c associated c f pointer c f procpointer dodano atribut bind c dlya modulnih zminnih ta pohidnih tipiv shob voni mogli buti sumisnimi zi strukturami v movi C pidtrimka internacionalizaciyi dostup do ISO 10646 4 bajtovih simvoliv i vibir desyatkovogo znaku chisel pid chas formatovanogo chitannya zapisu selected char kind vvedennya konstant v dvijkovij b 10001 visimkovij o 345 ta shistnadcyatkovij z 1234abcd sistemi chislennya yak argumentiv do vbudovanih funkcij int real cmplx dble vvedennya kvadratnih duzhok yak alternativu dlya inicializaciyi masiviv z dopomogoyu konstruktora rozshirena integraciya z osnovnoyu operacijnoyu sistemoyu dostup do argumentiv komandnogo ryadka zminni otochennya ta povidomlennya pro pomilki procesora z vbudovanogo modulya iso fortran env input unit output unit error unit iostat end iostat eor numeric storage size character storage size file storage size a takozh dodano vbudovani funkciyi command argument count get command get command argument get environment variable Vazhlivim dopovnennyam u versiyi Fortran 2003 stala dopovid ISO TR 19767 pro rozshirennya moduliv v Fortrani Cya dopovid vnesla dodatkovij submodule sho dozvolyaye viznachennya i realizaciyu moduliv yaki mozhut opisuvatis chastinami v okremih blokah programi i dozvolyaye pokrashiti arhitekturu velikih bibliotek polegshuye publikaciyu interfejsiv a takozh zapobigaye kaskadnij kompilyaciyi Fortran 2008 Standart ISO IEC 1539 1 2010 neoficijno vidomij yak Fortran 2008 bulo zatverdzheno golosuvannyam u veresni 2010 Yak i Fortran 95 ce neznachne onovlennya vklyuchaye roz yasnennya ta popravki do Fortran 2003 ale takozh dodaye kilka novih mozhlivostej submodule zaminili ISO IEC TR 19767 2005 Coarray Fortran CAF vbudovanij v movu sintaksis dlya paralelnih obchislen konstrukciya do concurrent dlya rozparalelyuvannya cikliv bez vzayemozalezhnostej atribut contiguous dlya masiviv yaki rozmisheni bezperervno odnim shmatkom v operativnij pam yati ta vkazivnikiv kotri na taki masivi vkazuyut i funkciyu is contiguous konstrukciya block vseredini yakoyi mozhna ogoloshuvati novi zminni z lokalnoyu mezheyu vidimosti i kotri mozhut buti vkladenimi rekursivni dinamichni komponenti pohidnih tipiv vnutrishni vkladeni proceduri mozhut vikoristovuvatis yak argumenti v inshih procedurah dostup do dijsnoyi ta uyavnoyi chastini kompleksnih chisel v stili OOP z dopomogoyu psevdokomand re ta im stvorennya novoyi dinamichnoyi zminnoyi v allocate b mold a kopiyuyuchi rozmirnist ta tip inshoyi zminnoyi ale bez kopiyuvannya znachen z dopomogoyu novogo specifikatora mold dodatkovo do vzhe nayavnogo source takozh ci specifikatori dozvolyayetsya vikoristovuvati dlya odnochasnogo stvorennya kilkoh zminnih avtomatichne vidilennya pam yati zminnih pid chas operaciyi prisvoyennya yaki ranishe buli zadeklarovani yak allocatable rekursivni operaciyi vvodu vivodu dlya bud yakih fajliv na vidminu vid standartu 2003 de ce dozvolyalos tilki dlya vnutrishnih fajliv specifikator newunit dlya instrukciyi open yakij avtomatichno vidilyaye unikalne cile chislo identifikator dlya operacij chitannya ta zapisu novij universalnij deskriptor formatu g0 x novi vbudovani funkciyi matematichni acosh asinh atanh bessel j0 bessel j1 bessel jn bessel y0 bessel y1 bessel yn erf erc erf scaled gamma log gamma hypot norm2 manipulyaciyi z bitami bge bgt ble blt dshiftl dshiftr iall iany iparity leadz popcnt poppar trailz maskl masr merge bits shiftl shiftr dlya paralelnoyi roboti z komasivami atomic define atomic ref image index lcobound num images this image ucobound dlya vzayemodiyi z operacijnoyu sistemoyu ta zapusku yiyi komand execute command line dlya poshuku v masivah findloc dlya otrimannya rozmiru ob yektiv v pam yati storage size rozshirennya modulya iso fortran env z dopomogoyu dodatkovih procedur compiler version ta compiler options yaki dayut za potrebi informaciyu pro kompilyator ta jogo opciyi pid chas fazi kompilyaciyi v moduli iso c binding dodano c sizeof vidpovidaye operatoru sizeof v movi C Ostatochnij proyekt mizhnarodnogo standartu Final Draft international Standard FDIS navoditsya v dokumenti N1830 ta tehnichni dopovnennya N1903 ta N1958 Vazhlivim rozshirennyam do Fortran 2008 stalo ISO Technical Specification TS 29113 shodo vzayemodiyi Fortranu z movoyu C yakij buv predstavleno ISO v travni 2012 na zatverdzhennya Specifikaciya dodaye pidtrimku dostupu do deskriptora masivu z movi C i dozvolyaye ne zvertati uvagi na tip i rang argumentiv Fortran 2018 Robota nad nastupnim standartom trivala ponad 8 rokiv 1 grudnya 2012 zatverdzheno j opublikovano ISO IEC TS 29113 2012 Technical Specification TS29113 shodo vzayemodiyi Fortranu z movoyu C 19 listopada 2015 zatverdzheno j opublikovano ISO IEC TS 18508 2015 Information technology Additional Parallel Features in Fortran shodo rozparalelyuvannya za dopomogoyu komasiviv TS18508 Oficijne oprilyudnennya standartu Fortran 2018 ISO IEC 1539 2018 vidbulosya z kilkamisyachnim zapiznennyam 2 grudnya 2018 roku Dodano taki udoskonalennya do cogo standartu Znachno rozshireno sumisnist movi Fortran z movoyu C u zvorotnomu napryamku Dlya cogo kompilyator suprovodzhuyetsya vihidnim fajlom ISO Fortran binding h kotrij znachnim chinom rozshireno u novomu standarti i mistit viznachennya ta prototipi sho dozvolyayut funkciyam C pracyuvati z ob yektami movi Fortran i otrimuvati dostup do vsih yih vlastivostej Dlya cogo do fajlu dodano kodi atributiv CFI attribute pointer CFI attribute allocatable CFI attribute other takozh tip CFI dim t ta CFI type struct sho sumisnij z pohidnimi tipami movi Fortran Takozh dodano CFI MAX RANK CFI VERSION ta cilij ryad makrosiv dlya tipiv movi C ale z tochki zoru movi Fortran Dodano takozh funkciyi CFI establish CFI setpointer CFI allocate CFI deallocate funkciyi dlya sekcij pereriziv masiviv CFI section CFI select part i funkciyu adresaciyi CFI address Krim togo dodano funkciyu perevirki masivu na sucilnist CFI is contiguous ta cilij ryad konstantnih kodiv dlya poznachennya pomilok c ptrdiff t tip dodano v modul iso c binding dlya vikoristannya v yakosti parametra tipu shob zabezpechiti vzayemodiyu z tipom ptrdiff t Dodano ponyattya peredbachuvanogo rangu assumed rank dlya polegshennya vzayemodiyi z funkciyami C yaki buli napisani dlya argumentiv bud yakogo rangu Fiktivnij argument yakij ne ye masivom i ne maye atributa value mozhe buti ogoloshenij z peredbachuvanim rangom iz sintaksisom Shob procedura Fortran mogla viznachiti rang dodano novu vnutrishnyu funkciyu rank a Dlya vikonannya alternativnogo kodu v zalezhnosti vid faktichnogo rangu ob yekta z pripushenim rangom nadayetsya konstrukciya select rank end select z selektorami rank scalar int constant expr rank chi rank default Dodano ponyattya peredbachuvanogo tipu assumed type shob funkciya C mogla prijmati argument bud yakogo tipu Masiv iz peredbachuvanim rangom mozhe mati atribut neperervnosti contiguous Asinhronnij atribut asynchronous rozshireno z zastosuvannya vvodu vivodu dlya vipadkiv sho vikonuyetsya inshimi sposobami nizh Fortran napr MPI Znachno rozshireno mozhlivosti paralelnogo programuvannya z dopomogoyu komasiviv Ponyattya komandi kolektivu team bulo vvedeno shob dozvoliti vikonuvati samostijno okremi nabori images Dlya cogo mozhna vikoristovuvati novij tip team type iz vnutrishnogo modulya iso fortran env Stvorennya novoyi komandi team zadayetsya instrukciyeyu form team dlya vibranih zobrazhen Zmina komandi vidbuvayetsya z dopomogoyu bloku instrukcij change team end team Konstantu stat failed image dodano do modulya iso fortran env shob poznachati chi otrimuvati stan pro zobrazhennya image v stani failed Termin active dodano dlya zobrazhennya image yake ne znahoditsya ani v stani pomilki ani zupinki Ponyattya podij event buli vvedeni shob dozvoliti ne vikonuvati instrukciyi do tih pir poki odna abo kilka dij ne budut vikonani z inshimi zobrazhennyami Zapis pro podiyi zberigayetsya u skalyarnomu masivi rozshiryuvanogo tipu event type iz vnutrishnogo modulya iso fortran env i vidomij teper yak event zminna Zobrazhennya vikonuye event wait yaksho jomu potribno zatrimati instrukciyi vikonannya dlya inshih zobrazhen Kozhen viklik event post maye vidpovidnij viklik event wait sho vklyuchaye odnu j tu samu zminnu event Dlya sinhronizaciyi bulo vvedeno sync team shob dozvoliti sinhronizaciyu v team predka ne vihodyachi za mezhi bloku change team Dodano vnutrishni funkciyi get team team number a funkciyi image index num images this image teper mayut tri formi argumentiv Vnutrishnya funkciya move alloc teper ne ye pure yaksho yiyi argumenti ye masivami Instrukciya fail image zmushuye vikonuvane zobrazhennya otrimati status failed Takozh dodano novi vnutrishni proceduri dlya identifikaciyi nevdalih failed ta zupinenih stopped zobrazhen failed images team kind stopped images team kind image status image team Dodano vnutrishni pidprogrami co broadcast co max co min co sum co reduce dlya vikonannya kolektivnih operacij nad usima zobrazhennyami komandi Dodano dev yat atomarnih pidprogram i dvi stari otrimali dodatkovij argument atomic add atomic and atomic or atomic xor atomic fetch add atomic fetch and atomic fetch or atomic fetch xor atomic cas Dlya vidpovidnosti novomu standartu IEEE dlya arifmetiki z ruhomoyu komoyu ISO IEC IEEE 60559 2011 bulo vneseno veliku kilkist zmin do vnutrishnih vbudovanih moduliv ieee arithmetic ieee exceptions ta ieee features Zmineno dostupnist za zamovchuvannyam dlya ob yektiv do yakih zdijsnyuyetsya dostup iz moduliv Rozshireno mozhlivosti posilannya na vlastivist ob yekta u konstantnih virazah Dodano universalni deskriptori formatuvannya vivodu d0 d e0 d es0 d en0 d g0 d and ew de0 Dodano novu elementarnu vnutrishnyu funkciyu out of range shob pereviriti chi dijsne cile znachennya mozhna bezpechno peretvoriti na inshij dijsnij chi cilij type ta kind Dodano novu transformacijnu vnutrishnyu funkciyu reduce dlya zvichajnogo masivu yaka vidpovidaye kolektivnij pidprogrami co reduce dlya komasiviv Dodano vnutrishnyu funkciyu coshape U Fortran 2008 buli viyavleni problemi iz vikoristannyam pidprogrami generatora vipadkovogo chisla random number Fortran 2018 vimagaye shob kozhne zobrazhennya malo svij seed dlya efektivnosti i dlya upravlinnya inicializaciyeyu seed bulo dodano vnutrishnyu pidprogramu random init Viraz importu sho vikoristovuyetsya u vbudovanij pidprogrami abo konstrukciyi bloku dlya upravlinnya asociaciyeyu teper maye novi formi import only import name list import none import all Vidaleno zastarilu instrukciyu arithmetic ifOsoblivosti ta mozhlivostiMozhlivosti ta perevagi pohodyat zi sferi zastosuvannya ciyeyi movi nauka inzheneriya ta visokoshvidkisni paralelni obchislennya prosta u vikoristanni standartizovana mova gramatika i sintaksis nablizheni do anglijskoyi movi ta matematichnih formul bagato zagalnih operacij organizovano na vishomu rivni nizh ce zrobleno v C chi C i ce daye mozhlivist pisati korotshij i zrozumilishij kod ryadki simvoliv ce ob yekti pershogo klasu i operaciyi z ryadkami simvoliv ye nadzvichajno prostimi i zrozumilimi operaciyi vvedennya vivedennya prostishi i organizovani perevazhno yak instrukciyi a ne yak proceduri chi funkciyi vikoristannya moduliv ta interfejsiv dozvolyaye krashu diagnostiku na etapi kompilyaciyi menshe vikoristannya vkazivnikiv u kodi ta visokorivnevij dostup do pam yati roblyat kod bezpechnishim vkazivniki vprovadzheni takim chinom sho kompilyatoru nadzvichajno prosto identifikuvati yih i nepravilne yihnye vikoristannya malo vinyatkiv z pravil chi neperedbachuvanoyi povedinki kompilyatoriv vidpovidno do standartu v serednomu garna diagnostika vid kompilyatoriv tomu pochatkivec otrimuye bagato pidkazok operaciyi z kompleksnimi chislami ta chislami pidvishenoyi tochnosti bagato vbudovanih funkcij z avtomatichnim viborom tochnosti ta tipu taki funkciyi duzhe dobre optimizuyutsya vbudovana pidtrimka operacij z bagatomirnimi masivami yak cile i z vibirkami okremo i v instrukciyah napr viboru select case pidtrimka odnogo rivnya vkladenih funkcij angl nested function za dopomogoyu contains indeksi masiviv mozhut buti bud yaki cili chisla vid yemni takozh duzhe garna pidtrimka operacij chitannya zapisu formatovanogo asinhronnogo ta in specialnij sintaksis dlya rozparalelyuvannya obchislen za dopomogoyu komasiviv Coarray Fortran standartna najshvidsha peredacha zminnih za posilannyam by reference yak parametriv u funkciyah ta pidprogramah krasha zagalom optimizaciya kodu sho pozitivno vplivaye na shvidkodiyu program ta bilsh optimizovani matematichni obchislennya poryadok matematichnih operacij viznacheno absolyutno tochno i takozh kontrolyuyetsya duzhkami nechutlivist do registru dozvolyaye unikati pomilok pri nepravilnomu zapisi KoNstaNt ta ZmiNniH vsi slova movi klyuchovi ale ne zarezervovani sho dodaye pevnij dodatkovij prostir viboru nazv zminnih princip odna instrukciya na ryadok kodu zagalom dodaye stabilnosti programam odnak mozhna vikoristovuvati krapku z komoyu dlya zapisu dvoh i bilshe instrukcij v ryadku Perevantazhennya standartnih operatoriv ta rozshirennya naboru operatoriv za dopomogoyu stvorennya novih dozvolyaye pisati programi maksimalno nablizhenimi do skladnih matematichnih formul Osnovni mozhlivosti ob yektno oriyentovanogo programuvannya dodali do standartu Fortran 90 Pochinayuchi zi standartu Fortran 2003 mova otrimala povnij nabir mozhlivostej sho dozvolyayut klasifikuvati yiyi yak ob yektno oriyentovanu movu programuvannya inkapsulyaciyu ta modulnist uspadkuvannya priv yazani do tipiv proceduri polimorfizm vkazivniki na proceduri Takozh suchasnij standart chastkovo dozvolyaye vikoristovuvati funkcijnu paradigmu programuvannya z dopomogoyu pure ta elemental funkcij rekursiyi ta funkcij vishogo poryadku yak argument rezultat ta z odnim rivnem vkladenih funkcij odnak bez zamikan closures anonimnih funkcij lyambda funkcij ta en KompilyatoriOsnovni shirokovidomi kompilyatori ta taki sho rozvivayutsya GNU gfortran Intel ifort NAG Fortran Compiler Silverfrost FTN95 dlya Windows Oracle f90 ranishe vhodiv do Sun Studio MS Compaq Dec FORTRAN IBM XL Fortran Open64 Fortran fortran PathScale Fortran Compiler Vsi nazvani kompilyatori znachno vidriznyayutsya mizh soboyu rivnem pidtrimki suchasnih standartiv fortranu Deyaki z nih zupinilisya na versiyi Fortran 90 chi Fortran 95 a deyaki zavershuyut implementaciyu novovveden ostannih standartiv Fortran 2003 2008 GNU gfortran INTEL ifort PGI pgfortran NAG Fortran Compiler Bilshist z cih kompilyatoriv ye komercijnimi odnak GNU gfortran ta Open64 vipuskayutsya pid publichnimi vidkritimi licenziyami V listopadi 2015 NVIDIA Nacionalna Administraciya yadernoyi bezpeki SShA NNSA ta inshi tri nacionalni laboratoriyi ogolosili pro pochatok rozrobki novogo vidkritogo kompilyatora Fortran dlya superkomp yuteriv na bazi arhitekturi LLVMBibliotekiFortran dozvolyaye skoristatis duzhe bagatma zrazkami nayavnogo sumisnogo i perevirenogo kodu riznomanitnih matematichnih bibliotek a takozh specializovanogo kodu z usih galuzej nauki ta tehniki Duzhe shiroko rozvinutimi ye napryamki matematichnih bibliotek ta specializovani algoritmi z chiselnih metodiv Najbilsh vidomi zagalni matematichni biblioteki dlya roboti v Fortran ce komercijni IMSL ta z publichnimi licenziyami netlib org TOMS algoritmi BLAS LAPACK GSL razom z FGSL SPHEREPACK FISHPACK90 FFTPACK5 ta in Problemi Bilshu chastinu kodu na fortrani pochali rozroblyati she do zatverdzhennya standartu Fortran 90 i tomu vin chasto mistit v sobi vsi nedoliki poperednih standartiv fiksovanij kod nestandartni rozshirennya poganu strukturovanist nezrozumili nazvi zminnih statichne vidilennya pam yati problemi z bagatonitkovoyu bezpekoyu ta inshe Duzhe malo starih bibliotek perepisuvalos za novimi standartami Dodavati takij kod v suchasni proyekti ne problema ale problemi chasto vinikayut koli v kodi cih bibliotek neobhidno shos zminiti V fortrani majzhe vidsutni biblioteki z uzagalnenimi algoritmami dlya roboti z riznomanitnimi tipami danih Takozh nemaye dostatnoyi kilkosti zrazkovogo kodu sho vikoristovuye ob yektno oriyentovanu model shabloni proyektuvannya ta robotu z uzagalnenimi tipami danih Zvichajno ce poyasnyuyetsya nizkoyu potreboyu v takomu kodi v tih galuzyah de vikoristovuyetsya Fortran Sumisnist Zi standartom 2003 2008 znachno pokrashilas sumisnist ta mozhlivist vzayemodiyi bibliotek ta program na C ta Fortrani Tomu na danij chas mozhna bezposeredno pisati zvichajnij interfejs dlya vikoristannya potribnih bibliotek sho napisani movoyu C Ce vikoristovuyetsya napriklad v FGSL interfejsi do GNU Scientific Library V deyakih vipadkah mozhna zgeneruvati takij interfejs avtomatichno Bagato firm rozrobnikiv kompilyatoriv dodayut takozh inshi nestandartni dodatkovi funkciyi v gfortran u viglyadi GNU extension funkcij abo zh yak v intel ifort u viglyadi dodatkovogo modulya biblioteki intel portability library kotra pidklyuchayetsya z dopomogoyu instrukciyi USE IFLPORT Grafichni interfejsi Dlya programuvannya grafichnih interfejsiv na Fortrani takozh mozhna vidiliti kilka vidomih bibliotek sho dozvolyayut vidnosno shvidku realizaciyu GIK chi vizualizuvati dani u viglyadi riznomanitnih grafikiv f90gl JAPI g2 f03gl gnufor2 gnuplotfortran ogpf Avtomatizovani CASE zasobi rozrobki PZ na Fortranrefaktoring kodu CamFort PlusFORT Photran statichnij analiz Forcheck PlusFORT SciTools Understand Fortran Cleanscape FortranLint ftnchek UML instrumenti ForUMLIntegrovani seredovisha rozrobki dlya FortranRozrobku PZ na Fortran pidtrimuyut nastupni ISR Eclipse z vstanovlenim Eclipse Parallel Tools Platform PTP Code Blocks NetBeans Geany Oracle Developer Studio vid Approximatrix IntelliJ IDEA za nayavnosti dodatka Atom z dodatkom ide fortran ta inshi KritikaKritika pov yazana z neznannyam suchasnih standartiv Fortranu Specialisti kotri stikalisya z nim kilka desyatkiv rokiv tomu tobto shonajbilshe zi standartom Fortran 77 uyavlyayut Fortran kodom u fiksovanomu formati zi skorochenimi chi obrizanimi imenami zminnih z neyavnoyu tipizaciyeyu statichnim vidilennyam pam yati ta nadzvichajno perevantazhenim vikoristannyam instrukciyi bezumovnogo perehodu goto Nezvazhayuchi na te sho takij kod dijsno pidtrimuyetsya majzhe vsima kompilyatorami v suchasnomu Fortrani ce arhayizm i bilshe ne vikoristovuyetsya v novih proyektah Kritika ta superechki shodo togo yaka mova programuvannya tochnishe kompilyator daye bilsh optimizovanij za shvidkodiyeyu kod Vnaslidok dovgotrivalogo rozvitku ta oriyentaciyi movi Fortran na chiselne matematichne programuvannya kompilyatori mayut duzhe visokij riven optimizaciyi Tomu diskusiya zvoditsya perevazhno do superechki shvidshe C chi Fortran Kompilyatori dlya programi na C z vikoristannyam shabloniv ta metaprogramuvannya mozhut takozh pozmagatisya u shvidkodiyi z Fortranom odnak znevadzhennya kodu na C sho vikoristovuye takij pidhid ta suprovodzhennya i modifikaciya ye nadzvichajno skladnimi i zatratnimi Zagalom shvidkodiya program napisanih na Fortrani ta na C ye priblizno odnakova Kritika pov yazana z nepravilnoyu interpretaciyeyu sferi zastosuvannya Fortran maye dostatno vuzku nishu zastosuvannya sho chasto vikoristovuyetsya kritikami pri porivnyanni z inshimi movami shirokogo profilyu takimi yak C chi C Odnak Fortran ne priznacheno dlya sistemnogo chi nizkorivnevogo programuvannya Kritika spravedliva pro nedoliki movi Fortran ta kompilyatoriv Nemaye bibliotek z universalnimi algoritmami dlya roboti zi skladnimi strukturami danih na kshalt STL chi Boost v C Vsi vidomi ta shirokovzhivani kontejneri dereva chergi kupi tablici steki zv yazani spiski itd vinahodyatsya shorazu majzhe zanovo Nedostatnya pidtrimka osnovnimi kompilyatorami ostannogo standartu V standarti movi vidsutni deyaki vidomi z inshih mov vbudovani prosti tipi napriklad bezznakovi cili nevid yemni chisla a ce zazvichaj uskladnyuye stvorennya algoritmiv z bitovoyu arifmetikoyu Uzagalnene programuvannya dlya hocha i ye v standarti ale na praktici realizaciya viyavlyayetsya skladnoyu Shabloni dlya riznih tipiv yak v C vidsutni Vidsutnist mehanizmu vikoristannya shabloniv u Fortrani porivnyano z C ye odniyeyu z osnovnih vad v konteksti vikoristannya movi v ob yektno oriyentovanomu programuvanni Kompilyatori zagalom nesumisni z ABI angl Application Binary Interface tobto na rivni dvijkovogo kodu a ce uskladnyuye poshirennya gotovih bibliotek Nemaye zvichnogo vbudovanogo mehanizmu obrobki vinyatkiv yak v inshih movah i tomu nemozhlivo reaguvati programno na vinyatkovi situaciyi Isnuye pidtrimka vinyatkiv dlya IEEE arifmetiki z ruhomoyu komoyu ta dlya instrukcij read i write Desho obmezhene ponyattya vkazivnika napriklad dlya stvorennya masivu vkazivnikiv potribno vikoristovuvati okremij pohidnij tip z komponentom vkazivnikom vseredini i potim stvoryuvati masiv takih ob yektiv vkazivnikiv Iyerarhichna model prostoru imen po analogiyi do namespace v C u Fortrani vidsutnya i do versiyi Fortran 2008 ce stvoryuvalo nezruchnosti dlya organizaciyi iyerarhiyi kodu ta yiyi kompilyaciyi Zazvichaj pershij riven prostoru imen zabezpechuvavsya modulyami z pevnim rivnem vidimosti dlya zminnih vzhivayuchi vidpovidni instrukciyi private chi public dlya pevnih zminnih abo zh obmezhuyuchi vidimist sutnostej v moduli za dopomogoyu use module name only some variable Populyarnim takozh bulo bezposerednye dodavannya prefiksiv dlya kozhnoyi zminnoyi v pevnomu moduli chi stvorennya novogo modulya zz module name v kotromu robili perejmenuvannya vsih vidimih zminnih use module name x gt zz x Iyerarhiyu prostoru imen mozhna takozh simulyuvati deklaruvannyam pohidnih tipiv kotri v svoyu chergu mistyat nastupni tipi odnak takij sposib ne virishuye povnistyu problem rozdilennya vidimosti napriklad pri rozparalelyuvanni programi z takimi tipami Pochinayuchi zi standartu Fortran 2008 zadacha lokalizaciyi vidimosti ob yektiv ta zminnih navit v mezhah odnogo modulya virishuyetsya z vikoristannyam iyerarhiyi na osnovi submodule oskilki inshi submoduli pevnogo modulya tipovo ne mayut dostupu do ob yektiv yaki ogolosheni lokalno v kozhnomu z cih submoduliv Submodul mozhe mati tilki odin predok modul ta iyerarhiyu predkiv submoduliv Vikoristovuyuchi vidimist ta iyerarhiyu za dopomogoyu submoduliv dvoh okremih moduliv mozhna legko dobratis navit perehresno do ob yektiv ta sutnostej ogoloshenih v kozhnomu z cih moduliv submodul modulya A mozhe vikoristovuvati ob yekt z modulya B a submodul modulya B v svoyu chergu vikoristovuye ob yekt modulya A sho bez submoduliv yavno zaboroneno i viklikaye pomilku cirkulyarnoyi vzayemozalezhnosti moduliv A ta B pid chas kompilyaciyi Kod na Fortrani hocha j v menshij miri ale yak i v C chi C mozhe mistiti serjozni urazlivosti shodo bezpeki yaki ne zavzhdi viyavlyayut kompilyatori perepovnennya cilochiselnogo buferu zavisli vkazivniki ta in PrikladiPrograma ilyustruye dinamichne vidilennya pam yati ta operaciyi z masivami neobhidno vidznachiti vidsutnist yavnih cikliv ta matematichni operaciyi z masivami yak cile Cej priklad obchislyuye serednye arifmetichne z danih vvedenih interaktivno program average obchislennya serednogo arifmetichnogo dlya zadanih chisel yaksho nemaye vvodu povertayemo nul taka povedinka obrana dlya sproshennya kodu implicit none real dimension allocatable points integer number of points real average points 0 positive average 0 negative average 0 write Input number of points to average read number of points allocate points number of points write Enter the points to average read points Obchisliti serednye if number of points gt 0 average points sum points number of points Zaraz serednye dlya dodatnih chi vid yemnih chisel if count points gt 0 gt 0 then positive average sum points points gt 0 count points gt 0 end if if count points lt 0 gt 0 then negative average sum points points lt 0 count points lt 0 end if deallocate points vivesti rezultat v terminali write a g12 4 Average average points write a g12 4 Average of positive points positive average write a g12 4 Average of negative points negative average end program average Nastupna programa vikoristovuye mozhlivosti rozparalelyuvannya z dopomogoyu komasiviv vikoristovuyutsya mozhlivosti z TS18508 program hello world implicit none character len 20 name skalyarnij komasiv odne name dlya kozhnogo image tobto name ce lokalna zminna a name lt index gt nadaye dostup do kopiyi ciyeyi zminnoyi v konkretnomu image name this image te zh same sho i name vzayemodiya z koristuvachem v image 1 vikonannya vsih inshih prohodit bez pererivannya if this image 1 then write a advance no enter your name read a name end if rozsilannya informaciyi v zminnij name z image 1 vsim inshim vidobrazhennyam call co broadcast name source image 1 vivedennya z usih vidobrazhen vikonuyutsya v dovilnomu poryadku ale kozhna instrukciya write zavershuyetsya povnistyu write 3a i0 hello trim name from image this image end program hello worldGumorVprodovzh bagatoh rokiv isnuvannya ta rozvitku v rozrobnikiv stali poshirenimi sarkastichni zharti ta specifichnij folklor shodo Fortranu Vidomij ekspert profesor Edsger Dejkstra 1975 skazav Fortran strazhdaye vid dityachoyi hvorobi na danij chas vzhe isnuye majzhe 20 rokiv i ye beznadijno neadekvatnij dlya rozrobki bud yakoyi komp yuternoyi programi kotra vam spade na dumku sogodni vin zanadto nezgrabnij zanadto rizikovanij i obhoditsya zanadto dorogo u vikoristanni A takozh U stari dobri chasi fiziki vidtvoryuvali eksperimenti inshih fizikiv prosto shob buti vpevnenimi Sogodni voni vchepilisya za Fortran bo mozhut prosto podilitisya odin z odnim programami vklyuchno z usima pomilkami v kodi Znavec Unix i BSD Don Silej angl Donn Seeley napisav rozdumi na temu Yak ne pisati na Fortrani bud yakoyu movoyu programuvannya Yak naslidok nabuv znachnogo poshirennya visliv vi mozhete programuvati na Fortrani vikoristovuyuchi bud yaku movu Ken Tompson u statti Reflections on Trusting Trust skazav Fortran vibirayut z tiyeyi samoyi prichini z yakoyi ye populyarnimi zmagannya z bigu zi zv yazanimi nogami V Sun FORTRAN Reference Manual stverdzhuvalos sistematichne vidokremlennya sliv progalinami stalo zagalnoyu zvichkoyu blizko desyatogo stolittya nashoyi eri i ce trivalo priblizno do 1957 roku koli v movi FORTRAN vidmovilisya vid ciyeyi praktiki Alan Perlis FORTRAN ne kvitka a bur yan vitrivalij inodi cvite ale virostaye v kozhnomu komp yuteri vi mozhete vimiryati perspektivnist programista diznayuchis pro jogo stavlennya do divnoyi trivayuchoyi zhittyezdatnosti movi FORTRAN hocha kitajci povinni obozhnyuvati APL voni vkladayut svoyi groshi chomus u FORTRAN protyagom bagatoh stolit navit drevni indianci riznih plemen rozrobili spilnu movu zhestiv dlya spilkuvannya ta poyasnennya yavish sho yavlyayut pevnij obopilnij interes Programisti z riznih plemen FORTRAN LISP Algol SNOBOL ta inshih mogli b takozh navchitis yakoyis odniyeyi movi yaka b ne vimagala vid nih voziti za soboyu shkilnu doshku na svoyih poni shob porozumitisya Stiven Fejner angl Steven Feiner vi mozhete skazati yak daleko nam she potribno projti yaksho FORTRAN ce zaraz u nas mova dlya superkomp yuteriv Unix programa fortune vidaye taku mudrist komp yuter bez COBOL u ta FORTRAN u ce yak shmatochok shokoladu bez ketchupu ta girchici Pid chas zasidannya komitetu zatverdzhennya standartu FORTRAN 77 bula vnesena tehnichna propoziciya pid nazvoyu Litera O rozglyadayetsya yak nebezpechna V nomu mistilos poyasnennya sho oskilki litera O podibna do cifri 0 to neobhidno zaboroniti vzhivannya literi O v nastupnomu standarti v imenah zminnih ta vidaliti yiyi z dozvolenih simvoliv Ce dopomozhe unikati pomilok a takozh spriyatime krashij strukturizaciyi program roblyachi nemozhlivim vikoristannya gorezvisnogo goto Nebezpechnu instrukciyu format tezh bude nejtralizovano Vidznachalosya sho ce mozhe zrobiti deyaki nayavni programi nerobochimi ale bilshist z nih jmovirno buli nesumisnimi zi standartom tak chi inakshe she ranishe V FORTRAN manual for Xerox computers buv takij abzac Osnovnoyu metoyu instrukciyi data ye nazivannya konstant zamist posilannya shorazu na p yak 3 141592653589793 zminnij p mozhe buti nadane ce znachennya i vikoristovuvatis na zaminu chislovoyi formi postijno Ce takozh sproshuye modifikaciyu programi v tomu vipadku koli znachennya p raptom zminitsya FORTRAN ce ne mova programuvannya Ce sposib peretvoriti mejnfrejm sho koshtuye bagato miljoniv na programovanij naukovij kalkulyator za 50 PrimitkiDo versiyi Fortran 90 vsi klyuchovi slova mali pisatisya velikimi literami Pochinayuchi z versiyi Fortran 90 nazvu movi FORTRAN oficijno pochali pisati yak Fortran Najbilsh vidomij kompleks program dlya modelyuvannya ta prognozu pogodi u vidkritomu dostupi The Weather Research and Forecasting WRF Model National Center for Atmospheric Research USA 17 chervnya 2015 u Wayback Machine angl The NAS Parallel Benchmarks NPB 29 grudnya 2016 u Wayback Machine vid NASA CPU 2006 nedostupne posilannya z lipnya 2019 McCracken Daniel D 1965 Preface A Guide to FORTRAN IV Programming New York Wiley s v ISBN 0 471 58281 6 oglyad novih mozhlivostej Fortran 2003 na oficijnomu sajti robochoyi grupi Fortran Fortran Working Group WG5 12 veresnya 2017 u Wayback Machine Zavantazhiti yak PDF file 15 sichnya 2018 u Wayback Machine N1836 Summary of Voting Table of Replies on ISO IEC FDIS 1539 1 Information technology Programming languages Fortran Part 1 Base language ftp ftp nag co uk sc22wg5 N1801 N1850 N1836 pdf PDF 101 KiB John Reid The new features of Fortran 2008 JKR Associates UK May 6 2009 nedostupne posilannya z lipnya 2019 angl stanom na kviten 2016 kilka komercijnih kompilyatoriv Cray Intel pidtrimuvali ce novovvedennya takozh stvoreno suspilnij proyekt z vidkritim dzherelnim kodom OpenCoarrays 26 kvitnya 2016 u Wayback Machine yakij zabezpechuye pidtrimku dvijkovogo interfejsu ABI coarray Fortran CAF v GFortran N1830 Information technology Programming languages Fortran Part 1 Base language http j3 fortran org doc standing links 007 pdf PDF 7 9 MiB Technical corrigendum 1 nedostupne posilannya z lipnya 2019 Technical corrigendum 2 nedostupne posilannya z lipnya 2019 ISO page to ISO IEC DTS 29113 Further Interoperability of Fortran with C 17 bereznya 2012 u Wayback Machine Draft of the Technical Specification TS 29113 ftp ftp nag co uk sc22wg5 N1901 N1950 N1917 pdf PDF 312 kiB Arhiv originalu za 23 kvitnya 2011 Procitovano 3 lipnya 2012 Arhiv originalu za 24 lyutogo 2017 Procitovano 22 serpnya 2013 TS 29113 Further Interoperability of Fortran with C nedostupne posilannya z lipnya 2019 TS18508 Additional Parallel Features in Fortran ISO chornovik 2013 nedostupne posilannya z chervnya 2019 N2074 vilnodostupnij chornovik z iso org 2015 Arhiv originalu za 7 grudnya 2019 Procitovano 13 listopada 2017 Doctor Fortran in One Door Closes 21 veresnya 2015 5 veresnya 2015 u Wayback Machine angl Arhiv originalu za 1 grudnya 2017 Procitovano 24 sichnya 2019 Reid J The new features of Fortran 2018 11 serpnya 2021 u Wayback Machine angl Damian Rouson et al This Isn t Your Parents Fortran Managing C Objects with Modern Fortran Comput Sci Eng 14 46 2012 Damian Rouson Jim Xia Xiaofeng Xu Scientific Software Design The Object Oriented Way Cambridge University Press 2011 13 travnya 2016 u Wayback Machine ISBN 9781139498784 Magne Haveraaen et al High Performance Design Patterns for Modern Fortran Scientific Programming Volume 2015 2015 div takozh 1 2 Ed Akin Object Oriented Programming Via Fortran 90 95 Cambridge University Press 2003 13 travnya 2016 u Wayback Machine ISBN 9780521524087 Markus A Metcalf w M Modern Fortran in practice Cambridge University Press 2012 13 travnya 2016 u Wayback Machine ISBN 9781107017900 nabir kompilyatoriv vklyuchayuchi nvfortran ta specializovanih bibliotek yaki dozvolyayut rozrobnikam programuvati dlya HPC platform bazovanih na GPUs ta CPUs Ranishe ce buv nabir kompilyatoriv vid Portland Group Inc odnak v chervni 2013 NVIDIA Corporation pridbala cyu kompaniyu i zaraz ce okremij pidrozdil NVIDIA Z togo chasu nabir kompilyatoriv poshiryuvavsya u versiyi PGI Community Edition vklyuchno z kompilyatorom fortranu Zaraz NVIDIA HPC SDK 26 listopada 2020 u Wayback Machine nadayetsya NVIDIA pid bezkoshtovnoyu licenziyeyu Compiler Support for the Fortran 2003 Standard 3 veresnya 2013 u Wayback Machine angl Compiler Support for the Fortran 2008 Standard 3 veresnya 2013 u Wayback Machine angl Arhiv originalu za 12 serpnya 2013 Procitovano 19 lipnya 2013 Arhiv originalu za 9 serpnya 2013 Procitovano 19 lipnya 2013 Arhiv originalu za 9 serpnya 2013 Procitovano 19 lipnya 2013 PDF Arhiv originalu PDF za 23 kvitnya 2015 Procitovano 2 listopada 2015 NNSA national labs team with Nvidia to develop open source Fortran compiler technology 22 kvitnya 2016 u Wayback Machine angl PDF Arhiv originalu PDF za 15 serpnya 2017 Procitovano 15 serpnya 2017 Arhiv originalu za 19 travnya 2017 Procitovano 15 serpnya 2017 napriklad Computer Physics Communications Program Library 8 lyutogo 1997 u Wayback Machine kolekciya ponad 3000 program zhurnalu Computer Physics Communications z obchislyuvalnoyi fiziki ta himiyi Spisok chiselnih bibliotek na fortrani angl Netlib kolekciya matematichnnogo PZ 21 kvitnya 2016 u Wayback Machine bilshist z yakogo napisano fortranom Software associated with papers published in the Transactions on Mathematical Software 17 kvitnya 2016 u Wayback Machine angl Arhiv originalu za 10 sichnya 2010 Procitovano 6 kvitnya 2016 Arhiv originalu za 24 lyutogo 2011 Procitovano 6 kvitnya 2016 Arhiv originalu za 21 kvitnya 2016 Procitovano 6 kvitnya 2016 Arhiv originalu za 17 kvitnya 2016 Procitovano 6 kvitnya 2016 Arhiv originalu za 20 serpnya 2012 Procitovano 28 lipnya 2012 Arhiv originalu za 27 bereznya 2016 Procitovano 6 kvitnya 2016 Arhiv originalu za 19 bereznya 2016 Procitovano 6 kvitnya 2016 Arhiv originalu za 27 bereznya 2016 Procitovano 6 kvitnya 2016 Arhiv originalu za 30 sichnya 2016 Procitovano 6 kvitnya 2016 Arhiv originalu za 5 bereznya 2022 Procitovano 5 kvitnya 2022 Arhiv originalu za 11 chervnya 2018 Procitovano 10 travnya 2015 Arhiv originalu za 25 bereznya 2017 Procitovano 28 lipnya 2012 Arhiv originalu za 18 travnya 2015 Procitovano 9 travnya 2015 Intel Fortran QuickWin library 9 serpnya 2016 u Wayback Machine Grafichna biblioteka postavlyayetsya z ranishe Compaq Visual Fortran tilki dlya MS Windows Winteracter Winteracter 31 lipnya 2016 u Wayback Machine Grafichnij interfejs i zasobi vizualizaciyi Multiplatformne vlasnicke PZ DISLIN 22 lipnya 2016 u Wayback Machine zakrita grafichna biblioteka dlya vidobrazhennya danih u viglyadi grafikiv gistogram krugovih diagram 3D kolorovih dilyanok poverhon konturiv i kart stvorena v Max Planck Institute for Solar System Research Multiplatformna i dlya bagatoh kompilyatoriv Bezkoshtovna dlya nekomercijnogo vikoristannya GINO 2 veresnya 2016 u Wayback Machine Grafichnij interfejs i zasobi vizualizaciyi Multiplatformne vlasnicke PZ PLPLOT 30 sichnya 2022 u Wayback Machine Biblioteka dlya naukovih grafikiv Multiplatformna vilne programne zabezpechennya pid licenziyeyu LGPL GrWin 16 lipnya 2016 u Wayback Machine Grafichna biblioteka dlya Windows bezkoshtovna dlya nekomercijnogo vikoristannya f90gl 27 lipnya 2016 u Wayback Machine Nadaye Fortran 90 interfejs do OpenGL GLU i GLUT Multiplatformna Pracyuye z bagatma kompilyatorami Licenziya suspilne nadbannya JAPI 6 zhovtnya 2016 u Wayback Machine Grafichna biblioteka na JAVA i C sho zabezpechuye dostup do JAVA AWT Toolkit dlya C Fortran Pascal i Basic Multiplatformna vilne programne zabezpechennya pid licenziyeyu LGPL PGPLOT 1 lipnya 2012 u Wayback Machine Grafichna biblioteka multiplatformna bezkoshtovna dlya nekomercijnogo vikoristannya g2 graphical library 17 serpnya 2012 u Wayback Machine Multiplatformna grafichna biblioteka vilne programne zabezpechennya pid licenziyeyu LGPL MathGL 11 lipnya 2016 u Wayback Machine Multiplatformna grafichna biblioteka nadaye interfejs dlya bagatoh mov programuvannya zokrema dlya Fortranu vilne programne zabezpechennya f03gl 13 travnya 2016 u Wayback Machine Biblioteka zabezpechuye interfejs versiyi Fortran 2003 do biblioteki OpenGL GLU i GLUT vilne PZ licenziya GPL3 gnufor2 22 lipnya 2016 u Wayback Machine modul napisanij versiyeyu Fortran 90 nadaye interfejs do Gnuplot PZ gnuplotfortran 17 serpnya 2020 u Wayback Machine biblioteka nadaye takozh kontrol seansu Gnuplot z kodu na Fortran 95 ogpf 17 chervnya 2018 u Wayback Machine biblioteka dlya seansu Gnuplot z kodu na Fortran 2003 2008 Arhiv originalu za 24 veresnya 2016 Procitovano 23 veresnya 2016 Arhiv originalu za 24 veresnya 2016 Procitovano 23 veresnya 2016 Arhiv originalu za 24 veresnya 2016 Procitovano 23 veresnya 2016 Arhiv originalu za 16 veresnya 2016 Procitovano 23 veresnya 2016 Arhiv originalu za 16 veresnya 2016 Procitovano 23 veresnya 2016 Arhiv originalu za 24 veresnya 2016 Procitovano 23 veresnya 2016 Arhiv originalu za 17 serpnya 2016 Procitovano 23 veresnya 2016 ForUML na github com 12 chervnya 2018 u Wayback Machine ForUML 24 veresnya 2016 u Wayback Machine Arhiv originalu za 19 grudnya 2021 Procitovano 5 kvitnya 2022 Arhiv originalu za 12 chervnya 2018 Procitovano 17 travnya 2019 div odnak BlockIt and PyF95 Fortran templating and pre processing 2 bereznya 2016 u Wayback Machine angl Fortran Wiki Submodules 1 serpnya 2016 u Wayback Machine angl Document WG 23 N0442 ISO IEC JTC1 SC22 WG5 N1965 Fortran Annex to TR 24772 Guidance to Avoiding Vulnerabilities in Programming Languages through Language Selection and Use ISO IEC JTC1 SC22 WG5 8 bereznya 2018 u Wayback Machine angl Dijkstra Edsger W 18 chervnya 1975 angl arhiv originalu za 22 chervnya 2012 procitovano 28 lipnya 2012 Arhiv originalu za 22 lipnya 2012 Procitovano 28 lipnya 2012 Standarti movi FortranAnsi x3 9 1966 PDF American National Standards Institute Arhiv originalu PDF za 15 travnya 2011 Procitovano 15 travnya 2016 FORTRAN 66 Ansi x3 9 1978 American National Standards Institute Arhiv originalu za 29 zhovtnya 2013 Procitovano 15 travnya 2016 FORTRAN 77 ANSI X3 198 1992 R1997 ISO IEC 1539 1991 PDF American National Standards Institute ISO IEC Arhiv originalu PDF za 5 listopada 2020 Procitovano 16 travnya 2019 Fortran 90 ISO IEC 1539 1 1997 PDF Arhiv originalu PDF za 18 serpnya 2011 Procitovano 15 travnya 2016 Fortran 95 ISO IEC 1539 1 2004 Information technology Programming languages Fortran Part 1 Base language PDF Fortran 2003 ISO IEC 1539 1 2010 Final Draft International Standard PDF Arhiv originalu PDF za 20 sichnya 2020 Procitovano 28 serpnya 2019 Fortran 2008 LiteraturaRay Subrata 2019 Fortran 2018 With Parallel Programming anglijska vid 1 CRC Press s 654 ISBN 9780367218430Chapman Stephen J 2017 Fortran for Scientists and Engineers anglijska vid 4 McGraw Hill s 1056 ISBN 9780073385891Metcalf M Reid J Cohen M 2011 Modern Fortran Explained Numerical Mathematics and Scientific Computation anglijska vid 4 Oxford University Press s 512 ISBN 9780199601417Clerman Norman S Spector Walter 2011 Modern Fortran Style and Usage anglijska vid 1 Cambridge University Press s 352 ISBN 9780521730525Markus Arjen 2012 Modern Fortran in Practice anglijska vid 1 Cambridge University Press s 272 ISBN 9781107603479Chapman Stephen J 2007 Fortran 95 2003 for Scientists and Engineers anglijska vid 3 McGraw Hill s 974 ISBN 9780073191577Adams Jeanne C Brainerd Walter S Hendrickson Richard A Maine Richard E Martin Jeanne T 2008 The Fortran 2003 Handbook The Complete Syntax Features and Procedures anglijska vid 1 Springer s 712 ISBN 9781846283789Chivers Ian Sleightholme Jane 2015 Introduction to Programming With Fortran With Coverage of Fortran 90 95 2003 2008 and 77 anglijska vid 3 Springer International Publishing s 674 ISBN 9783319177007Hanson Richard J Hopkins Tim 21 November 2013 Numerical Computing with Modern Fortran anglijska SIAM ISBN 9781611973129Brainerd W S 2009 Guide to Fortran 2003 programming anglijska vid 1 Springer s 367 ISBN 9781848825420Brainerd W S 2015 Guide to Fortran 2008 Programming anglijska vid 2 Springer s 408 ISBN 9781447167594Nemnyugin Sergej Stesik Olga 2004 Sovremennyj Fortran Samouchitel rosijska vid 1 BHV s 496 ISBN 5941573022Bartenev O V 2005 Sovremennyj Fortran rosijska vid 1 Dialog MIFI s 560 ISBN 5864041130Gorelik A M 2006 Programmirovanie na sovremennom Fortrane rosijska vid 1 Finansy i statistika s 352 ISBN 527903066H a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Citation title Shablon Citation citation a Perevirte znachennya isbn nedijsnij simvol dovidka Ryzhikov Yu I 2009 Sovremennyj Fortran Uchebnik rosijska vid 1 Korona Print s 288 ISBN 579310304H a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Citation title Shablon Citation citation a Perevirte znachennya isbn nedijsnij simvol dovidka Div takozh Integrovane seredovishe rozrobki dlya movi Fortran na osnovi vidkritoyi IDE Eclipse 9548 Fortran asteroyid nazvanij na chest movi programuvannya PrimitkiPhotran An Integrated Development Environment and Refactoring Tool for Fortran Arhiv originalu za 25 serpnya 2011 Procitovano 28 lipnya 2012 Lutz D Schmadel Dictionary of Minor Planet Names 5 th Edition Berlin Heidelberg Springer Verlag 2003 992 XVI s ISBN 3 540 00238 3 PosilannyaFortran Wiki 21 bereznya 2012 u Wayback Machine angl Zbirka receptiv ta porad dlya napisannya program na suchasnomu Fortrani 23 lipnya 2012 u Wayback Machine angl Zrazki kodu na Fortrani vid rosettacode org 4 lipnya 2012 u Wayback Machine angl Kolekciya program ta bibliotek na fortrani dlya chiselnogo analizu 3 veresnya 2012 u Wayback Machine angl Korisni dodatki biblioteki ta programi vid Alana Millera na Fortrani 27 lipnya 2012 u Wayback Machine angl Zibrannya korisnih posilan na resursi po Fortranu ta kompilyatorah 14 serpnya 2012 u Wayback Machine angl Zibrannya korisnih posilan na resursi po Fortranu Michel Olagnon s Fortran 90 List 9 kvitnya 2011 u Wayback Machine angl angl angl Fortran 90 Reference Card 3 sichnya 2012 u Wayback Machine angl Ilya Chernov Fortran 2008 Yazyk dlya effektivnyh raschetov Palmarium Academic Publishing 2012 124 c 28 chervnya 2015 u Wayback Machine ros Ed Jorgensen Vstup do programuvannya za dopomogoyu Fortran 95 2003 2008 20 travnya 2016 u Wayback Machine angl PGI Fortran Reference Guide Posibnik vid Portland Group dlya Fortran 77 2003 23 listopada 2015 u Wayback Machine angl Intel Fortran Compiler 16 0 Update 2 User and Reference Guide Opis movi Fortran 90 2008 ta kompilyatora ifort vid Intel 10 kvitnya 2016 u Wayback Machine angl