Фортран

Fortran
Fortran acs cover.jpeg
Fortran acs cover.jpeg
структурна мова програмування, імперативна мова програмування, [d], generic programming language [d] і  масивова мова програмування [d]
Парадигма: декілька: структурна, імперативна ( процедурна, об’єктно-орієнтована), узагальнена, паралельна
Дата появи: 1957
Творці: Джон Бекус
Розробник: Джон Бекус & IBM
Система типізації: сильна, статична, маніфест
Основні реалізації: Absoft, Cray, GFortran, G95, IBM, Intel, Lahey/Fujitsu, Open Watcom, Pathscale, PGI, Silverfrost, Oracle, XL Fortran, Visual Fortran, та інші
Під впливом від: Speedcoding
Вплинула на: ALGOL 58, BASIC, C, PL/I, PACT I, MUMPS, Ratfor
Звичайні розширення файлів: .f, .for, .f90, .f95
Just Solve the File Format Problem FORTRAN
CMNS:  Фортран на Вікісховищі

Фортран (Fortran) (раніше FORTRAN — скорочення від «The IBM Mathematical Formula Translating System», тобто «Система трансляції математичних формул від IBM»)  — це імперативна мова програмування загального призначення, яка особливо підходить для інтенсивних чисельних та наукових обчислень. Розроблена корпорацією IBM в 1950-х роках в університетському містечку на півдні Сан-Хосе, штат Каліфорнія для потреб наукових та інженерних проектів. Досить швидко Fortran став домінувати в цій галузі програмування, і ось вже як понад півстоліття знаходиться в постійному вжитку в області чисельного прогнозу погоди [1], аналізу методом скінченних елементів, обчислювальної гідродинаміки, обчислювальної фізики та хімії. Це одна з найбільш популярних мов в області високопродуктивних обчислень, а також використовується для тестування швидкодії найпотужніших у світі суперкомп'ютерів [2] [3].

Фортран як мова розвивався стабільно і навіть консервативно. Кожен наступний стандарт був створений в результаті тривалої дискусії між виробниками компіляторів та зацікавленими експертами. Завдяки цьому, кожна з версій, що розвивалася, зазвичай додавала тільки розширення мови, одночасно зберігаючи при цьому сумісність з попередніми версіями (однак були і винятки). Версія Fortran 77 додала підтримку для обробки символьних даних; операції з масивами і модульне програмування з'явилися в Fortran 90; функційне програмування в Fortran 95 (частково), об'єктно-орієнтоване програмування та узагальнене програмування в Fortran 2003. І нарешті узагальнене паралельне програмування з допомогою co-arrays, що використовує архітектурно-незалежний та близький для фортрану синтаксис для паралельної декомпозиції даних та виконання інструкцій, було стандартизовано в Fortran 2008.

Історія розвитку

FORTRAN

Особливістю мови Fortran є вже те, що з розвитком вона змінила навіть свою назву, відображаючи той факт, що до версії Fortran 90 всі ключові слова повинні були бути написані великими літерами. Це змінилось в Fortran 90 і починаючи з цієї версії мову FORTRAN офіційно стали називати Fortran.

В кінці 1953 року Джон В. Бекус вніс пропозицію своєму керівництву в IBM щодо розробки більш практичної альтернативи мови програмування для їх IBM 704 ЕОМ. В історичну команду по створенню мови FORTRAN увійшли також програмісти Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt, and David Sayre. Проект специфікації системи було завершено до середини 1954 року. Перший посібник для FORTRAN з'явився в жовтні 1956 року, а перший компілятор FORTRAN — в квітні 1957 року. Це був перший в світі оптимізуючий компілятор, оскільки клієнти погоджувалися використовувати мови програмування високого рівня тільки тоді, коли компілятор зможе генерувати код, продуктивність котрого буде близькою до коду, який може написати досвідчений програміст безпосередньо на асемблері. Незважаючи на скепсис та сумніви спільноти, компілятор швидко завоював визнання. Мова була позитивно прийнята вченими та інженерами для написання програм, котрі в свою чергу створили необхідні умови та ринок для створення компіляторів, які можуть генерувати більш швидкий і ефективний код. Включення комплексних чисел в фортран зробив цю мову особливо зручною також для технічних та інженерних програм, таких як електротехніка. До 1960 року версії FORTRAN були доступні для 709, 650, 1620, і 7090 IBM комп'ютерів. Зростання популярності FORTRAN спонукало виробників комп'ютерів забезпечити компіляторами FORTRAN свої машини, так що до 1963 року існувало вже понад 40 різних FORTRAN-компіляторів. З цих причин, FORTRAN вважається першою широко використовуваною мовою програмування, котра підтримувала найрізноманітніші комп'ютерні архітектури. Розвиток FORTRAN відбувався паралельно ранній еволюції технології компіляторів, і багато досягнень в галузі теорії та розробки компіляторів були спеціально мотивовані необхідністю створення ефективного коду для програм на FORTRAN.

