stringtranslate.com

Фортран

Фортран ( / ˈ f ɔːr t r æ n / ; ранее FORTRAN ) — это компилируемый императивный язык программирования общего назначения первого поколения, который особенно подходит для числовых и научных вычислений .

Фортран был первоначально разработан IBM [2] в 1950-х годах для научных и инженерных приложений и впоследствии стал доминировать в научных вычислениях. Он используется уже более семи десятилетий в областях с интенсивными вычислениями, таких как численный прогноз погоды , анализ методом конечных элементов , вычислительная гидродинамика , геофизика , вычислительная физика , кристаллография и вычислительная химия . Это популярный язык для высокопроизводительных вычислений [3] и используется в программах для оценки и оценки самых быстрых суперкомпьютеров в мире . [4] [5]

Установка суперкомпьютера IBM Blue Gene/P в 2007 году в вычислительном комплексе Argonne Leadership Angela Yang , расположенном в Аргоннской национальной лаборатории в Лемонте , штат Иллинойс , США.

Конструкция Фортрана легла в основу многих других языков программирования, особенно BASIC и ALGOL . Но сам Фортран развивался через множество версий и диалектов, добавляя расширения, сохраняя при этом совместимость с предыдущими версиями. В последующих версиях добавлена ​​поддержка структурного программирования и обработки символьных данных (ФОРТРАН 77), программирования массивов , модульного программирования и общего программирования (Фортран 90), высокопроизводительного Фортрана (Фортран 95), объектно-ориентированного программирования (Фортран 2003), параллельное программирование (Fortran 2008) и собственные возможности параллельных вычислений (Coarray Fortran 2008/2018).

Генеалогическое древо FORTRAN и COBOL

С августа 2021 года Фортран входит в число пятнадцати лучших языков в индексе TIOBE , показателе популярности языков программирования. [6]

Именование

В первом руководстве по FORTRAN он описывается как система перевода формул , а название написано маленькими буквами : Fortran . [7] : стр.2  [8] Другие источники предполагают, что это название означает «Переводчик формул», [9] или «Перевод формул» . [10] Ранние компьютеры IBM не поддерживали строчные буквы, а названия версий языка в FORTRAN 77 обычно писались заглавными буквами [11] (FORTRAN 77 был последней версией, в которой набор символов Фортрана включал только прописные буквы). [12] ). В официальных языковых стандартах Фортрана этот язык называется «Фортран» с начальными ограничениями, начиная с Фортрана 90.

Происхождение

Джон Бэкус (1924–2007) предложил проект FORTRAN в декабре 1953 года и получил премию А. М. Тьюринга в 1977 году.

В конце 1953 года Джон В. Бэкус представил своему начальству в IBM предложение разработать более практичную альтернативу языку ассемблера для программирования их мейнфрейма IBM 704 . [8] : 69  Историческая команда Бэкуса по FORTRAN состояла из программистов Ричарда Голдберга, Шелдона Ф. Беста, Харлана Херрика, Питера Шеридана, Роя Натта , Роберта Нельсона, Ирвинга Циллера, Гарольда Стерна, Лоис Хайбт и Дэвида Сэйра . [13] Его концепции включали более простой ввод уравнений в компьютер - идею, разработанную Дж. Холкомбом Лэнингом и продемонстрированную в системе Лэнинга и Цирлера 1952 года. [14]

Система автоматического кодирования на Фортране для IBM 704 (15 октября 1956 г.), первое справочное руководство для программиста на Фортране [7]

Проект спецификации системы перевода математических формул IBM был  завершен к ноябрю  1954 года . 8] : 75  Это был первый оптимизирующий компилятор , поскольку клиенты не хотели использовать язык программирования высокого уровня, если его компилятор не мог генерировать код с производительностью, приближающейся к производительности языка ассемблера, написанного вручную. [15]

Хотя сообщество скептически относилось к тому, что этот новый метод может превзойти ручное кодирование, он сократил количество программных операторов , необходимых для управления машиной, в 20 раз и быстро получил признание. Джон Бэкус сказал в 1979 году в интервью Think , журналу для сотрудников IBM: «Большая часть моей работы связана с ленью. Мне не нравилось писать программы, и поэтому, когда я работал над IBM 701 , я писал программы для вычислений. траектории ракет, я начал работу над системой программирования, чтобы облегчить написание программ». [16]

Этот язык был широко принят учеными для написания программ с интенсивным числом вычислений, что побудило разработчиков компиляторов создавать компиляторы, которые могли генерировать более быстрый и эффективный код. Включение в язык комплексного числового типа данных сделало Фортран особенно подходящим для технических приложений, таких как электротехника. [17]

К 1960 году версии FORTRAN были доступны для компьютеров IBM 709 , 650 , 1620 и 7090 . Примечательно, что растущая популярность FORTRAN побудила конкурирующих производителей компьютеров предоставлять компиляторы FORTRAN для своих машин, так что к 1963 году существовало более 40 компиляторов FORTRAN. По этим причинам FORTRAN считается первым широко используемым кроссплатформенным языком программирования. [ нужна цитата ]

FORTRAN был предоставлен для компьютера IBM 1401 с помощью инновационного 63-фазного компилятора, который полностью работал в основной памяти объемом всего 8000 (шестибитных) символов. Компилятор можно было запустить с ленты или с колоды на 2200 карт; он не использовал никаких дополнительных ленточных или дисковых накопителей. Он хранил программу в памяти и загружал оверлеи , которые постепенно преобразовывали ее на месте в исполняемую форму, как описал Хейнс. [18] Эта статья была переиздана и отредактирована в обоих изданиях « Анатомии компилятора» [19] и в руководстве IBM «Спецификации и операционные процедуры Фортрана, IBM 1401». [20] Исполняемая форма не была полностью машинным языком ; скорее, арифметика с плавающей запятой, подсценарии, ввод/вывод и ссылки на функции интерпретировались на два десятилетия раньше P-кода UCSD Pascal . GOTRAN , упрощенная интерпретируемая версия FORTRAN I (всего с 12 операторами, а не 32) для операции «загрузи и работай», была доступна (по крайней мере, для раннего компьютера IBM 1620 ). [21] Современный Фортран и почти все более поздние версии полностью скомпилированы, как и другие высокопроизводительные языки.

Развитие Фортрана шло параллельно с ранней эволюцией технологии компиляторов , и многие достижения в теории и проектировании компиляторов были специально мотивированы необходимостью генерировать эффективный код для программ на Фортране.

ФОРТРАН

Первоначальная версия FORTRAN для IBM 704 [7] содержала 32 оператора , в том числе:

Этот арифметический IFоператор напоминал (но его было нелегко реализовать) инструкцию трехстороннего сравнения (CAS — сравнение аккумулятора с хранилищем), доступную на 704. Этот оператор предоставлял единственный способ сравнения чисел — путем проверки их разницы с помощью сопровождающего оператора. риск перелива. Позже этот недостаток был преодолен с помощью «логических» средств, представленных в FORTRAN IV.

Этот FREQUENCYоператор изначально (и необязательно) использовался для определения вероятностей ветвления для трех случаев IFветвления арифметического оператора. Первый компилятор FORTRAN использовал это взвешивание для выполнения во время компиляции моделирования сгенерированного кода по методу Монте-Карло , результаты которого использовались для оптимизации размещения базовых блоков в памяти — очень сложная оптимизация для своего времени. Метод Монте-Карло описан в статье Бэкуса и др. об этой оригинальной реализации « Система автоматического кодирования FORTRAN »:

Фундаментальной единицей программы является базовый блок ; базовый блок — это участок программы, имеющий одну точку входа и одну точку выхода. Цель раздела 4 — подготовить для раздела 5 таблицу предшественников (таблица PRED), в которой перечислены базовые блоки и для каждого базового блока указан каждый из базовых блоков, которые могут быть его непосредственными предшественниками в потоке, а также абсолютная частота появления каждая такая ссылка основного блока. Эта таблица получается путем однократного запуска программы методом Монте-Карло, в котором результат условных передач, возникающих из операторов типа IF и вычисленных GO TO, определяется генератором случайных чисел, соответствующим образом взвешенным в соответствии с любыми предоставленными операторами FREQUENCY. . [13]

