Фортра́н (, ) — первый язык программирования высокого уровня, получивший практическое применение, имеющий транслятор и испытавший дальнейшее развитие. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBMЯзык Планкалкюль, претендующий на пальму первенства, был изобретён ещё в 1945 году, но не был реализован вплоть до 2000 года.. Название Fortran является сокращением от FORmula TRANslator (формульный транслятор)Словарь иностранных слов. — М.: «Русский язык», 1989. — 624 с. ISBN 5-200-00408-8. Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограммСм., например: Netlib Repository at UTK and ORNL .
Имеется большое количество написанных на Фортране (в большей части на старых версиях языка) различных математических библиотек для матричной алгебры и решения систем линейных уравнений, библиотеки для решения дифференциальных уравнений, интегральных уравнений и их систем, аппроксимации функций, специальных функций, быстрых преобразований Фурье, математической статистики и других математических дисциплин. Эти библиотеки поставляются, как правило, с компилятором. Ряд таких пакетов создавался на протяжении десятилетий и популярен в научной среде по сей день, например — Международная математическая библиотека подпрограмм (IMSL).
Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны.
Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования, для новых вычислительных архитектур; позволяет применять современные технологии программирования, в частности, обобщённое и модульное программирование, ООП, сохраняя при этом преемственность с более ранними версиями. Одна из главных концепций развития современного Фортрана — средства поддержки параллельности и векторные операции.
Эволюция стандартов языка +Хронология Фортрана Год Неформальное название Официальный стандарт 1957 FORTRAN 1958 FORTRAN II 1958 FORTRAN III 1961 FORTRAN IV 1966 FORTRAN 66 ANSI X3.9-1966 1978 FORTRAN 77 ANSI X3.9-1978 1991 Fortran 90 ANSI X3.198-1992ISO/IEC 1539:1991 1997 Fortran 95 ISO/IEC 1539-1:1997 2004 Fortran 2003 ISO/IEC 1539-1:2004 2010 Fortran 2008 ISO/IEC 1539-1:2010 2018 Fortran 2018 ISO/IEC 1539-1:2018 2023 Fortran 2023 ISO/IEC 1539-1:2023 Фортран — жёстко стандартизированный язык, поэтому он легко переносится на различные платформы. Новые стандарты языка в значительной мере сохраняют преемственность с более старыми, что позволяет использовать коды ранее написанных программ и модифицировать их. При этом по мере развития языка заранее объявляются устаревшие конструкции, которые в будущем, возможно, будут удалены.
FORTRAN 66 (1966) Стандарт ANSI X3.9-1966 определил язык FORTRAN (основанный на FORTRAN IV фирмы IBM, который служил стандартом де-факто). Впоследствии на него стали ссылаться как на FORTRAN 66, хотя многие продолжали называть его FORTRAN IV, язык, на котором стандарт был в значительной степени основан.
FORTRAN 77 (1978) ANSI X3.9-1978, ISO 1539:1980, введено множество улучшений: Введены операторы открытия и закрытия файла (OPEN, CLOSE) и вывода на стандартное устройство — PRINT. Добавлены строковый тип данных и функции для его обработки. Введён блочный оператор IF и конструкция IF THEN — ELSE IF THEN — END IF, а также оператор включения фрагмента программы INCLUDE. Введена возможность работы с файлами прямого доступа. Увеличена максимальная размерность массива с 3 до 7. Сняты ограничения на индексы массива. Усовершенствованы и расширены возможности работы с процедурами. Введено понятие внутреннего файла (каковыми являются массивы, числовые и строковые переменные). Внутренние файлы позволяют, в частности, осуществлять преобразование число-строка и строка-число стандартным операторами чтения и записи READ и WRITE.
Fortran 90 (1991) ISO/IEC 1539:1991 (ANSI INCITS 198—1992), значительно переработан стандарт языка включая смену названия FORTRAN на Fortran. Введён свободный формат написания кода. Появились дополнительные описания IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST. Введены управляющие операторы и конструкции. Добавлены DO … END DO (вместо завершения цикла меткой), DO WHILE, оператор передачи управления на начало цикла CYCLE, конструкция выбора SELECT CASE (для замены громоздких конструкций IF и операторов GOTO), а также заключительный оператор программной единицы, модульной или внутренней процедуры END. Введён инструментарий указателей и функции для работы с оперативной памятью (по аналогии с языком С). Введены операторы работы с динамической памятью (ALLOCATE, DEALLOCATE, NULLIFY). Добавлены программные компоненты MODULE, PRIVATE, PUBLIC, CONTAINS, INTERFACE, USE, INTENT. Введено маскирование присваивания массивов (присваивание при выполнении наложенного на элементы массива логического условия без использования операторов условия), а также работа с сечениями массивов. Введён оператор и конструкция WHERE для частичной замены циклов (правая часть оператора присваивания не изменяется). Маскирование присваивания распространяется практически на все операторы, конструкции и функции, оперирующие с массивами. Стандартные операции присваивания, сложения, вычитания, а также деления и умножения на число распространены на массивы и их секции, определяемые сечениями. В этом случае осуществляется поэлементное присваивание. Появились новые встроенные функции, в первую очередь для работы с массивами. Функции для вычислений в массивах: ALL (логическое произведение) и MASK (логическое сложение), COUNT (число истинных элементов), PRODUCT(произведение элементов массива), SUM (сложение элементов массива), DOT_PRODUCT (скалярное произведение), MATMUL (умножение матриц). Добавились справочные функции, а также функции переформирования и свёртки массивов. В языке появились элементы ООПГорелик А. М. Объектно-ориентированное программирование на современном Фортране . Введены производные типы данных. Отдельно объявлен список устаревших черт языка, предназначенных для удаления в будущем. Добавлены дополнительные функции для работы со строковыми данными, в частности, функции TRIM (удаление завершающих пробелов) и REPEAT (кратное копирование строки) и функции выравнивания по левой и правой границам.
Fortran 95 (1997) ISO/IEC 1539-1:1997, коррекция предыдущего стандарта. Введён оператор и конструкция FORALL, позволяющие более гибко, чем оператор и конструкция WHERE, присваивать массивы и заменять громоздкие циклы. FORALL позволяет заменить любое присваивание сечений или оператор и конструкцию WHERE, в частности, обеспечивает доступ к диагонали матрицы. Данный оператор считается перспективным в параллельных вычислениях, способствуя более эффективному, чем циклы, осуществлению распараллеливания.
Fortran 2003 (2004) Принят как ISO/IEC 1539-1:2004. Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой. Добавлены также следующие возможности: Асинхронный ввод-вывод данных. Средства взаимодействия с языком C. Усовершенствование динамического размещения данных.
Fortran 2008 (2010) ISO/IEC 1539-1:2010, общепринятое неформальное название Fortran 2008. Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran)Горелик А. М.Новости . Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции и др.
Fortran 2018 Версия языка Fortran 2018 (ранее известная как Fortran 2015) была выпущена 28 ноября 2018 года.
Fortran 2018 (ISO/IEC 1539-1:2018) включает в себя: ISO/IEC TS 29113:2012 — Дальнейшая совместимость с C; ISO/IEC TS 18508:2015 — Дополнительные параллельные функции в Fortran. Также введены поддержка ISO/IEC/IEEE 60559:2011, шестнадцатеричный ввод/вывод чисел с плавающей точкой, усовершенствования IMPLICIT NONE и другие изменения.
Fortran 2023 Последняя версия языка Fortran — Fortran 2023 (ISO/IEC 1539-1:2023) была выпущена в ноябре 2023 года. Fortran 2023 — это небольшое расширение Fortran 2018, которое в основном фокусируется на исправлении ошибок и упущений в Fortran 2018. Также добавлены некоторые новые небольшие функции, включая возможности работать с перечислением.
Возможности и характерные особенности языка Фортран имеет большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами двойной и повышенной точности (при бинарных операциях используется real(10)), имеет богатый инструментарий работы с массивами и внешними файлами. Современный Фортран (2003 и выше) имеет полноценный инструментарий для работы с символьными данными.
Изначально выразительные средства языка были не очень велики, поскольку Фортран был первым реализованным языком высокого уровня. В дальнейшем в Фортран были добавлены многие лексические конструкции, характерные для структурного, модульного, обобщённого и объектно-ориентированного программирования.
Формат записи кода
Структура программ изначально была ориентирована на ввод с перфокарт и имела ряд удобных именно для этого случая свойств. Так, с 1-й по 5-ю колонку располагалась область меток, 6-я служила для маркировки текста как продолжения предыдущей строки (любым символом, кроме пробела и «0»), а с 7-й по 72-ю располагался собственно текст оператора или комментария. Колонки с 73-й по 80-ю могли служить для нумерации карт (чтобы восстановить случайно рассыпавшуюся колоду) или для краткого комментария, транслятором они игнорировались. Если текст оператора не вписывался в отведённое пространство (с 7-й по 72-ю колонку), в 6-й колонке следующей строки ставился признак продолжения, и затем оператор продолжался на ней. Расположить два или более оператора в одной строке (карте) было нельзя. Когда перфокарты ушли в историю, эти достоинства превратились в серьёзные неудобства.
Именно поэтому к стандарту Фортрана, начиная с Fortran 90, с сохранением фиксированного формата исходного текста, был добавлен свободный формат, который не регламентирует позиции строки и позволяет записывать более одного оператора на строку. Введение свободного формата и современных способов структурного программирования позволило создавать код, читаемость и ясность которого не уступает коду, созданному при помощи других современных языков программирования, таких как Паскаль, C или Java. Современные среды разработки позволяют комбинировать форматы: например, расширять длину строки до свободного формата (обычно 132 символа), позволяют записывать несколько операторов в строке, но при этом позволяют также сохранять отступ слева (делать левое поле), характерный для старого фиксированного формата, оставляя тем самым выделенную колонку для меток ошибок и форматов, а также колонку продолжения строки.
Своего рода «визитной карточкой» старого Фортрана является огромное количество меток, которые использовались в операторах безусловного перехода GOTO, операторах циклов, в условных операторах и в операторах описания форматного ввода-вывода FORMAT. Большое количество меток и операторов GOTO часто делало программы на Фортране трудными для понимания.
Именно этот негативный опыт стал причиной, по которой в ряде современных языков программирования (например, в языке Java) метки и связанные с ними операторы безусловного перехода сильно видоизменены.