До появи дисків та файлів, текстових редакторів та терміналів, програми найчастіше вводили за допомогою перфокарт на клавіатурі перфоратора на 80 знаків. Тобто, в результаті колода карт подавалася в спеціальний «кард-рідер» ЕОМ для компіляції. Тому оригінальний код ФОРТРАНу був в фіксованому форматі завдовжки 80 символів (стовпчиків). Не підтримувалась рекурсія та підпрограми.

FORTRAN II

IBM, FORTRAN II з'явився в 1958 році. Основними поліпшеннями були підтримка процедурного програмування, тобто підпрограми і функцій з параметрами, що передавалися за посиланням (by reference). Для підпрограм надали можливість доступу до глобальних змінних.

IBM також розробила FORTRAN III в 1958 році, що дозволяв писати на асемблері в функціях, однак цю версію так і не випустили на ринок як готовий продукт.

Для машини IBM 1401 було створено інноваційний на той час 63-прохідний компілятор Фортрану, який поміщався всього у 8-кілобайт. Він зберігав код програми в пам'яті та одночасно поступово транслював її на машинну мову — тобто це був перший в світі інтерпретатор мови програмування. Наступний інтерпретатор (мови Pascal) появився тільки через 2 десятиліття.

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 [4] .

FORTRAN 66

Мабуть, найбільш значною подією в ранній історії FORTRAN стало рішення Американської асоціації стандартів (ANSI зараз) сформувати комітет для розробки «американського стандарту Фортрану». Fortran 66 в березні 1966 року фактично став першою «стандартною для індустрії» версією FORTRAN. В Fortran 66 входили дуже багато удосконалень: main program, subroutine, function, та block data програмні одниниці; типи integer, real, double precision, complex та logical; common, dimension, and 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).

Fortran 90