Первый компилятор FORTRAN сообщал диагностическую информацию, останавливая программу при обнаружении ошибки и выводя код ошибки на консоль. Программист может найти этот код в таблице сообщений об ошибках в руководстве оператора, предоставив ему краткое описание проблемы. [7] : стр. 19–20  [22] Позже была включена подпрограмма обработки ошибок для обработки пользовательских ошибок, таких как деление на ноль, разработанная НАСА, [23] , информирующая пользователей о том, какая строка кода содержит ошибку.

Фиксированная раскладка и перфокарты

Код FORTRAN на перфокарте , показывающий специализированное использование столбцов 1–5, 6 и 73–80.
Воспроизведение формы кодирования FORTRAN, напечатанной на бумаге и предназначенной для использования программистами для подготовки программ для перфокарты на картах операторами клавиатуры . Сейчас устарело.

До разработки дисковых файлов, текстовых редакторов и терминалов программы чаще всего вводились с помощью клавишной клавиатуры на перфокарты с 80 столбцами , по одной строке на карту. Полученная колода карт будет загружена в устройство чтения карт для компиляции. Коды перфокарт не содержали строчных букв или множества специальных символов, а были предложены специальные версии клавишного перфоратора IBM 026 , которые правильно печатали специальные символы, используемые в FORTRAN.

Отражая практику ввода перфокарт, программы на Фортране изначально были написаны в формате с фиксированными столбцами, при этом первые 72 столбца считывались в двенадцать 36-битных слов.

Буква «C» в столбце 1 привела к тому, что вся карточка рассматривалась как комментарий и игнорировалась компилятором. В противном случае столбцы карточки были разделены на четыре поля:

Таким образом, столбцы с 73 по 80 можно использовать для идентификационной информации, такой как ввод порядкового номера или текста, который можно использовать для изменения порядка карточек, если стопка карточек упала; хотя на практике это предназначалось для стабильных, производственных программ. IBM 519 можно было использовать для копирования колоды программ и добавления порядковых номеров. Некоторые ранние компиляторы, например IBM 650, имели дополнительные ограничения из-за ограничений устройств чтения карт. [25] Нажатия клавиш можно было запрограммировать на переход к столбцу 7 и пропуск после столбца 72. Позже компиляторы ослабили большинство ограничений фиксированного формата, и это требование было устранено в стандарте Fortran 90.

В поле оператора пробельные символы (пробелы) игнорировались за пределами текстового литерала. Это позволило опускать пробелы между токенами для краткости или включать пробелы в идентификаторы для ясности. Например, AVG OF Xбыл действительным идентификатором, эквивалентным AVGOFX, и был допустимым оператором, эквивалентным тому, что ноль в столбце 6 рассматривается как пробел (!), а вместо этого было присвоение 1,101 переменной с именем . Обратите внимание на небольшую визуальную разницу между запятой и точкой.101010DO101I=1,10110101 DO 101 I = 1, 101101010DO101I=1.10110101 DO101I = 1.101DO101I

Строки Холлерита , первоначально разрешенные только в операторах FORMAT и DATA, имели префикс количества символов и буквы H (например, 26HTHIS IS ALPHANUMERIC DATA.), что позволяло сохранять пробелы в строке символов. Ошибки в подсчетах были проблемой.

Эволюция

ФОРТРАН II

FORTRAN II от IBM появился в 1958 году. Основное усовершенствование заключалось в поддержке процедурного программирования путем разрешения написанных пользователем подпрограмм и функций, которые возвращали значения с параметрами, передаваемыми по ссылке . Оператор COMMON предоставляет подпрограммам возможность доступа к общим (или глобальным ) переменным. Было введено шесть новых заявлений: [26]

В течение следующих нескольких лет в FORTRAN II была добавлена ​​поддержка типов данных DOUBLE PRECISIONи COMPLEX.

Ранние компиляторы FORTRAN не поддерживали рекурсию в подпрограммах. Ранние компьютерные архитектуры не поддерживали концепцию стека, а когда они напрямую поддерживали вызовы подпрограмм, место возврата часто сохранялось в одном фиксированном месте, рядом с кодом подпрограммы (например, IBM 1130 ) или в конкретном машинном регистре ( IBM 360 и последующие). ), что допускает рекурсию только в том случае, если стек поддерживается программным обеспечением и адрес возврата сохраняется в стеке до выполнения вызова и восстанавливается после возврата вызова. Хотя это не указано в FORTRAN 77, многие компиляторы F77 поддерживали рекурсию в качестве опции, а мэйнфреймы Burroughs , разработанные со встроенной рекурсией, делали это по умолчанию. Он стал стандартом в Фортране 90 благодаря новому ключевому слову RECURSIVE. [27]

Простая программа FORTRAN II

Эта программа для формулы Герона считывает данные с катушки с лентой, содержащей в качестве входных данных три 5-значных целых числа A, B и C. Объявления «типа» отсутствуют: переменные, имена которых начинаются с I, J, K, L, M или N, имеют «фиксированную точку» (т.е. целые числа), в противном случае — с плавающей точкой. Поскольку в этом примере обрабатываются целые числа, имена переменных начинаются с буквы «I». Имя переменной должно начинаться с буквы и может продолжаться как буквами, так и цифрами, до шести символов в FORTRAN II. Если A, B и C не могут представлять стороны треугольника в плоской геометрии, то выполнение программы завершится с кодом ошибки «STOP 1». В противном случае будет напечатана строка вывода, показывающая входные значения для A, B и C, за которой следует вычисленная ПЛОЩАДЬ треугольника в виде числа с плавающей запятой, занимающего десять пробелов вдоль строки вывода и отображающего 2 цифры после десятичной точки. , .2 в F10.2 оператора FORMAT с меткой 601.

C ПЛОЩАДЬ ТРЕУГОЛЬНИКА СО СТАНДАРТНОЙ ФУНКЦИЕЙ КВАДРАТНОГО КОРНЯ C ВВОД – БЛОК СЧИТЫВАНИЯ ЛЕНТЫ 5, ЦЕЛЫЙ ВХОД C ВЫХОД – БЛОК ЛИНЕЙНОГО ПРИНТЕРА 6, РЕАЛЬНЫЙ ВЫХОД C ОШИБКА ВХОДА ОТОБРАЖЕНИЕ ОШИБКИ ВЫХОДНОЙ КОД 1 В СПИСКЕ УПРАВЛЕНИЯ ЗАДАНИЯМИ ПРОЧТЕНИЕ ВХОДНОЙ ЛЕНТЫ 5 , 501 , IA , IB , IC  501 FORMAT ( 3 I5 ) C IA, IB и IC НЕ МОГУТ БЫТЬ ОТРИЦАТЕЛЬНЫМИ ИЛИ НУЛЕВЫМИ C, КРОМЕ ТОГО, СУММА ДВУХ СТОРОН ТРЕУГОЛЬНИКА C ДОЛЖНА БЫТЬ БОЛЬШЕ ТРЕТЬЕЙ СТОРОНЫ, ПОЭТОМУ МЫ ПРОВЕРЯЕМ ЭТО, ТОЖЕ IF ( IA ) 777 , 777 , 701  701 IF ( IB ) 777 , 777 , 702  702 IF ( IC ) 777 , 777 , 703  703 IF ( IA + IB - IC ) 777 , 777 , 704  704 IF ( IA + IC ) - IB ) 777 , 777 , 705  705 IF ( IB + IC - IA ) 777 , 777 , 799  777 STOP 1 C ПО ФОРМУЛЕ ГЕРОНА ВЫЧИСЛЯЕМ ПЛОЩАДЬ ТРЕУГОЛЬНИКА  799 S = FLOATF ( IA + IB + IC ) /2.0 AREA = SQRTF ( S * ( S - FLOATF ( IA )) * ( S - FLOATF ( IB )) * + ( S - FLOATF ( IC ))) ЗАПИСЬ ВЫХОДНОЙ ЛЕНТЫ 6 , 601 , IA , IB , IC , AREA  601 ФОРМАТ ( 4 Ч А = , I5 , 5 ЧАС B                                                                                    = , I5 , 5 Ч C = , I5 , 8 Ч ПЛОЩАДЬ = , F10 . 2 , + 13 H КВАДРАТНЫХ ЕДИНИЦ ) СТОП КОНЕЦ             

