Фортран

Фортран
Семантика

императивный, параллельный

Класс языка

процедурный, модульный, c элементами объектно-ориентированного программирования

Тип исполнения

компилируемый

Появился в

1957

Автор

Джон Бэкус, IBM

Расширение файлов

..for (FORTRAN77), .f, .f90, .f95 (Fortran'95 и выше)

Выпуск

ISO/IEC 1539-1:2004 (Fortran 2003)

Тестовая версия

ISO/IEC 1539-1:2010 (Fortran 2008)

Система типов

строгая, статическая

Основные реализации:

GFortran, Open Watcom, Sun Studio, XL Fortran, Intel Fortran

Диалекты

High Performance Fortran ( англ.)

Испытал влияние

Speedcoding [d]

Повлиял на

ALGOL 68, Бейсик, PL/I

Фортра́н (Fortran) — первый язык программирования высокого уровня, получивший практическое применение, имеющий транслятор и испытавший дальнейшее развитие [1]. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. [2] Название Fortran является сокращением от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм [3].

Имеется большое количество написанных на Фортране (в большей части на старых версиях языка) различных математических библиотек для матричной алгебры и решения систем линейных уравнений, библиотеки для решения дифференциальных уравнений, интегральных уравнений и их систем, аппроксимации функций, специальных функций, быстрых преобразований Фурье, математической статистики и других математических дисциплин. Эти библиотеки поставляются, как правило, с компилятором. Ряд таких пакетов создавался на протяжении десятилетий и популярен в научной среде по сей день, например — IMSL [4] [5].

Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны.

Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования, для новых вычислительных архитектур; позволяет применять современные технологии программирования, в частности, обобщённое и модульное программирование, ООП, сохраняя при этом преемственность с более ранними версиями. Одна из главных концепций развития современного Фортрана — средства поддержки параллельности и векторные операции [6].

Эволюция стандартов языка

Фортран — жёстко стандартизированный язык, поэтому он легко переносится на различные платформы. Новые стандарты языка в значительной мере сохраняют преемственность с более старыми, что позволяет использовать коды ранее написанных программ и модифицировать их [6]. При этом по мере развития языка заранее объявляются устаревшие конструкции, которые в будущем, возможно, будут удалены [7].

FORTRAN 66 (1972)

На базе стандарта фирмы IBM FORTRAN IV
Программа на FORTRAN-77 с выдачей компилятора

FORTRAN 77 (1980)

Введено множество улучшений: [6]
  1. Введены операторы открытия и закрытия файла (OPEN, CLOSE) и вывода на стандартное устройство — PRINT.
  2. Добавлены строковый тип данных и функции для его обработки.
  3. Введён блочный оператор IF и конструкция IF THEN — ELSE IF THEN — END IF, а также оператор включения фрагмента программы INCLUDE.
  4. Введена возможность работы с файлами прямого доступа.
  5. Увеличена максимальная размерность массива с 3 до 7. Сняты ограничения на индексы массива.
  6. Усовершенствованы и расширены возможности работы с процедурами.
  7. Введено понятие внутреннего файла (каковыми являются массивы, числовые и строковые переменные). Внутренние файлы позволяют, в частности, осуществлять преобразование число-строка и строка-число стандартным операторами чтения и записи READ и WRITE [8].

Fortran 90 (1991)

Значительно переработан стандарт языка. [8]
  1. Введён свободный формат написания кода. Появились дополнительные описания IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST.
  2. Введены управляющие операторы и конструкции. Добавлены DOEND DO (вместо завершения цикла меткой), DO WHILE, оператор передачи управления на начало цикла CYCLE, конструкция выбора SELECT CASE (для замены громоздких конструкций IF и операторов GOTO), а также заключительный оператор программной единицы, модульной или внутренней процедуры END [6].
  3. Введён инструментарий указателей и функции для работы с оперативной памятью (по аналогии с языком С).
  4. Введены операторы работы с динамической памятью (ALLOCATE, DEALLOCATE, NULLIFY).
  5. Добавлены программные компоненты MODULE, PRIVATE, PUBLIC, CONTAINS, INTERFACE, USE, INTENT.
  6. Введено маскирование присваивания массивов (присваивание при выполнении наложенного на элементы массива логического условия без использования операторов условия), а также работа с сечениями массивов. Введён оператор и конструкция WHERE для частичной замены циклов (правая часть оператора присваивания не изменяется). Маскирование присваивания распространяется практически на все операторы, конструкции и функции, оперирующие с массивами.
  7. Стандартные операции присваивания, сложения, вычитания, а также деления и умножения на число распространены на массивы и их секции, определяемые сечениями. В этом случае осуществляется поэлементное присваивание.
  8. Появились новые встроенные функции, в первую очередь для работы с массивами. Функции для вычислений в массивах: ALL (лог. произведение) и MASK (логическое сложение), COUNT (число истинных элементов), PRODUCT(произведение элементов массива), SUM (сложение элементов массива), DOT_PRODUCT (скалярное произведение), MATMUL (умножение матриц). Добавились справочные функции, а также функции переформирования и свёртки массивов.
  9. В языке появились элементы ООП [9]. Введены производные типы данных. Отдельно объявлен список устаревших черт языка, предназначенных для удаления в будущем.
  10. Добавлены дополнительные функции для работы со строковыми данными, в частности, функции TRIM (удаление завершающих пробелов) и REPEAT (кратное копирование строки) и функции выравнивания по левой и правой границам.

Fortran 95 (1997)

Коррекция предыдущего стандарта. Введён оператор и конструкция FORALL, позволяющие более гибко, чем оператор и конструкция WHERE, присваивать массивы и заменять громоздкие циклы. FORALL позволяет заменить любое присваивание сечений или оператор и конструкцию WHERE, в частности, обеспечивает доступ к диагонали матрицы. Данный оператор считается перспективным в параллельных вычислениях, способствуя более эффективному, чем циклы, осуществлению распараллеливания [10] [8] [11].

Fortran 2003 (2004)

Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой. Добавлены также следующие возможности: [6]
  1. Асинхронный ввод-вывод данных.
  2. Средства взаимодействия с языком C.
  3. Усовершенствование динамического размещения данных [11].

Fortran 2008 (2010)

Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran) [6] [12]. Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции [6] и др.
другие языки
العربية: فورتران
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