Зі значним запізненням, як наступник FORTRAN 77, відомий зараз як Fortran 90 (а до цього, Fortran 8X) був випущений як стандарт ISO 1991 і стандарт ANSI в 1992 році. Це був досить масштабний перегляд попереднього стандарту, котрий також враховував нові тенденції та розвиток інших мов. Було додано безліч нових функцій, щоб відобразити значні зміни в практиці програмування:

  • нефіксована форма запису джерельного коду (інструкції можуть бути розміщені де завгодно в рядку, & означає продовження інструкції в наступному рядку, ; розділяє кілька інструкцій в одному рядку) а також запис ключових слів малими літерами;
  • ідентифікатори змінних довжиною до 31 символу;
  • вбудовані однорядкові коментарі !;
  • операції над масивами як ціле, та над вибірками масивів, що значно спрощувало математичні та інженерні обчислення, введено поняття масиву без елементів (нульового розміру);
  • рекурсивні recursive процедури (підпрограми та функції);
  • модулі 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 сумісних компіляторів. Додали можливість для allocatable масивів бути компонентами похідних типів, в списках формальних параметрів процедур, а також як значення, що повертаються функцією. Ще одним важливим доповненням до 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 став однією з основних ревізій, що додала в мову багато нових можливостей. Всесторонній огляд нових можливостей Fortran 2003 можна прочитати на офіційному сайті робочої групи Фортран [5]. Згідно з цією статтею, основні поліпшення для нової версії стандарту включають:

  • покращення для похідних типів - додано параметризовані похідні типи (з допомогою вхідних параметрів типу 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: про розширення модулів в Fortran. Ця доповідь внесла додатковий submodule що в свою чергу дозволяє визначення і реалізацію модулів, які можуть описуватись частинами в окремих блоках програми, і дозволяє покращити архітектуру великих бібліотек, полегшує публікацію інтерфейсів, а також запобігає каскадній компіляції.

Fortran 2008

Останній стандарт ISO / IEC 1539-1:2010, неофіційно відомий як Fortran 2008, було затверджено голосуванням у вересні 2010 року [6]. Як і Fortran 95, це незначне оновлення, включає роз'яснення та поправки до Fortran 2003, але також вносить декілька нових можливостей. Ці можливості включають в себе [7]:

  • submodule — замінили ISO / IEC TR 19767:2005;
  • Coarray Fortran (CAF) — вбудований в мову синтаксис для паралельних обчислень [8];
  • 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 [9], та технічні доповнення N1903 [10] та N1958 [11]. Важливим розширенням до Fortran 2008 стало ISO Technical Specification (TS) 29113 по подальшій взаємодії в Fortran з мовою C [12] [13], який був представлено ISO в травні 2012 на затвердження. Специфікація додає підтримку доступу до дескриптора масиву з мови C і дозволяє не звертати уваги на тип і ранг аргументів.

Fortran 2018 [14]

Продовжується робота над наступним стандартом [15] [16]. Вже затверджено й опубліковано 1 грудня 2012 року "ISO/IEC TS 29113:2012" Technical Specification (TS29113) по подальшій взаємодії в Fortran з мовою C [17], та затверджено й опубліковано 19 листопада 2015 року "ISO/IEC TS 18508:2015 Information technology - Additional Parallel Features in Fortran" щодо розпаралелювання за допомогою комасивів (TS18508) [18]. Офіційне оприлюднення стандарту планується на 2018 рік [19]

Fortran 202x [14]

На новій веб-сторінці JTC1/SC22/WG5, де публікують інформацію щодо стандартів Fortran і посилання на всі документи WG5, стартувало опитування щодо думок, пропозицій та функціональності, котра доцільна для наступного стандарту з попередньою назвою Fortran 202x [20].

інші мови
العربية: فورتران
azərbaycanca: Fortran
беларуская: Fortran
български: FORTRAN
বাংলা: ফোরট্রান
bosanski: FORTRAN
català: Fortran
کوردی: فۆرتران
čeština: Fortran
Чӑвашла: Фортран
dansk: Fortran
Deutsch: Fortran
Ελληνικά: Fortran
English: Fortran
español: Fortran
eesti: Fortran
euskara: FORTRAN
فارسی: فورترن
suomi: Fortran
français: Fortran
Gaeilge: FORTRAN
עברית: Fortran
हिन्दी: फ़ोरट्रान
hrvatski: Fortran
magyar: Fortran
interlingua: FORTRAN
Bahasa Indonesia: Fortran
italiano: Fortran
日本語: FORTRAN
Taqbaylit: Fortran
қазақша: Фортран
한국어: 포트란
Kurdî: Fortran
Latina: FORTRAN
lietuvių: Fortran
latviešu: Fortran
മലയാളം: ഫോർട്രാൻ
монгол: Фортран
Bahasa Melayu: Fortran
Mirandés: FORTRAN
မြန်မာဘာသာ: Fortran
Nederlands: Fortran
norsk nynorsk: Fortran
norsk: Fortran
occitan: Fortran
polski: Fortran
português: Fortran
română: Fortran
русский: Фортран
саха тыла: Fortran
Scots: Fortran
srpskohrvatski / српскохрватски: Fortran
Simple English: Fortran
slovenčina: Fortran
slovenščina: Fortran
shqip: Fortran
српски / srpski: Фортран
svenska: Fortran
తెలుగు: ఫోర్ట్రాన్
тоҷикӣ: Фортран
Türkçe: Fortran
Tiếng Việt: Fortran
中文: Fortran