ФОРТРАН III

IBM также разработала FORTRAN III в 1958 году, который, помимо других функций, позволял использовать встроенный ассемблерный код; однако эта версия так и не была выпущена как продукт. Подобно 704 FORTRAN и FORTRAN II, FORTRAN III включал машинно-зависимые функции, которые делали написанный на нем код непереносимым с машины на машину. [8] : 76  Ранние версии FORTRAN, предоставленные другими поставщиками, страдали от того же недостатка.

ФОРТРАН IV

IBM начала разработку FORTRAN IV начиная с 1961 года по требованию клиентов. В FORTRAN IV удалены машинно-зависимые функции FORTRAN II (такие как READ INPUT TAPE), но добавлены новые функции, такие как LOGICALтип данных , логические логические выражения и логический оператор IF в качестве альтернативы арифметическому оператору IF. FORTRAN IV был в конечном итоге выпущен в 1962 году, сначала для компьютера IBM 7030 («Stretch»), за ним последовали версии для IBM 7090 , IBM 7094 и позже для IBM 1401 в 1966 году .

К 1965 году FORTRAN IV должен был соответствовать стандарту , разрабатываемому рабочей группой X3.4.3 FORTRAN Американской ассоциации стандартов . [29]

Между 1966 и 1968 годами IBM предложила несколько компиляторов FORTRAN IV для своей System/360 , каждый из которых был назван буквами, обозначавшими минимальный объем памяти, необходимый для работы компилятора. [30] Буквы (F, G, H) соответствовали кодам, используемым в номерах моделей System/360 для обозначения объема памяти, при этом приращение каждой буквы было в два раза больше: [31] : стр. 5 

Digital Equipment Corporation поддерживала DECSYSTEM-10 Fortran IV (F40) для PDP-10 с 1967 по 1975 год. [32] Компиляторы также были доступны для серии UNIVAC 1100 и систем серии Control Data 6000 и 7000 . [33]

Примерно в это же время FORTRAN IV начал становиться важным образовательным инструментом, и такие реализации, как WATFOR и WATFIV Университета Ватерлоо, были созданы для упрощения сложных процессов компиляции и компоновки более ранних компиляторов.

Обзор программирования и компиляторов FORTRAN IV

В среде программирования FORTRAN IV той эпохи, за исключением той, которая использовалась в системах Control Data Corporation (CDC), в каждой строке помещалась только одна инструкция. Версия CDC позволяла использовать несколько инструкций в строке, если они разделены символом $ (доллар). Лист FORTRAN был разделен на четыре зоны:

Номера заказов в диапазоне от 1 до 99 999 могут быть присвоены столбцам с 1 по 5 для идентификации конкретных инструкций, обычно в случае циклов или разрывов последовательности. Любые пробелы в этих столбцах не учитывались. Столбец 1 также может содержать букву «C», обозначающую, что все содержимое столбцов с 1 по 80 представляет собой комментарий, воспроизведенный дословно во время компиляции, не приводящий к какой-либо реальной инструкции. Они были известны как «карточки комментариев».

«Столбец продолжения» (столбец 6) может содержать цифры от 1 до 9 (исключая 0), чтобы указать, что формула или объявление, начатое на предыдущей карте, продолжается на текущей. Можно было использовать до 19 карт продолжения, причем цифры на этих картах могли располагаться в любом порядке.

В поле переменных (столбцы с 7 по 72) записывались символические инструкции программы с возможностью разделения инструкций пробелами, которые игнорировались компилятором. Чтобы избежать путаницы между буквой О и цифрой ноль, число НОЛЬ обозначалось одним 0, а буква О - перечеркнутым О (Ø).

Зона идентификации, игнорируемая компилятором, использовалась для коротких комментариев или для нумерации карточек программы. Это было особенно полезно, если естественный порядок карточек был случайно нарушен.

Два компилятора того времени, IBM «G» и UNIVAC, позволяли писать комментарии в одной строке с инструкциями, разделяя их специальным символом: «основное пространство»: V (перфорации 7 и 8) для UNIVAC и перфорации 12/11. /0/7/8/9 (шестнадцатеричный FF) для IBM. Эти комментарии не должны были помещаться в середину карточек продолжения. [32] [33]

ФОРТРАН 66

Возможно, самым значительным событием в ранней истории FORTRAN было решение Американской ассоциации стандартов (ныне Американский национальный институт стандартов (ANSI)) сформировать комитет, спонсируемый Ассоциацией производителей бизнес-оборудования (BEMA), для разработки американского стандарта Fortran . В результате два стандарта, утвержденные в марте 1966 года, определили два языка: FORTRAN (основанный на FORTRAN IV, который служил стандартом де-факто) и Basic FORTRAN (основанный на FORTRAN II, но лишенный его машинно-зависимых функций). ФОРТРАН, определенный первым стандартом, официально обозначенным X3.9-1966, стал известен как ФОРТРАН 66 (хотя многие продолжали называть его ФОРТРАН IV, язык, на котором в значительной степени был основан стандарт). FORTRAN 66 фактически стал первой версией FORTRAN, соответствующей отраслевому стандарту. ФОРТРАН 66 включал:

ФОРТРАН 77

Программа FORTRAN-77 с выводом компилятора, написанная на CDC 175 в RWTH Ахенском университете , Германия, в 1987 году.
4.3 BSD для Digital Equipment Corporation (DEC) VAX , отображающее руководство для компилятора FORTRAN 77 (f77).

После выпуска стандарта FORTRAN 66 поставщики компиляторов представили несколько расширений к стандарту Fortran , что побудило комитет ANSI X3J3 в 1969 году начать работу по пересмотру стандарта 1966 года при спонсорской поддержке CBEMA , Ассоциации производителей компьютерного оборудования для бизнеса (ранее BEMA). Окончательные проекты этого пересмотренного стандарта были распространены в 1977 году, что привело к официальному утверждению нового стандарта FORTRAN в апреле 1978 года. Новый стандарт, названный FORTRAN 77 и официально обозначенный X3.9-1978, добавил ряд важных функций для решения многих проблем. недостатки ФОРТРАН 66:

В этой версии стандарта ряд функций был удален или изменен таким образом, что могло сделать недействительными программы, ранее соответствующие стандарту. (Удаление было единственной допустимой альтернативой X3J3 в то время, поскольку концепция « устаревания » еще не была доступна для стандартов ANSI.) Хотя большинство из 24 пунктов в списке конфликтов (см. Приложение A2 X3.9-1978) устранены лазейки или патологические случаи, разрешенные предыдущим стандартом, но редко используемые, небольшое количество конкретных возможностей было намеренно удалено, например:

Переход на стандарт ANSI Fortran

Разработка пересмотренного стандарта, пришедшего на смену FORTRAN 77, неоднократно откладывалась, поскольку процесс стандартизации с трудом успевал за быстрыми изменениями в практике вычислений и программирования. Между тем, в течение почти пятнадцати лет FORTRAN 77 оставался «стандартным ФОРТРАНом» и стал исторически самым важным диалектом.

Важным практическим расширением FORTRAN 77 стал выпуск MIL-STD-1753 в 1978 году. [34] Эта спецификация, разработанная Министерством обороны США , стандартизировала ряд функций, реализованных большинством компиляторов FORTRAN 77, но не включенных в ANSI. Стандарт ФОРТРАН 77. Эти функции в конечном итоге будут включены в стандарт Fortran 90.

Стандарт IEEE 1003.9 POSIX , выпущенный в 1991 году, предоставил программистам FORTRAN 77 простые средства для выполнения системных вызовов POSIX. [35] В документе было определено более 100 вызовов, обеспечивающих переносимый доступ к POSIX-совместимому управлению процессами, обработке сигналов, управлению файловой системой, управлению устройствами, указанию процедур и потоковому вводу-выводу.

Фортран 90

Преемник FORTRAN 77, неофициально известный как Fortran 90 (а до этого — Fortran 8X ), с большим опозданием был наконец выпущен в качестве стандарта ISO/IEC 1539:1991 в 1991 году и стандарта ANSI в 1992 году. В этой основной версии, написанной с ФОРТРАНа на Фортран, было добавлено множество новых функций, отражающих значительные изменения в практике программирования, произошедшие со времени стандарта 1978 года:

Устаревание и удаления

В отличие от предыдущей версии, в Fortran 90 не было удалено никаких функций. [36] Любая программа FORTRAN 77, соответствующая стандарту, также соответствовала стандарту Fortran 90, и любой стандарт должен был использоваться для определения ее поведения.

Небольшой набор функций был признан «устаревшим» и, как ожидается, будет удален в будущем стандарте. Все функции этих функций ранней версии могут выполняться более новыми функциями Fortran. Некоторые из них сохранены для упрощения переноса старых программ, но многие были удалены в Fortran 95.

"Привет, мир!" пример

программа helloworld print * , "Hello, World!" завершить программу helloworld   

Фортран 95

Fortran 95 , официально опубликованный как ISO/IEC 1539-1:1997, представлял собой небольшую доработку, главным образом для решения некоторых нерешенных проблем стандарта Fortran 90. Тем не менее, в Fortran 95 также добавлен ряд расширений, в частности из спецификации High Performance Fortran :

Был расширен ряд встроенных функций (например, dimк встроенным был добавлен аргумент maxloc).

Некоторые функции, отмеченные в Фортране 90 как «устаревшие», были удалены из Фортрана 95:

Важным дополнением к Fortran 95 стал технический отчет ISO TR-15581: Enhanced Data Type Features , неофициально известный как Allocatable TR. Эта спецификация определила расширенное использование ALLOCATABLEмассивов до появления полностью совместимых с Fortran 2003 компиляторов Fortran. К такому использованию относятся ALLOCATABLEмассивы в качестве компонентов производного типа, в списках фиктивных аргументов процедур и в качестве возвращаемых значений функций. ( ALLOCATABLEмассивы предпочтительнее POINTERмассивов на основе -, поскольку ALLOCATABLEFortran 95 гарантирует автоматическое освобождение массивов при выходе за пределы области видимости, что исключает возможность утечки памяти . Кроме того, элементы выделяемых массивов являются смежными, и псевдонимы не являются проблемой для оптимизация ссылок на массивы, позволяющая компиляторам генерировать более быстрый код, чем в случае указателей. [37] )

Еще одним важным дополнением к Fortran 95 стал технический отчет ISO TR-15580: Обработка исключений с плавающей запятой , неофициально известный как IEEE TR. Эта спецификация определила поддержку арифметики с плавающей запятой IEEE и обработки исключений с плавающей запятой .

Условная компиляция и строки различной длины

В дополнение к обязательному «Базовому языку» (определенному в ISO/IEC 1539-1: 1997), язык Fortran 95 также включает два дополнительных модуля:

которые вместе составляют многочастный международный стандарт (ISO/IEC 1539).

По мнению разработчиков стандартов, «необязательные части описывают автономные функции, которые запрошены значительной частью пользователей и/или разработчиков, но которые не считаются достаточно общими для того, чтобы они могли требоваться во всех соответствующих стандартам стандартах». Компиляторы Фортрана». Тем не менее, если Фортран, соответствующий стандарту, предоставляет такие возможности, то они «должны быть предоставлены в соответствии с описанием этих возможностей в соответствующей части стандарта».

Современный Фортран

Язык, определенный стандартами XXI века, в частности из-за включения в него поддержки объектно-ориентированного программирования , а затем и Coarray Fortran , часто называют «современным Фортраном», и этот термин все чаще используется в литературе. [38]

Фортран 2003

Fortran 2003, официально опубликованный как ISO/IEC 1539-1:2004, представляет собой серьезную версию, включающую множество новых функций. [39] Подробное описание новых возможностей Fortran 2003 доступно на официальном веб-сайте рабочей группы Fortran ( ISO/IEC JTC1/SC22 /WG5). [40]

В этой статье основные улучшения этой версии включают в себя:

Важным дополнением к Fortran 2003 стал технический отчет ISO TR-19767: Расширенные возможности модулей на Fortran. В этом отчете представлены подмодули, которые делают модули Fortran более похожими на модули Modula-2 . Они похожи на частные дочерние подразделения Ады . Это позволяет выразить спецификацию и реализацию модуля в отдельных программных модулях, что улучшает упаковку больших библиотек, позволяет сохранять коммерческую тайну при публикации окончательных интерфейсов и предотвращает каскадную компиляцию.

Фортран 2008

ISO/IEC 1539-1:2010, неофициально известный как Fortran 2008, был утвержден в сентябре 2010 года. [41] [42] Как и Fortran 95, это незначительное обновление, включающее пояснения и исправления Fortran 2003, а также некоторые новые возможности. Новые возможности включают в себя:

Окончательный проект международного стандарта (FDIS) доступен в виде документа N1830. [43]

Дополнением к Fortran 2008 является Техническая спецификация (TS) 29113 Международной организации по стандартизации (ISO) о дальнейшем взаимодействии Fortran с C , [44] [45], которая была представлена ​​в ISO в мае 2012 года на утверждение. Спецификация добавляет поддержку доступа к дескриптору массива из C и позволяет игнорировать тип и ранг аргументов.

Фортран 2018

Последняя версия языка (Fortran 2018) ранее называлась Fortran 2015. [46] Это значительная версия, выпущенная 28 ноября 2018 года. [47]

Fortran 2018 включает две ранее опубликованные технические спецификации:

Дополнительные изменения и новые функции включают поддержку ISO/IEC/IEEE 60559:2011 (версия стандарта IEEE с плавающей запятой до последней незначительной версии IEEE 754–2019), шестнадцатеричный ввод/вывод, улучшения IMPLICIT NONE и другие изменения. [50] [51] [52] [53]

Фортран 2023

Фортран 2023 (ISO/IEC 1539-1:2023) был опубликован в ноябре 2023 года, и его можно приобрести в ISO. [54]

Особенности языка

Полное описание возможностей языка Фортран, представленных в Фортране 95, приведено в соответствующей статье « Функции языка Фортран 95» . Языковые версии, определенные более поздними стандартами, часто называются «современным Фортраном» и описываются в литературе.

Наука и техника

Общерелятивистское магнитогидродинамическое моделирование аккреции черной дыры на Фортране с использованием кода BHAC с декартовой адаптивной сеткой
Обтекание цилиндра, рассчитанное на Фортране с помощью OpenCL (Бристольский университет, Великобритания)
Скорость и температура поверхности моря в океанах, рассчитанные с помощью кода NEMO Fortran (Nucleus for European Modeling of the Ocean, https://www.nemo-ocean.eu) в Суперкомпьютерном центре Барселоны (2020 г.)

Хотя в журнальной статье 1968 года авторы BASIC уже описали FORTRAN как «старомодный», [55] программы были написаны на Fortran в течение многих десятилетий, и огромное количество программного обеспечения Fortran ежедневно используется в научных и инженерных сообществах. . [56] Джей Пасачофф писал в 1984 году, что «студентам-физикам и астрономам просто необходимо выучить FORTRAN. В FORTRAN существует так много всего, что кажется маловероятным, что ученые перейдут на Pascal , Modula-2 или что-то еще». [57] В 1993 году Сесил Э. Лейт назвал ФОРТРАН «родным языком научных вычислений», добавив, что его замена любым другим возможным языком «может оставаться тщетной надеждой». [58]

Это основной язык для некоторых из наиболее интенсивных суперкомпьютерных задач, таких как астрономия , моделирование климата , вычислительная химия, вычислительная экономика , вычислительная гидродинамика , вычислительная физика , анализ данных, [59] гидрологическое моделирование , численная линейная алгебра и числовые библиотеки ( LAPACK , IMSL и NAG ), оптимизация , спутниковое моделирование, проектирование конструкций и прогнозирование погоды . [60] Многие тесты с плавающей запятой для оценки производительности новых компьютерных процессоров, такие как компоненты с плавающей запятой тестов SPEC (например, CFP2006, CFP2017), написаны на Фортране. Математические алгоритмы хорошо документированы в книге «Числовые рецепты» .

Помимо этого, более современные коды в области вычислительной техники обычно используют большие программные библиотеки, такие как METIS для разделения графов, PETSc или Trilinos для возможностей линейной алгебры, Deal.II или FEniCS для поддержки сетки и конечных элементов, а также другие общие библиотеки. С начала 2000-х годов многие из широко используемых вспомогательных библиотек также были реализованы на C , а в последнее время и на C++ . С другой стороны, языки высокого уровня, такие как Wolfram Language , MATLAB , Python и R , стали популярными в определенных областях вычислительной науки. Следовательно, все большая часть научных программ также пишется на таких языках сценариев более высокого уровня. По этой причине в Fortran 2003 были добавлены средства взаимодействия с C, которые были расширены технической спецификацией ISO/IEC 29113, которая была включена в Fortran 2018, чтобы обеспечить более гибкое взаимодействие с другими языками программирования.

Программное обеспечение для зондов НАСА «Вояджер-1» и «Вояджер-2» изначально было написано на FORTRAN 5, а затем портировано на FORTRAN 77. По состоянию на 25 сентября 2013 года часть программного обеспечения все еще написана на Fortran, а часть портирована на C. [61]

Портативность

На заре переносимость была проблемой, потому что не было единого стандарта (даже справочного руководства IBM), а компьютерные компании соперничали, чтобы дифференцировать свои предложения от других, предоставляя несовместимые функции. Стандарты улучшили переносимость. Стандарт 1966 года предоставил эталонный синтаксис и семантику, но поставщики продолжали предоставлять несовместимые расширения. Хотя осторожные программисты начали понимать, что использование несовместимых расширений вызывает дорогостоящие проблемы с переносимостью, и поэтому использовали такие программы, как The PFORT Verifier, [62] [63] это произошло только после стандарта 1977 года, когда Национальное бюро стандартов ( теперь NIST ) опубликовал FIPS PUB 69 , согласно которому процессоры, приобретенные правительством США, должны были диагностировать расширения стандарта. Вместо того, чтобы предлагать два процессора, по сути, каждый компилятор в конечном итоге имел хотя бы возможность диагностировать расширения. [64] [65]

Несовместимые расширения были не единственной проблемой переносимости. Для численных расчетов важно учитывать особенности арифметики. Об этом говорили Fox et al. в контексте стандарта 1966 года библиотеки PORT . [63] Содержащиеся в нем идеи получили широкое распространение и в конечном итоге были включены в стандарт 1990 года посредством внутренних функций запроса. Широкое (теперь почти повсеместное) принятие стандарта IEEE 754 для двоичной арифметики с плавающей запятой по существу устранило эту проблему.

Доступ к вычислительной среде (например, к командной строке программы, переменным среды, текстовому объяснению состояний ошибки) оставался проблемой до тех пор, пока она не была решена стандартом 2003 года.

Большие коллекции библиотечного программного обеспечения, которые можно охарактеризовать как слабо связанные с инженерными и научными расчетами, такие как графические библиотеки, были написаны на C, и поэтому доступ к ним представлял проблему переносимости. Эта проблема была решена путем включения совместимости C в стандарт 2003 года.

Теперь можно (и относительно легко) написать полностью переносимую программу на Фортране, даже не прибегая к препроцессору .

Устаревшие варианты

До тех пор, пока не был разработан стандарт Fortran 66, каждый компилятор поддерживал свой вариант Fortran. Некоторые из них более отличались от основного направления, чем другие.

Первый компилятор Фортрана установил высокий стандарт эффективности скомпилированного кода. Эта цель затрудняла создание компилятора, поэтому обычно это делали производители компьютеров для поддержки продаж оборудования. Это оставило важную нишу: быстрые компиляторы, обеспечивающие хорошую диагностику для программиста (часто студента). Примеры включают Watfor, Watfiv, PUFFT и, в меньшем масштабе, FORGO, Wits Fortran и Kingston Fortran 2.

Fortran 5 продавался компанией Data General Corp с начала 1970-х до начала 1980-х годов для линеек компьютеров Nova , Eclipse и MV . У него был оптимизирующий компилятор, весьма неплохой для миникомпьютеров того времени. Язык больше всего похож на FORTRAN 66.

FORTRAN V был распространен компанией Control Data Corporation в 1968 году для серии CDC 6600 . Язык был основан на FORTRAN IV. [66]

Univac также предложила компилятор для серии 1100, известный как FORTRAN V. Дочерним продуктом Univac Fortran V была Athena FORTRAN.

Конкретные варианты, выпущенные поставщиками высокопроизводительных научных компьютеров (например, Burroughs , Control Data Corporation (CDC), Cray , Honeywell , IBM , Texas Instruments и UNIVAC ), добавили расширения к Fortran, чтобы воспользоваться преимуществами специальных аппаратных функций, таких как инструкции. кэш , конвейеры ЦП и векторные массивы. Например, один из компиляторов FORTRAN от IBM ( H Extended IUP ) имел уровень оптимизации, который изменял порядок инструкций машинного кода , чтобы одновременно задействовать несколько внутренних арифметических блоков. Другим примером является CFD , специальный вариант FORTRAN, разработанный специально для суперкомпьютера ILLIAC IV , работающего в Исследовательском центре Эймса НАСА . IBM Research Labs также разработала расширенный язык на основе FORTRAN под названием VECTRAN для обработки векторов и матриц.

Объектно-ориентированный Фортран — это объектно-ориентированное расширение Фортрана, в котором элементы данных можно группировать в объекты, экземпляры которых можно создавать и выполнять параллельно. Он был доступен для Sun, Iris, iPSC и nCUBE, но больше не поддерживается.

Такие расширения, специфичные для конкретной машины, либо со временем исчезли, либо их элементы были включены в основные стандарты. Основным оставшимся расширением является OpenMP , которое представляет собой кроссплатформенное расширение для программирования с общей памятью. Одно новое расширение, Coarray Fortran, предназначено для поддержки параллельного программирования.

FOR TRANSIT — это название сокращенной версии языка FORTRAN IBM 704, которая была реализована для IBM 650 с использованием программы-переводчика, разработанной в Карнеги в конце 1950-х годов. [67] Следующий комментарий появляется в Справочном руководстве IBM ( FOR TRANSIT Автоматическая система кодирования C28-4038, Copyright 1957, 1959 IBM):

Система FORTRAN была разработана для более сложной машины, чем 650, и, следовательно, некоторые из 32 операторов, найденных в Справочном руководстве программиста FORTRAN, неприемлемы для системы FOR TRANSIT. Кроме того, были добавлены некоторые ограничения для языка FORTRAN. Однако ни одно из этих ограничений не делает исходную программу, написанную для FOR TRANSIT, несовместимой с системой FORTRAN для 704.

Допустимыми утверждениями были:

В одной программе можно было использовать до десяти подпрограмм.

Операторы FOR TRANSIT ограничивались только столбцами с 7 по 56. Перфокарты использовались для ввода и вывода в IBM 650. Требовалось три прохода для перевода исходного кода на язык «ИТ», затем для компиляции операторов ИТ в ассемблерный язык SOAP и, наконец, для создания объектной программы, которая затем могла быть загружены в машину для запуска программы (с использованием перфокарт для ввода данных и вывода результатов на перфокарты).

Для 650-х годов с барабаном памяти на 2000 слов существовало две версии: FOR TRANSIT I(S) и FOR TRANSIT II, ​​последняя для машин, оснащенных индексными регистрами и автоматической десятичной ( двузначной ) арифметикой с плавающей запятой. Приложение A к руководству включало электрические схемы панели управления устройством считывания карт/перфоратора IBM 533 .

Языки на основе Фортрана

До FORTRAN 77 обычно использовался ряд препроцессоров для создания более дружественного языка, с тем преимуществом, что предварительно обработанный код мог быть скомпилирован на любой машине со стандартным компилятором FORTRAN. Эти препроцессоры обычно поддерживают структурированное программирование , имена переменных длиной более шести символов, дополнительные типы данных, условную компиляцию и даже возможности макросов . Популярные препроцессоры включали EFL , FLECS, iftran , MORTRAN , SFtran, S-Fortran, Ratfor и Ratfiv . Например, Ratfor и Ratfiv реализовали C -подобный язык, выводящий предварительно обработанный код на стандартном FORTRAN 66. Несмотря на достижения в языке Fortran, препроцессоры продолжают использоваться для условной компиляции и макроподстановки.

Одна из самых ранних версий FORTRAN, представленная в 60-х годах, широко использовалась в колледжах и университетах. Разработанный, поддерживаемый и распространяемый Университетом Ватерлоо , WATFOR был в основном основан на FORTRAN IV. Студент, использующий WATFOR, мог отправить пакетное задание на FORTRAN, и, если не было синтаксических ошибок, программа сразу перешла бы к выполнению. Это упрощение позволило студентам сосредоточиться на синтаксисе и семантике своей программы или логическом потоке выполнения, вместо того, чтобы иметь дело с языком управления заданиями (JCL), последовательными процессами компиляции/ссылки-редактирования/выполнения или другими сложностями мэйнфрейма. / среда миникомпьютера. Обратной стороной этой упрощенной среды было то, что WATFOR не был хорошим выбором для программистов, которым требовались расширенные возможности их хост-процессора (ов), например, WATFOR обычно имел очень ограниченный доступ к устройствам ввода-вывода. На смену WATFOR пришли WATFIV и его более поздние версии.

программа ; s знак равно 0 я знак равно 1 , п ; с = с + 1 ; остановись, я ; s = 's' Стоп      

(линейное программирование)

LRLTRAN был разработан в Радиационной лаборатории Лоуренса для обеспечения поддержки векторной арифметики и динамического хранения, а также других расширений для поддержки системного программирования. В дистрибутив вошла операционная система LTSS.

Стандарт Fortran-95 включает дополнительную часть 3 , которая определяет дополнительную возможность условной компиляции . Эту возможность часто называют «CoCo».

Многие компиляторы Фортрана интегрировали в свои системы подмножества препроцессора C.

SIMSCRIPT — это препроцессор Fortran для конкретного приложения, предназначенный для моделирования и моделирования больших дискретных систем.

Язык программирования F был разработан как чистое подмножество Фортрана 95, в котором была предпринята попытка удалить избыточные, неструктурированные и устаревшие функции Фортрана, такие как оператор EQUIVALENCE. F сохраняет функции массивов, добавленные в Fortran 90, и удаляет операторы управления, которые устарели из-за конструкций структурированного программирования, добавленных как в FORTRAN 77, так и в Fortran 90. F описывается его создателями как «скомпилированный, структурированный язык программирования массивов, особенно хорошо подходящий для к образованию и научным вычислениям». [68] Essential Lahey Fortran 90 (ELF90) представлял собой аналогичную подгруппу.

Лэхи и Fujitsu объединились, чтобы создать Fortran для Microsoft .NET Framework . [69] Silverfrost FTN95 также способен создавать код .NET. [70]

Примеры кода

Следующая программа иллюстрирует динамическое выделение памяти и операции с массивами — две функции, представленные в Fortran 90. Особого внимания заслуживает отсутствие DOциклов и операторов IF/ THENпри манипулировании массивом; математические операции применяются к массиву в целом. Также очевидным является использование описательных имен переменных и общего форматирования кода, соответствующих современному стилю программирования. В этом примере вычисляется среднее значение по данным, введенным в интерактивном режиме.

среднее значение программы ! Прочтите несколько цифр и возьмите среднее значение ! Как написано, если точек данных нет, возвращается среднее значение, равное нулю ! Хотя это может быть нежелательным поведением, этот пример остается простым.   неявный нет real , размерность (:), распределяемые :: целочисленные баллы :: число_очков реальные :: средние_баллы , позитивное_среднее , негативное_среднее средние_баллы = 0,0 позитивное_среднее = 0,0 негативное_среднее = 0,0 запись ( * , * ) "Введите количество баллов для среднего:" прочитайте ( * , * ) количество_очков                            распределить ( баллы ( количество_очков ))  напишите ( * , * ) «Введите баллы для усреднения:» прочитайте ( * , * ) баллы      ! Возьмите среднее значение, суммируя баллы и разделив на количество_очков, если ( количество_очков > 0 ) средние_очков = сумма ( очков ) / число_очков          ! Теперь сформируйте среднее значение по положительным и отрицательным точкам только в том случае, если ( count ( точек > 0. ) > 0 ) положительное_среднее = sum ( точек , точек > 0. ) / count ( точек > 0. ) if ( count ( точек < 0. ) > 0 ) отрицательное_среднее = сумма ( баллов , баллов < 0. ) / количество ( баллов < 0. )                                 ! Вывести результат в модуль стандартного вывода терминала 6 write ( * , '(a,g12.4)' ) 'Average = ' , Average_points write ( * , '(a,g12.4)' ) 'Среднее положительное значение = ' , положительное_среднее write ( * , '(a,g12.4)' ) 'Среднее отрицательное количество баллов = ' , негативное_среднее освобождение ( пункты ) ! свободная память в конце программы, среднее значение               

Юмор

Во время того же заседания комитета по стандартам FORTRAN, на котором было выбрано название «FORTRAN 77», в официальный дистрибутив было включено сатирическое техническое предложение под названием «Буква O считается вредной ». Это предложение имело целью устранить путаницу, которая иногда возникает между буквой «О» и цифрой ноль, путем исключения этой буквы из допустимых имен переменных. Однако предложенный метод заключался в том, чтобы полностью исключить букву из набора символов (тем самым сохранив 48 как количество лексических символов, которое двоеточие увеличило до 49). Это считалось полезным, поскольку оно способствовало структурному программированию, делая невозможным использование пресловутого GO TOутверждения, как раньше. (Неприятные FORMATутверждения также будут исключены.) Было отмечено, что это «может сделать недействительными некоторые существующие программы», но что большинство из них «в любом случае, вероятно, не соответствуют требованиям». [71] [ ненадежный источник? ] [72]

Когда X3J3 обсуждал, должно ли минимальное количество отключений для цикла DO быть равно нулю или единице в Fortran 77, Лорен Мейснер предложил минимальное количество отключений, равное двум, рассуждая ( иронично) , что если бы оно было меньше двух, то было бы нет причин для цикла!

Когда добавлялись массивы предполагаемой длины, возник спор относительно подходящего символа для разделения верхней и нижней границ. В комментарии, рассматривающем эти аргументы, Уолт Брейнерд написал статью под названием «Астрономия против гастроэнтерологии», поскольку некоторые сторонники предлагали использовать звездочку или звездочку («*»), в то время как другие предпочитали двоеточие («:»). [ нужна цитата ]

Имена переменных, начинающиеся с букв I – N, по умолчанию имеют целочисленный тип, а переменные, начинающиеся с любых других букв, по умолчанию имеют значение вещественное, хотя программисты могут переопределить значения по умолчанию с помощью явного объявления. [73] Это привело к шутке: «В ФОРТРАНЕ БОГ РЕАЛЬНЫЙ (если не указано ЦЕЛОЕ ЧИСЛО)».

Смотрите также

Рекомендации

  1. ^ «Спецификация часовни (Благодарности)» (PDF) . Cray Inc., 1 октября 2015 г. Архивировано (PDF) из оригинала 5 февраля 2016 г. . Проверено 14 января 2016 г.
  2. ^ Джон Бэкус. «История ФОРТРАНА I, II и III» (PDF) . Softwarepreservation.org. Архивировано (PDF) из оригинала 26 июля 2007 г. Проверено 19 ноября 2014 г.
  3. Юджин Ло (18 июня 2010 г.). «Идеальный язык программирования HPC». Очередь . 8 (6).
  4. ^ «HPL — портативная реализация высокопроизводительного теста Linpack для компьютеров с распределенной памятью» . Проверено 21 февраля 2015 г.
  5. ^ «Q13. Каковы ориентиры?». Обзор — ЦП 2017 года . СПЕЦ . Проверено 13 ноября 2019 г.
  6. ^ TIOBE Software BV (сентябрь 2022 г.). «Индекс ТИОБЕ». TIOBE.com . ТИОБЕ . Проверено 23 сентября 2022 г.
  7. ^ abcde Бэкус, Джон Уорнер ; Бибер, Р.Дж.; Бест, Шелдон Ф.; Гольдберг, Ричард ; Херрик, Харлан Л.; Хьюз, РА; Митчелл, LB; Нельсон, Роберт А.; Натт, Рой ; Сэйр, Дэвид ; Шеридан, Питер Б.; Стерн, Гарольд; Циллер, Ирвинг (15 октября 1956 г.). Сэйр, Дэвид (ред.). Система автоматического кодирования FORTRAN для IBM 704 EDPM: Справочное руководство программиста (PDF) . Нью-Йорк, США: Отдел прикладных наук и отдел исследований в области программирования, International Business Machines Corporation . стр. 2, 19–20. Архивировано (PDF) из оригинала 4 июля 2022 г. Проверено 4 июля 2022 г.(2+51+1 стр.)
  8. ^ abcdef Бэкус, Джон (октябрь – декабрь 1998 г.). «История Фортрана I, II и III» (PDF) . IEEE Анналы истории вычислений . 20 (4): 68–78. дои : 10.1109/85.728232. Архивировано (PDF) из оригинала 3 марта 2016 г. Проверено 17 июня 2020 г.[1][2]
  9. ^ «ФОРТРАН: новаторский язык программирования». ИБМ . 7 марта 2012 года . Проверено 19 июля 2017 г.
  10. ^ "ФОРТРАН". Британская энциклопедия . 14 июня 2021 г. . Проверено 19 июля 2021 г.
  11. ^ Чепмен, Стивен Дж. (2018). Фортран для ученых и инженеров (Четвертое изд.). Нью-Йорк : Образование Макгроу-Хилл . п. 13. ISBN 978-0-07-338589-1.
  12. ^ «Набор символов Фортрана», определенный стандартом FORTRAN 77, был минимальным набором символов, который должны были поддерживать компиляторы, соответствующие стандарту; на практике многие компиляторы FORTRAN 77 поддерживали полный набор символов ASCII .
  13. ^ ab JW Бэкус ; Р. Дж. Бибер; С. Бест; Р. Гольдберг; Л. М. Хаибт ; Х. Л. Херрик; Р. А. Нельсон; Д. Сэйр ; П. Б. Шеридан; Х. Стерн; Л. Циллер; Р. А. Хьюз; Р. Натт (февраль 1957 г.). Система автоматического кодирования FORTRAN (PDF) . Западная объединенная компьютерная конференция. стр. 188–198. дои : 10.1145/1455567.1455599.
  14. ^ Минделл, Дэвид (2008). Цифровой Аполлон . Кембридж, Массачусетс: MIT Press. п. 99. ИСБН 978-0-262-13497-2. JSTOR  j.ctt5hhn02. ОСЛК  228031739.
  15. ^ Падуя, Дэвид (январь – февраль 2000 г.). «Компилятор Фортрана I» (PDF) . Вычисления в науке и технике . 2 (1): 70–75. Бибкод : 2000CSE.....2a..70P. дои : 10.1109/5992.814661. Архивировано из оригинала (PDF) 17 июня 2020 года. Компилятор Fortran I был первым крупным проектом по оптимизации кода. Он решал проблемы решающей важности, общее решение которых было важным направлением исследований в области технологии компиляторов на протяжении нескольких десятилетий. Многие классические методы анализа и оптимизации компилятора берут свое начало и вдохновение от компилятора Fortran I.
  16. Брайан Бергштейн (20 мая 2007 г.). «Умер создатель Фортрана Джон Бэкус» . MSNBC . Проверено 29 октября 2018 г.
  17. ^ «ФОРТРАН – первый язык программирования для числовых вычислений». Блог SciHi . 15 октября 2019 г.
  18. ^ Хейнс, Л.Х. (1965). «Последовательная компиляция и компилятор FORTRAN 1401». IBM Systems Journal . 4 (1): 73–80. дои : 10.1147/sj.41.0073.
  19. ^ Ли, Джон АН (1967). Анатомия компилятора . Ван Ностранд Рейнхольд.
  20. ^ Спецификации и рабочие процедуры Фортрана, IBM 1401 (PDF) . ИБМ. C24-1455-2. Архивировано (PDF) из оригинала 23 сентября 2017 г.
  21. ^ «Тема: GOTRAN НА ПАКЕТЕ ДИСКОВОГО ХРАНЕНИЯ IBM 1316 (серийный номер K7402)» . Архивировано из оригинала 21 февраля 2006 года . Проверено 3 марта 2006 г.
  22. ^ Система автоматического кодирования FORTRAN для IBM 704 EDPM: Предварительное руководство оператора (PDF) . Отдел исследований в области программирования, Международная корпорация Business Machines. 8 апреля 1957 г. стр. 6–37. Архивировано (PDF) из оригинала 26 февраля 2014 г.
  23. Армстед, Бетти Джо (21 января 2015 г.). «Мои годы в НАСА» (PDF) . Денверский музей природы и науки . Архивировано из оригинала (PDF) 24 декабря 2019 года . Проверено 15 июня 2019 г.
  24. ^ Справочное руководство, Система обработки данных IBM 7090 (PDF) . 1961. А22-6528-3. Архивировано (PDF) из оригинала 1 декабря 2008 г.
  25. ^ Руководство по общей информации о Fortran II (PDF) . 1963. Архивировано (PDF) из оригинала 26 апреля 2005 года . Проверено 19 ноября 2014 г.
  26. ^ Справочное руководство FORTRAN II для системы обработки данных IBM 704 (PDF) . 1958. С28-6000-2. Архивировано (PDF) из оригинала 30 октября 2005 г.
  27. ^ "Ибибилио.орг". Ибиблио.орг . Проверено 15 сентября 2014 г.
  28. ^ Спецификации языка Fortran IV, спецификации программ и рабочие процедуры, IBM 1401, 1440 и 1460 (PDF) . ИБМ. Апрель 1966 г. C24-3322-2. Архивировано (PDF) из оригинала 23 сентября 2017 г.
  29. ^ Маккракен, Дэниел Д. (1965). «Предисловие» . Руководство по программированию на FORTRAN IV . Нью-Йорк: Уайли. п. против ISBN 978-0-471-58281-6.
  30. ^ «Список реализаций FORTRAN 1957–1967» . Анналы IEEE. 2017 . Проверено 17 октября 2017 г.
  31. ^ Функциональные характеристики IBM System/360 Model 50 (PDF) . ИБМ. 1967. А22-6898-1. Архивировано (PDF) из оригинала 29 октября 2021 г.
  32. ^ ab Digital Equipment Corp. «Справочное руководство для программистов DECSYSTEM-10 FORTRAN IV (F40)» (PDF) . Гитхаб . Корпорация цифрового оборудования . Проверено 15 апреля 2022 г.
  33. ^ ab "ФОРТРАН IV | WorldCat.org". search.worldcat.org . Проверено 10 декабря 2023 г.
  34. ^ Mil-std-1753. Дополнение Министерства обороны к X3.9-1978. Типография правительства США . Архивировано из оригинала 9 ноября 2007 года . Проверено 13 декабря 2007 г.{{cite book}}: CS1 maint: числовые имена: список авторов ( ссылка )
  35. ^ IEEE 1003.9-1992 - Стандарт IEEE для информационных технологий - Языковые интерфейсы POSIX (R) FORTRAN 77 - Часть 1: Привязка для системного прикладного программного интерфейса (API). ИИЭЭ . Проверено 24 ноября 2018 г.
  36. ^ Приложение Б.1.
  37. ^ "Справочник по Фортрану 95" . Gnu.Орг . Проверено 10 мая 2014 г.
  38. ^ Лайонел, Стив (30 декабря 2013 г.). «Доктор Фортран в «Это современный мир Фортрана»». Дискуссионная группа форума Intel (была DEC) на Фортране . Интел . Проверено 11 апреля 2022 г.
  39. ^ «Фортран 2003 – Последний рабочий проект» . Gnu.Орг . Проверено 10 мая 2014 г.
  40. ^ «WG5 завершает обработку Fortran 2003 и TR» . nag.co.uk. _ 14 мая 2004 года. Архивировано из оригинала 5 августа 2004 года . Проверено 3 апреля 2023 г.. Его также можно загрузить в виде PDF-файла по адресу «Новые возможности Fortran 2003» (PDF) . Архивировано (PDF) из оригинала 15 января 2018 г. Проверено 3 апреля 2023 г.
  41. ^ «N1836, Сводка голосования/таблица ответов по ISO/IEC FDIS 1539-1, Информационные технологии – Языки программирования – Фортран – Часть 1: Базовый язык» (PDF) . Архивировано (PDF) из оригинала 15 января 2018 г.
  42. ^ «Фортран 2008 - Последний рабочий проект» (PDF) . Gnu.Орг. Архивировано (PDF) из оригинала 12 мая 2014 г. Проверено 10 мая 2014 г.
  43. ^ N1830, Информационные технологии – Языки программирования – Фортран – Часть 1: Базовый язык [3] [ мертвая ссылка ]
  44. ^ ISO/IEC TS 29113:2012 – Информационные технологии – Дальнейшая совместимость Fortran с C.
  45. ^ «Проект Технической спецификации (ТС) 29113» (PDF) . wg5-fortran.org . Архивировано (PDF) из оригинала 15 января 2018 г.
  46. ^ «Доктор Фортран в «Восемнадцать - новые пятнадцать»» . Software.intel.com . Проверено 20 ноября 2017 г.
  47. ^ «Фортран 2018». ИСО . Проверено 30 ноября 2018 г.
  48. ^ «Дальнейшая совместимость с C» (PDF) . ИСО. Архивировано (PDF) из оригинала 1 декабря 2017 г. Проверено 20 ноября 2017 г.
  49. ^ «Дополнительные параллельные функции в Фортране». ИСО . Проверено 20 ноября 2017 г.
  50. ^ «Новые возможности Фортрана 2015». ИСО . Проверено 23 июня 2017 г.
  51. ^ «Доктор Фортран в «Одна дверь закрывается»» . Software.intel.com . Проверено 21 сентября 2015 г.
  52. ^ «Доктор Фортран становится голландцем: Фортран 2015» . Software.intel.com . Проверено 19 ноября 2014 г.
  53. ^ Документ интерпретации Fortran 2018 (PDF) . 9 октября 2018 г.
  54. ^ «Фортран 2023». wg5-fortran.org . Проверено 30 ноября 2023 г.
  55. ^ Кемени, Джон Г.; Курц, Томас Э. (11 октября 1968 г.). «Дартмутское разделение времени». Наука . 162 (3850): 223–228. Бибкод : 1968Sci...162..223K. дои : 10.1126/science.162.3850.223. ПМИД  5675464.
  56. Филлипс, Ли (8 мая 2014 г.). «Будущее научных вычислений: может ли какой-либо язык кодирования превзойти бегемота 1950-х годов?». Арс Техника . Проверено 8 мая 2014 г.
  57. ^ Пасачофф, Джей М. (апрель 1984 г.). «Ученые: ФОРТРАН против Модулы-2». БАЙТ (буква). п. 404 . Проверено 6 февраля 2015 г.
  58. ^ Гальперин, Борис (1993). «26». Крупно-вихревое моделирование сложных инженерно-геофизических потоков . Лондон: Кембриджи. п. 573. ИСБН 978-0-521-43009-8.
  59. ^ Брандт, Зигмунд (1970). Статистические и вычислительные методы анализа данных . Издательство Северной Голландии. с. Предисловие. ISBN 0-7204-2033-4.
  60. Курчич, Милан (24 ноября 2020 г.). Современный Фортран: создание эффективных параллельных приложений. Саймон и Шустер. ISBN 978-1-61729-528-7.
  61. ^ «Межзвездный 8-трек: Как продолжает работать винтажная технология Voyager» . ПРОВОДНОЙ . Проверено 23 декабря 2017 г.
  62. ^ Гаффни, PW; Вутен, Дж. В. (1 мая 1980 г.). Методы обеспечения стандартизации программного обеспечения FORTRAN (Отчет). Окриджская национальная лаборатория. ОСТИ  5361454. ПФОРТ...Библиотека...
  63. ^ ab PA Fox (1977). «Порт — портативная библиотека математических подпрограмм». Портативная библиотека математических подпрограмм . Конспекты лекций по информатике. Том. 57. стр. 165–177. дои : 10.1007/3-540-08446-0_42. ISBN 978-3-540-08446-4. ПОРТ... пишется на (PFORT)..ANS Фортран
  64. ^ Уиттен, Дуглас Э.; Демейн, Поль А.Д. (1975). «Фортран, независимый от машины и конфигурации: Портативный Фортран {PFortran}». Транзакции IEEE по разработке программного обеспечения . Институт инженеров по электротехнике и электронике (IEEE). СЭ-1 (1): 111–124. дои : 10.1109/tse.1975.6312825. ISSN  0098-5589. S2CID  16485156.
  65. ^ «Проблемы переносимости». .. обсуждает .. переносимость .. Фортрана
  66. ^ Хили, MJR (1968). «К ФОРТРАНУ VI». Передовой научный Фортран от CDC . CDC. стр. 169–172. Архивировано из оригинала 5 июля 2009 года . Проверено 10 апреля 2009 г.
  67. ^ Перлис, AJ; Смит, Дж.В.; Ван Зоерен, внутренний переводчик отдела кадров (ИТ). Компилятор для IBM 650 (PDF) . Вычислительный центр Технологического института Карнеги. Архивировано (PDF) из оригинала 2 октября 2012 г.
  68. ^ "Домашняя страница языка программирования F" . Фортран.com. Архивировано из оригинала 9 января 2015 года . Проверено 19 ноября 2014 г.
  69. ^ «Фортран для языковой системы .NET». Архивировано из оригинала 18 октября 2014 года.
  70. ^ «FTN95: Фортран 95 для Windows» . Silverfrost.com . Проверено 19 ноября 2014 г.
  71. ^ Рассылка X3J3 после собрания, состоявшегося в Брукхейвенской национальной лаборатории в ноябре 1976 года.
  72. ^ «Уничтожение О». Компьютерный еженедельник . 3 марта 1977 года.
  73. ^ Правила ввода данных (Справочник по языку FORTRAN 77) . Проверено 29 сентября 2016 г.

дальнейшее чтение

Языковые стандарты
Сопутствующие стандарты
Другой справочный материал
Книги
Статьи

Внешние ссылки