Фортран
Парадигма | Мультипарадигмальность : структурированная , императивная ( процедурная , объектно-ориентированная ), универсальная , массивная. |
---|---|
Разработано | Джон Бэкус |
Разработчик | Джон Бэкус и IBM |
Впервые появился | 1957 год |
Стабильная версия | Фортран 2023 (ИСО/МЭК 1539:2023)
/ 17 ноября 2023 г |
Дисциплина набора текста | сильный , статичный , явный |
Расширения имен файлов | .f90 , .f , .for |
Веб-сайт | только фортран |
Основные реализации | |
Absoft , Cray , GFortran , G95 , IBM XL Fortran, Intel , Hitachi , Lahey/Fujitsu, Numerical Algorithms Group , Open Watcom , PathScale , PGI , Silverfrost , Oracle Solaris Studio и другие | |
Под влиянием | |
Спидкодирование | |
Под влиянием | |
АЛГОЛ 58 , БЕЙСИК , C , Часовня , [1] CMS-2 , DOPE , Fortress , MATLAB , PL/I , PACT I , MUMPS , IDL , Ratfor , SAKO [2] |
Фортран ( / ˈ f ɔːr t r æ n / ; ранее FORTRAN ) — это третьего поколения императивный компилируемый язык , программирования который особенно подходит для числовых и научных вычислений .
Первоначально Фортран был разработан IBM . [3] Впервые он был правильно скомпилирован в 1958 году. [4] на Фортране Компьютерные программы были написаны для поддержки научных и инженерных приложений, таких как численный прогноз погоды , анализ методом конечных элементов , вычислительная гидродинамика , геофизика , вычислительная физика , кристаллография и вычислительная химия . Это популярный язык для высокопроизводительных вычислений. [5] и используется для программ, которые оценивают и оценивают самые быстрые суперкомпьютеры в мире . [6] [7]
Фортран развивался через множество версий и диалектов. В 1966 году Американский национальный институт стандартов (ANSI) разработал стандарт для Фортрана, чтобы ограничить распространение компиляторов, использующих немного другой синтаксис. [8] В последующих версиях была добавлена поддержка символьного типа данных (Fortran 77), структурного программирования , программирования массивов , модульного программирования , общего программирования (Fortran 90), параллельных вычислений ( Fortran 95 ), объектно-ориентированного программирования (Fortran 2003) и параллельного программирования. (Фортран 2008).
С апреля 2024 года Фортран входит в десятку лучших языков индекса TIOBE , который является показателем популярности языков программирования. [9]
Мы
[ редактировать ]В первом руководстве по FORTRAN он описывается как система перевода формул , а название напечатано маленькими заглавными буквами . Фортран . [10] : стр.2 [11] Другие источники предполагают, что это название означает « Переводчик формул» . [12] или Перевод формул . [13]
Ранние компьютеры IBM не поддерживали строчные буквы, а названия версий языка до FORTRAN 77 обычно писались только заглавными буквами . [14] FORTRAN 77 был последней версией, в которой набор символов Фортрана включал только заглавные буквы. [15]
В официальных языковых стандартах Фортрана этот язык называется «Фортран» с начальными ограничениями, начиная с Фортрана 90. [ нужна ссылка ]
Происхождение
[ редактировать ]В конце 1953 года Джон В. Бэкус представил своему начальству в IBM предложение разработать более практичную альтернативу языку ассемблера для программирования их IBM 704 мейнфрейма . [11] : 69 Историческая команда Бэкуса по FORTRAN состояла из программистов Ричарда Голдберга, Шелдона Ф. Беста, Харлана Херрика, Питера Шеридана, Роя Натта , Роберта Нельсона, Ирвинга Циллера, Гарольда Стерна, Лоис Хайбт и Дэвида Сэйра . [16] Его концепции включали более простой ввод уравнений в компьютер - идею, разработанную Дж. Холкомбом Лэнингом и продемонстрированную в системе Лэнинга и Цирлера 1952 года. [17]
Проект спецификации системы перевода математических формул IBM был завершен к ноябрю 1954 года. [11] : 71 Первое руководство по FORTRAN появилось в октябре 1956 года. [10] [11] : 72 с первым компилятором FORTRAN , выпущенным в апреле 1957 года. [11] : 75 Фортран создал достаточно эффективный код, чтобы программисты на ассемблере могли принять замену языка программирования высокого уровня . [18]
Джон Бэкус сказал в 1979 году в интервью журналу Think , журналу для сотрудников IBM: «Большая часть моей работы связана с ленью. Мне не нравилось писать программы, и поэтому, когда я работал над IBM 701 , я писал программы для вычислений. траектории ракет, я начал работу над системой программирования, чтобы облегчить написание программ». [19]
Этот язык был широко принят учеными для написания программ с интенсивным числом вычислений, что побудило авторов компиляторов создавать компиляторы, которые могли генерировать более быстрый и эффективный код. Включение в язык комплексного числового типа данных сделало Фортран особенно подходящим для технических приложений, таких как электротехника. [20]
К 1960 году версии FORTRAN были доступны для компьютеров IBM 709 , 650 , 1620 и 7090 . Примечательно, что растущая популярность FORTRAN побудила конкурирующих производителей компьютеров предоставлять компиляторы FORTRAN для своих машин, так что к 1963 году существовало более 40 компиляторов FORTRAN.
FORTRAN был предоставлен для компьютера IBM 1401 с помощью инновационного 63-фазного компилятора, который полностью работал в основной памяти объемом всего 8000 (шестибитных) символов. Компилятор можно было запустить с ленты или с колоды на 2200 карт; он не использовал никаких дополнительных ленточных или дисковых накопителей. Он хранил программу в памяти и загружал оверлеи , которые постепенно преобразовывали ее на месте в исполняемую форму, как описал Хейнс. [21] Эта статья была перепечатана и отредактирована в обоих изданиях «Анатомии компилятора». [22] и в руководстве IBM «Спецификации и рабочие процедуры Фортрана, IBM 1401». [23] Исполняемая форма не была полностью машинным языком ; скорее, арифметика с плавающей запятой, подсценарии, ввод/вывод и ссылки на функции интерпретировались, предшествующие UCSD Pascal P-коду на два десятилетия. GOTRAN , упрощенная интерпретируемая версия FORTRAN I (всего с 12 операторами, а не 32) для операции «загрузи и работай», была доступна (по крайней мере, для раннего компьютера IBM 1620 ). [24] Современный Фортран и почти все более поздние версии полностью скомпилированы, как и другие высокопроизводительные языки.
Развитие Фортрана шло параллельно с ранней эволюцией технологии компиляторов , и многие достижения в теории и проектировании компиляторов были специально мотивированы необходимостью генерировать эффективный код для программ на Фортране.
ФОРТРАН
[ редактировать ]Первоначальная версия FORTRAN для IBM 704. [10] содержало 32 заявления , в том числе:
DIMENSION
иEQUIVALENCE
заявления- Операторы присвоения
- Трехсторонняя арифметика
IF
оператор, передающий управление одному из трех мест программы в зависимости от того, был ли результат арифметического выражения отрицательным, нулевым или положительным. - Операторы управления для проверки исключений (
IF ACCUMULATOR OVERFLOW
,IF QUOTIENT OVERFLOW
, иIF DIVIDE CHECK
); и операторы управления для управления сенсорными переключателями и сенсорными лампочками (IF (SENSE SWITCH)
,IF (SENSE LIGHT)
, иSENSE LIGHT
) GO TO
, вычисленоGO TO
,ASSIGN
, и назначенGO TO
DO
петли- Форматированный ввод-вывод:
FORMAT
,READ
,READ INPUT TAPE
,WRITE OUTPUT TAPE
,PRINT
, иPUNCH
- Неформатированный ввод-вывод:
READ TAPE
,READ DRUM
,WRITE TAPE
, иWRITE DRUM
- Другой ввод-вывод:
END FILE
,REWIND
, иBACKSPACE
PAUSE
,STOP
, иCONTINUE
FREQUENCY
оператор (для предоставления подсказок по оптимизации компилятору).
Арифметика IF
Этот оператор напоминал (но его было нелегко реализовать) инструкцию трехстороннего сравнения (CAS — сравнить аккумулятор с хранилищем), доступную на 704. Этот оператор предоставлял единственный способ сравнения чисел — путем проверки их разницы с сопутствующим риском переполнение. Позже этот недостаток был преодолен с помощью «логических» средств, представленных в FORTRAN IV.
The FREQUENCY
Первоначально (и необязательно) использовался оператор для определения вероятностей ветвления для трех случаев ветвления арифметики. IF
заявление. Его также можно использовать, чтобы указать, сколько итераций DO
цикл может запуститься. Первый компилятор FORTRAN использовал это взвешивание для выполнения во время компиляции моделирования сгенерированного кода методом Монте-Карло , результаты которого использовались для оптимизации размещения базовых блоков в памяти — очень сложная оптимизация для своего времени. Метод Монте-Карло описан в статье Бэкуса и др. об этой оригинальной реализации « Система автоматического кодирования FORTRAN» :
Фундаментальной единицей программы является базовый блок ; базовый блок — это участок программы, имеющий одну точку входа и одну точку выхода. Цель раздела 4 — подготовить для раздела 5 таблицу предшественников (таблица PRED), в которой перечислены базовые блоки и для каждого базового блока перечислены все базовые блоки, которые могут быть его непосредственными предшественниками в потоке, а также абсолютная частота появления каждая такая ссылка основного блока. Эта таблица получается путем однократного запуска программы методом Монте-Карло, в котором результат условных передач, возникающих из операторов типа IF и вычисленных GO TO, определяется генератором случайных чисел, соответствующим образом взвешенным в соответствии с любыми предоставленными операторами FREQUENCY. . [16]
Первый компилятор FORTRAN сообщал диагностическую информацию, останавливая программу при обнаружении ошибки и выводя код ошибки на консоль. Программист может найти этот код в таблице сообщений об ошибках в руководстве оператора, предоставив ему краткое описание проблемы. [10] : стр. 19–20 [25] Позже в НАСА была разработана программа обработки ошибок пользователя, например, деление на ноль. [26] был включен, информируя пользователей о том, какая строка кода содержит ошибку.
Фиксированная раскладка и перфокарты
[ редактировать ]До разработки дисковых файлов, текстовых редакторов и терминалов программы чаще всего вводились с помощью клавишной с 80 столбцами клавиатуры на перфокарты , по одной строке на карту. Полученная колода карт будет загружена в устройство чтения карт для компиляции. Коды перфокарт не содержали строчных букв или большого количества специальных символов, и были предложены специальные версии клавишного перфоратора IBM 026 , которые правильно печатали специальные символы, используемые в FORTRAN.
Отражая практику ввода перфокарт, программы на Фортране изначально были написаны в формате с фиксированными столбцами, при этом первые 72 столбца считывались в двенадцать 36-битных слов.
Буква «C» в столбце 1 привела к тому, что вся карточка рассматривалась как комментарий и игнорировалась компилятором. В противном случае столбцы карточки были разделены на четыре поля:
- От 1 до 5 были полем метки: здесь последовательность цифр использовалась в качестве метки для использования в операторах DO или управления, таких как GO TO и IF, или для идентификации оператора FORMAT, на который ссылаются операторы WRITE или READ. Ведущие нули игнорируются, а 0 не является допустимым номером метки.
- 6 было полем продолжения: символ, отличный от пробела или нуля, приводил к тому, что карта воспринималась как продолжение оператора предыдущей карты. Карты продолжения обычно имели номера 1, 2 и т. д. , и поэтому начальная карта могла иметь ноль в столбце продолжения, что не является продолжением предыдущей карты.
- Полем оператора служили поля с 7 по 72.
- IBM 704 От 73 до 80 были проигнорированы ( устройство чтения карт использовало только 72 столбца). [27]
Таким образом, столбцы с 73 по 80 могут использоваться для идентификационной информации, такой как ввод порядкового номера или текста, который можно использовать для изменения порядка карточек, если стопка карточек упала; хотя на практике это предназначалось для стабильных, производственных программ. IBM 519 можно было использовать для копирования колоды программ и добавления порядковых номеров. Некоторые ранние компиляторы, например IBM 650, имели дополнительные ограничения из-за ограничений устройств чтения карт. [28] Нажатия клавиш можно было запрограммировать на переход к столбцу 7 и пропуск после столбца 72. Более поздние компиляторы ослабили большинство ограничений фиксированного формата, и это требование было устранено в стандарте Fortran 90.
В поле оператора пробельные символы (пробелы) игнорировались за пределами текстового литерала. Это позволило опускать пробелы между токенами для краткости или включать пробелы в идентификаторы для ясности. Например, AVG OF X
был действительным идентификатором, эквивалентным AVGOFX
, и 101010DO101I=1,101
было действительным утверждением, эквивалентным 10101 DO 101 I = 1, 101
потому что ноль в столбце 6 рассматривается как пробел (!), а 101010DO101I=1.101
вместо этого был 10101 DO101I = 1.101
, присвоение 1.101 переменной с именем DO101I
. Обратите внимание на небольшую визуальную разницу между запятой и точкой.
Строки Холлерита , первоначально разрешенные только в операторах FORMAT и DATA, имели префикс количества символов и буквы H (например, 26HTHIS IS ALPHANUMERIC DATA.
), позволяющий сохранять пробелы в строке символов. Ошибки в подсчетах были проблемой.
Эволюция
[ редактировать ]Год | Неофициальное имя | Стандарт АНСИ | Стандарт ИСО/МЭК |
---|---|---|---|
1957 | ФОРТРАН | — | — |
1958 | ФОРТРАН II | — | — |
1958 | ФОРТРАН III | — | — |
1961 | ФОРТРАН IV | — | — |
1966 | ФОРТРАН 66 | X3.9-1966 | — |
1978 | ФОРТРАН 77 | X3.9-1978 | — |
1991 | Фортран 90 | Х3.198-1992 | 1539:1991 |
1997 | Фортран 95 | — | 1539-1:1997 |
2004 | Фортран 2003 | — | 1539-1:2004 |
2010 | Фортран 2008 | — | 1539-1:2010 |
2018 | Фортран 2018 | — | 1539-1:2018 |
2023 | Фортран 2023 | — | 1539-1:2023 |
ФОРТРАН II
[ редактировать ]от IBM FORTRAN II появился в 1958 году. Основное усовершенствование заключалось в поддержке процедурного программирования путем разрешения написанных пользователем подпрограмм и функций, которые возвращали значения с параметрами, передаваемыми по ссылке . Оператор COMMON предоставляет подпрограммам возможность доступа к общим (или глобальным ) переменным. Было представлено шесть новых заявлений: [29]
SUBROUTINE
,FUNCTION
, иEND
CALL
иRETURN
COMMON
В течение следующих нескольких лет в FORTRAN II была добавлена поддержка DOUBLE PRECISION
и COMPLEX
типы данных.
Ранние компиляторы FORTRAN не поддерживали рекурсию в подпрограммах. Ранние компьютерные архитектуры не поддерживали концепцию стека, а когда они напрямую поддерживали вызовы подпрограмм, место возврата часто сохранялось в одном фиксированном месте, рядом с кодом подпрограммы (например, IBM 1130 ) или в конкретном машинном регистре ( IBM 360 и последующие) . ), что допускает рекурсию только в том случае, если стек поддерживается программным обеспечением и адрес возврата сохраняется в стеке до выполнения вызова и восстанавливается после возврата вызова. Хотя это не указано в FORTRAN 77, многие компиляторы F77 поддерживали рекурсию в качестве опции, а мэйнфреймы Burroughs , разработанные со встроенной рекурсией, делали это по умолчанию. Он стал стандартом в Фортране 90 благодаря новому ключевому слову RECURSIVE. [30]
Простая программа 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 AREA OF A TRIANGLE WITH A STANDARD SQUARE ROOT FUNCTION
C INPUT - TAPE READER UNIT 5, INTEGER INPUT
C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT
C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING
READ INPUT TAPE 5, 501, IA, IB, IC
501 FORMAT (3I5)
C IA, IB, AND IC MAY NOT BE NEGATIVE OR ZERO
C FURTHERMORE, THE SUM OF TWO SIDES OF A TRIANGLE
C MUST BE GREATER THAN THE THIRD SIDE, SO WE CHECK FOR THAT, TOO
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 USING HERON'S FORMULA WE CALCULATE THE
C AREA OF THE TRIANGLE
799 S = FLOATF (IA + IB + IC) / 2.0
AREA = SQRTF( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) *
+ (S - FLOATF(IC)))
WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA
601 FORMAT (4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,
+ 13H SQUARE UNITS)
STOP
END
ФОРТРАН III
[ редактировать ]IBM также разработала FORTRAN III позволял использовать встроенный ассемблерный в 1958 году, который , помимо других функций, код; однако эта версия так и не была выпущена как продукт. Подобно 704 FORTRAN и FORTRAN II, FORTRAN III включал машинно-зависимые функции, которые делали написанный на нем код непереносимым с машины на машину. [11] : 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 году. [31]
К 1965 году FORTRAN IV должен был соответствовать стандарту, разрабатываемому рабочей группой X3.4.3 FORTRAN Американской ассоциации стандартов . [32]
Между 1966 и 1968 годами IBM предложила несколько компиляторов FORTRAN IV для своей System/360 , каждый из которых был назван буквами, обозначавшими минимальный объем памяти, необходимый для работы компилятора. [33] Буквы (F, G, H) соответствовали кодам, используемым с номерами моделей System/360 для обозначения объема памяти, причем каждое приращение буквы было в два раза больше: [34] : с. 5
- 1966: FORTRAN IV F для DOS/360 (64 КБ)
- 1966: FORTRAN IV G для OS/360 (128 КБ)
- 1968: FORTRAN IV H для OS/360 (256 КБ)
Digital Equipment Corporation поддерживала DECSYSTEM-10 Fortran IV (F40) для PDP-10 с 1967 по 1975 год. [35] Компиляторы также были доступны для систем серии UNIVAC 1100 и систем Control Data серий 6000 и 7000 . [36]
Университета Ватерлоо, Примерно в это же время FORTRAN IV начал становиться важным образовательным инструментом, и такие реализации, как WATFOR и WATFIV были созданы для упрощения сложных процессов компиляции и компоновки более ранних компиляторов.
В среде программирования FORTRAN IV той эпохи, за исключением той, которая использовалась в системах Control Data Corporation (CDC), в каждой строке помещалась только одна инструкция. Версия CDC позволяла использовать несколько инструкций в строке, если они разделены символом $ (доллар). FORTRAN Лист был разделен на четыре поля, как описано выше.
Два компилятора того времени, IBM «G» и UNIVAC, позволяли писать комментарии в одной строке с инструкциями, разделяя их специальным символом: «основное пространство»: V (перфорации 7 и 8) для UNIVAC и перфорации 12/11. /0/7/8/9 (шестнадцатеричный FF) для IBM. Эти комментарии не должны были помещаться в середину карточек продолжения. [35] [36]
ФОРТРАН 66
[ редактировать ]Возможно, самым значительным событием в ранней истории FORTRAN было решение Американской ассоциации стандартов (ныне Американский национальный институт стандартов (ANSI)) сформировать комитет, спонсируемый Ассоциацией производителей бизнес-оборудования (BEMA), для разработки американского стандарта Fortran . В результате два стандарта, утвержденные в марте 1966 года, определяли два языка: FORTRAN (основанный на FORTRAN IV, который служил стандартом де-факто) и Basic FORTRAN (основанный на FORTRAN II, но лишенный его машинно-зависимых функций). ФОРТРАН, определенный первым стандартом, официально обозначенным X3.9-1966, стал известен как ФОРТРАН 66 (хотя многие продолжали называть его ФОРТРАН IV, язык, на котором в значительной степени был основан стандарт). FORTRAN 66 фактически стал первой версией FORTRAN, соответствующей отраслевому стандарту. ФОРТРАН 66 включал:
- Основная программа,
SUBROUTINE
,FUNCTION
, иBLOCK DATA
программные единицы INTEGER
,REAL
,DOUBLE PRECISION
,COMPLEX
, иLOGICAL
типы данныхCOMMON
,DIMENSION
, иEQUIVALENCE
заявленияDATA
оператор для указания начальных значений- Внутренний и
EXTERNAL
(например, библиотечные) функции - Заявление о назначении
GO TO
, вычисленоGO TO
, назначенныйGO TO
, иASSIGN
заявления- Логический
IF
и арифметика (трехсторонняя)IF
заявления DO
оператор циклаREAD
,WRITE
,BACKSPACE
,REWIND
, иENDFILE
операторы последовательного ввода-выводаFORMAT
заявление и назначенный форматCALL
,RETURN
,PAUSE
, иSTOP
заявления- Константы Холлерита в
DATA
иFORMAT
операторов и в качестве аргументов процедур - Идентификаторы длиной до шести символов.
- Строки комментариев
END
линия
ФОРТРАН 77
[ редактировать ]После выпуска стандарта FORTRAN 66 поставщики компиляторов представили несколько расширений к стандарту Fortran , что побудило комитет ANSI X3J3 в 1969 году начать работу по пересмотру стандарта 1966 года при спонсорской поддержке CBEMA , Ассоциации производителей компьютерного оборудования для бизнеса (ранее BEMA). Окончательные проекты этого пересмотренного стандарта были распространены в 1977 году, что привело к официальному утверждению нового стандарта FORTRAN в апреле 1978 года. Новый стандарт, названный FORTRAN 77 и официально обозначенный X3.9-1978, добавил ряд важных функций для решения многих проблем. недостатки ФОРТРАН 66:
- Блокировать
IF
иEND IF
заявления с необязательнымELSE IF
иELSE
предложений, чтобы обеспечить улучшенную языковую поддержку структурного программирования. DO
расширения цикла, включая выражения параметров, отрицательные приращения и нулевой счетчик отключенийOPEN
,CLOSE
, иINQUIRE
операторы для улучшения возможностей ввода-вывода- Файловый ввод-вывод с прямым доступом
IMPLICIT
оператор, чтобы переопределить неявные соглашения о том, что необъявленные переменные являютсяINTEGER
если их имя начинается сI
,J
,K
,L
,M
, илиN
(иREAL
в противном случае)CHARACTER
тип данных, заменяющий строки Холлерита значительно расширенными возможностями для ввода и вывода символов, а также обработки символьных данных.PARAMETER
оператор для указания константSAVE
оператор для постоянных локальных переменных- Общие имена для встроенных функций (например,
SQRT
также принимает аргументы других типов, напримерCOMPLEX
илиREAL*16
). - Набор встроенных функций (
LGE, LGT, LLE, LLT
) для лексического сравнения строк на основе ASCII последовательности сопоставления . (Эти функции ASCII были запрошены Министерством обороны США в ходе голосования по условному одобрению. [ нужна ссылка ] ) - Максимум семь измерений в массивах вместо трёх. Также были обобщены допустимые индексные выражения.
В этой версии стандарта ряд функций был удален или изменен таким образом, что могло сделать недействительными программы, ранее соответствующие стандарту. (Удаление было единственной допустимой альтернативой X3J3 в то время, поскольку концепция « устаревания » еще не была доступна для стандартов ANSI.) Хотя большинство из 24 пунктов в списке конфликтов (см. Приложение A2 к X3.9-1978) касались лазеек или патологических случаев, разрешенных предыдущим стандартом, но редко используемых, небольшое количество конкретных возможностей было намеренно удалено, например:
- Константы Холлерита и данные Холлерита , такие как
GREET = 12HHELLO THERE!
- Чтение дескриптора редактирования H (поле Холлерита) в спецификации FORMAT.
- Переиндексация границ массива индексами
DIMENSION A(10,5) Y = A(11,1)
- Передача управления из диапазона цикла DO и обратно в него (также известный как «расширенный диапазон»).
Переход на стандарт ANSI Fortran
[ редактировать ]Разработка пересмотренного стандарта, пришедшего на смену FORTRAN 77, неоднократно откладывалась, поскольку процесс стандартизации с трудом успевал за быстрыми изменениями в практике вычислений и программирования. Между тем, в течение почти пятнадцати лет FORTRAN 77 оставался «стандартным ФОРТРАНом» и стал исторически наиболее важным диалектом.
Важным практическим расширением FORTRAN 77 стал выпуск MIL-STD-1753 в 1978 году. [37] Эта спецификация, разработанная Министерством обороны США , стандартизировала ряд функций, реализованных большинством компиляторов FORTRAN 77, но не включенных в стандарт ANSI FORTRAN 77. Эти функции в конечном итоге будут включены в стандарт Fortran 90.
DO WHILE
иEND DO
заявленияINCLUDE
заявлениеIMPLICIT NONE
вариантIMPLICIT
заявление- битовой манипуляции Внутренние функции , основанные на аналогичных функциях, включенных в промышленный язык реального времени Fortran (ANSI/ISA S61.1 (1976))
Стандарт IEEE 1003.9 POSIX , выпущенный в 1991 году, предоставил программистам FORTRAN 77 простые средства для выполнения системных вызовов POSIX. [38] В документе было определено более 100 вызовов, обеспечивающих переносимый доступ к POSIX-совместимому управлению процессами, обработке сигналов, управлению файловой системой, управлению устройствами, указанию процедур и потоковому вводу-выводу.
Фортран 90
[ редактировать ]Преемник FORTRAN 77, неофициально известный как Fortran 90 (а до этого — Fortran 8X ), с большим опозданием был наконец выпущен в качестве стандарта ISO/IEC 1539:1991 в 1991 году и стандарта ANSI в 1992 году. В этой основной версии, написанной с ФОРТРАНа на Фортран, было добавлено множество новых функций, отражающих значительные изменения в практике программирования, произошедшие со времени стандарта 1978 года:
- Ввод исходного кода в произвольной форме устранил необходимость пропускать первые шесть позиций символов перед вводом операторов.
- Ключевые слова Фортрана в нижнем регистре
- Идентификаторы длиной до 31 символа (в предыдущем стандарте было всего шесть символов).
- Встроенные комментарии
- Возможность работать с массивами (или частями массива) в целом, что значительно упрощает математические и инженерные вычисления.
- Операторы присваивания целых, частичных и маскированных массивов и выражения массивов, такие как
X(1:N)=R(1:N)*COS(A(1:N))
WHERE
оператор выборочного присвоения массива- константы и выражения со значениями массива,
- определяемые пользователем функции, возвращающие значения массива, и конструкторы массивов.
- Операторы присваивания целых, частичных и маскированных массивов и выражения массивов, такие как
RECURSIVE
процедуры- Модули для группировки связанных процедур и данных вместе и предоставления их другим программным модулям, включая возможность ограничить доступ только к определенным частям модуля.
- Значительно улучшенный механизм передачи аргументов, позволяющий интерфейсы во время компиляции. проверять
- Пользовательские интерфейсы для общих процедур
- Перегрузка оператора
- Производные (структурированные) типы данных
- Новый синтаксис объявления типа данных для указания типа данных и других атрибутов переменных.
- Динамическое распределение памяти с помощью
ALLOCATABLE
атрибут иALLOCATE
иDEALLOCATE
заявления POINTER
атрибут, назначение указателя иNULLIFY
заявление, облегчающее создание и манипулирование динамическими структурами данных- Структурированные циклические конструкции с
END DO
оператор завершения цикла иEXIT
иCYCLE
заявления о прекращении нормальногоDO
итерации цикла упорядоченным образом SELECT CASE
,CASE
, . . .CASE DEFAULT
,END SELECT
конструкция для многостороннего выбора- Портативная спецификация числовой точности под контролем пользователя
- Новые и усовершенствованные внутренние процедуры.
Устаревание и удаления
[ редактировать ]В отличие от предыдущей версии, в Fortran 90 не было удалено никаких функций. [39] Любая программа FORTRAN 77, соответствующая стандарту, также соответствовала стандарту Fortran 90, и любой стандарт должен был использоваться для определения ее поведения.
Небольшой набор функций был признан «устаревшим» и, как ожидается, будет удален в будущем стандарте. Все функции этих функций ранней версии могут выполняться более новыми функциями Fortran. Некоторые из них сохранены для упрощения переноса старых программ, но многие были удалены в Фортране 95.
Устаревшая функция | Текущий статус |
---|---|
Арифметический оператор IF | Устарело в F90, удалено в F2018. |
Нецелочисленные параметры DO или переменные управления | Устарело в F90, удалено в F95. |
Завершение общего цикла DO или завершение с помощью оператора, отличного от END DO или CONTINUE. | Устарело в F90, удалено в F2018. |
Переход к END IF снаружи блока | Устарело в F90, удалено в F95. |
Оператор ПАУЗЫ | Устарело в F90, удалено в F95. |
Оператор ASSIGN и назначенный оператор GO TO | Устарело в F90, удалено в F95. |
Присвоенные номера операторов и спецификаторы FORMAT | Устарело в F90, удалено в F95. |
H дескриптор редактирования | Устарело в F90, удалено в F95. |
Управление вертикальным форматом | Удален в F2003. |
Альтернативный возврат | Устаревший в F90 |
Вычисленный оператор GO TO | Устаревший в F90 |
Операторные функции | Устаревший в F90 |
Операторы DATA среди исполняемых операторов | Устаревший в F90 |
Символьные функции предполагаемой длины | Устаревший в F90 |
Исходный код фиксированной формы | Устаревший в F90 |
CHARACTER* форма объявления CHARACTER | Устаревший в F90 |
ВХОДНЫЕ заявления | Устарело в F2008 |
Форма метки оператора DO | Устарело в F2018 |
Операторы COMMON и EQUIVALENCE, а также программный модуль BLOCK DATA. | Устарело в F2018 |
Конкретные имена для внутренней функции | Устарело в F2018 |
Конструкция и оператор FORALL | Устарело в F2018 |
"Привет, мир!" пример
[ редактировать ]program helloworld
print *, "Hello, World!"
end program helloworld
Фортран 95
[ редактировать ]Fortran 95 , официально опубликованный как ISO/IEC 1539-1:1997, представлял собой небольшую доработку, главным образом для решения некоторых нерешенных проблем стандарта Fortran 90. Тем не менее, в Fortran 95 также добавлен ряд расширений, в частности из спецификации High Performance Fortran :
FORALL
и вложенныйWHERE
конструкции, помогающие векторизации- Пользовательский
PURE
иELEMENTAL
процедуры - Инициализация по умолчанию компонентов производного типа, включая инициализацию указателя.
- Расширена возможность использования выражений инициализации для объектов данных.
- Инициализация указателей на
NULL()
- Четко определил, что
ALLOCATABLE
массивы автоматически освобождаются, когда они выходят за пределы области видимости.
Был расширен ряд встроенных функций (например, dim
аргумент был добавлен в maxloc
внутренний).
Некоторые функции, отмеченные в Фортране 90 как «устаревшие», были удалены из Фортрана 95:
DO
утверждения с использованиемREAL
иDOUBLE PRECISION
индексные переменные- Разветвление на
END IF
оператор извне своего блока PAUSE
заявлениеASSIGN
и назначенGO TO
оператор и назначенные спецификаторы форматаH
Дескриптор редактирования Холлерита.
Важным дополнением к Fortran 95 стал технический отчет ISO TR-15581: Enhanced Data Type Features , неофициально известный как Allocatable TR. Эта спецификация определила расширенное использование ALLOCATABLE
массивы до появления полностью совместимых с Fortran 2003 компиляторов Fortran. Такое использование включает в себя ALLOCATABLE
массивы как компоненты производного типа, в списках фиктивных аргументов процедур и как возвращаемые значения функций. ( ALLOCATABLE
массивы предпочтительнее POINTER
-основанные массивы, потому что ALLOCATABLE
Fortran 95 гарантирует автоматическое освобождение массивов, когда они выходят за пределы области видимости, что исключает возможность утечки памяти . Кроме того, элементы выделяемых массивов являются смежными, и псевдонимы не являются проблемой для оптимизации ссылок на массивы, что позволяет компиляторам генерировать более быстрый код, чем в случае указателей. [40] )
Еще одним важным дополнением к Fortran 95 стал ISO технический отчет TR-15580: Обработка исключений с плавающей запятой , неофициально известный как IEEE TR. Эта спецификация определила поддержку арифметики с плавающей запятой IEEE и с плавающей запятой обработки исключений .
Условная компиляция и строки различной длины
[ редактировать ]В дополнение к обязательному «Базовому языку» (определенному в ISO/IEC 1539-1: 1997) язык Fortran 95 также включал два дополнительных модуля:
- Строки символов различной длины (ISO/IEC 1539-2: 2000)
- Условная компиляция (ISO/IEC 1539-3: 1998)
которые вместе составляют многочастный международный стандарт (ISO/IEC 1539).
По мнению разработчиков стандартов, «необязательные части описывают автономные функции, которые запрошены значительной частью пользователей и/или разработчиков, но которые не считаются достаточно общими для того, чтобы они могли требоваться во всех соответствующих стандарту функциях». Компиляторы Фортрана». Тем не менее, если Фортран, соответствующий стандарту, предоставляет такие возможности, то они «должны быть предоставлены в соответствии с описанием этих возможностей в соответствующей части стандарта».
Современный Фортран
[ редактировать ]Язык, определенный стандартами двадцать первого века, в частности из-за включения в него поддержки объектно-ориентированного программирования , а затем и Coarray Fortran , часто называют «современным Фортраном», и этот термин все чаще используется в литературе. [41]
Фортран 2003
[ редактировать ]Fortran 2003, официально опубликованный как ISO/IEC 1539-1:2004, представлял собой серьезную версию, в которой было представлено множество новых функций. [42] Подробный обзор новых возможностей Fortran 2003 доступен на официальном веб-сайте рабочей группы Fortran ( ISO/IEC JTC1/SC22 /WG5). [43]
В этой статье основные улучшения этой версии включают в себя:
- Улучшения производных типов: параметризованные производные типы, улучшенный контроль доступности, улучшенные конструкторы структур и финализаторы.
- объектно-ориентированного программирования Поддержка : расширение и наследование типов , полиморфизм , динамическое выделение типов и процедуры привязки типов, обеспечивающие полную поддержку абстрактных типов данных.
- Улучшения в обработке данных: выделяемые компоненты (включая TR 15581), параметры отложенного типа,
VOLATILE
атрибут , явная спецификация типа в конструкторах массивов и операторах выделения, улучшения указателей, расширенные выражения инициализации и расширенные встроенные процедуры. - Улучшения ввода/вывода: асинхронная передача, потоковый доступ, определяемые пользователем операции передачи для производных типов, определяемый пользователем контроль округления во время преобразования формата, именованные константы для предварительно подключенных модулей,
FLUSH
оператор, регуляризация ключевых слов и доступ к сообщениям об ошибках - Указатели процедур
- Поддержка арифметики с плавающей запятой IEEE и с плавающей запятой обработки исключений (включая TR 15580).
- Совместимость с языком программирования C.
- Поддержка международного использования: доступ к 4-байтовым символам ISO 10646 и выбор десятичных чисел или запятых при вводе/выводе в числовом формате.
- Расширенная интеграция с операционной системой хоста: доступ к командной строки аргументам , переменным среды и сообщениям об ошибках процессора.
Важным дополнением к Fortran 2003 стал технический отчет ISO TR-19767: Расширенные возможности модулей на Fortran. В этом отчете представлены подмодули, которые делают модули Fortran более похожими на модули Modula-2 . Они похожи на Ады частные дочерние подразделения . Это позволяет выразить спецификацию и реализацию модуля в отдельных программных модулях, что улучшает упаковку больших библиотек, позволяет сохранять коммерческую тайну при публикации окончательных интерфейсов и предотвращает каскадную компиляцию.
Фортран 2008
[ редактировать ]ISO/IEC 1539-1:2010, неофициально известный как Fortran 2008, был утвержден в сентябре 2010 года. [44] [45] Как и в случае с Fortran 95, это незначительное обновление, включающее пояснения и исправления Fortran 2003, а также вводящее некоторые новые возможности. Новые возможности включают в себя:
- Субмодули – дополнительные возможности структурирования модулей; заменяет ISO/IEC TR 19767:2005.
- Coarray Fortran — модель параллельного выполнения
- Конструкция DO CONCURRENT – для итераций цикла без взаимозависимостей.
- Атрибут CONTIGUOUS – для указания ограничений по размещению хранилища.
- Конструкция BLOCK – может содержать объявления объектов с областью действия конструкции.
- Рекурсивные выделяемые компоненты – как альтернатива рекурсивным указателям в производных типах.
Окончательный проект международного стандарта (FDIS) доступен в виде документа N1830. [46]
Дополнением к Fortran 2008 является Международной организации по стандартизации Техническая спецификация (TS) 29113 (ISO) о дальнейшей совместимости Fortran с C. [47] [48] который был представлен на утверждение в ISO в мае 2012 года. Спецификация добавляет поддержку доступа к дескриптору массива из C и позволяет игнорировать тип и ранг аргументов.
Фортран 2018
[ редактировать ]Последняя версия языка (Fortran 2018) ранее называлась Fortran 2015. [49] Это была значительная доработка, выпущенная 28 ноября 2018 года. [50]
Fortran 2018 включает две ранее опубликованные технические спецификации:
- ISO/IEC TS 29113:2012 Дальнейшее взаимодействие с C [51]
- ISO/IEC TS 18508:2015 Дополнительные параллельные функции на Фортране [52]
Дополнительные изменения и новые функции включают поддержку ISO/IEC/IEEE 60559:2011 (версия стандарта IEEE с плавающей запятой до последней незначительной версии IEEE 754–2019), шестнадцатеричный ввод/вывод, улучшения IMPLICIT NONE и другие изменения. [53] [54] [55] [56]
В Фортране 2018 удален арифметический оператор IF. Также были удалены неблочные конструкции DO — циклы, которые не заканчиваются операторами END DO или CONTINUE. Это устаревшая часть языка со времен Фортрана 90.
Новыми устаревшими являются: операторы COMMON и EQUIVALENCE и программный модуль BLOCK DATA, помеченные циклы DO, специальные имена для встроенных функций, а также оператор и конструкция FORALL.
Фортран 2023
[ редактировать ]Фортран 2023 (ISO/IEC 1539-1:2023) был опубликован в ноябре 2023 года, и его можно приобрести в ISO. [57] Fortran 2023 — это небольшое расширение Fortran 2018, направленное на исправление ошибок и упущений. в Fortran 2018. Он также добавляет некоторые небольшие функции, в том числе возможность перечисляемого типа .
Особенности языка
[ редактировать ]Полное описание возможностей языка Фортран, представленных в Фортране 95, приведено в соответствующей статье « Функции языка Фортран 95» . Языковые версии, определенные более поздними стандартами, часто называются «современным Фортраном» и описываются в литературе.
Наука и техника
[ редактировать ]Хотя в журнальной статье авторов BASIC 1968 года FORTRAN уже описывался как «старомодный», [58] программы писались на Фортране в течение многих десятилетий, и огромное количество программного обеспечения на Фортране ежедневно используется в научных и инженерных сообществах. [59] Джей Пасачофф писал в 1984 году, что «студентам-физикам и астрономам просто необходимо выучить FORTRAN. В FORTRAN существует так много всего, что кажется маловероятным, что ученые перейдут на Pascal , Modula-2 или что-то еще». [60] В 1993 году Сесил Э. Лейт назвал ФОРТРАН «родным языком научных вычислений», добавив, что его замена любым другим возможным языком «может оставаться тщетной надеждой». [61]
Это основной язык для некоторых из наиболее интенсивных суперкомпьютерных задач, таких как астрономия , моделирование климата , вычислительная химия, вычислительная экономика , вычислительная гидродинамика , вычислительная физика , анализ данных и т. д. [62] гидрологическое моделирование , численная линейная алгебра и числовые библиотеки ( LAPACK , IMSL и NAG ), оптимизация , спутниковое моделирование, проектирование конструкций и прогнозирование погоды . [63] Многие тесты с плавающей запятой для оценки производительности новых компьютерных процессоров, такие как компоненты с плавающей запятой тестов 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, чтобы обеспечить более гибкое взаимодействие с другими языками программирования.
Портативность
[ редактировать ]переносимость На заре была проблемой, потому что не было единого стандарта (даже справочного руководства IBM), а компьютерные компании соперничали, чтобы дифференцировать свои предложения от других, предоставляя несовместимые функции. Стандарты улучшили переносимость. Стандарт 1966 года предоставил эталонный синтаксис и семантику, но поставщики продолжали предоставлять несовместимые расширения. Хотя осторожные программисты начали понимать, что использование несовместимых расширений вызывает дорогостоящие проблемы с переносимостью, и поэтому использовали такие программы, как The PFORT Verifier, [64] [65] только после стандарта 1977 года, когда Национальное бюро стандартов (ныне NIST ) опубликовало FIPS PUB 69 , процессоры, закупленные правительством США, были обязаны диагностировать расширения стандарта. Вместо того, чтобы предлагать два процессора, по сути, каждый компилятор в конечном итоге имел хотя бы возможность диагностировать расширения. [66] [67]
Несовместимые расширения были не единственной проблемой переносимости. Для численных расчетов важно учитывать особенности арифметики. Об этом говорили Fox et al. в контексте стандарта 1966 года библиотеки PORT . [65] Содержащиеся в нем идеи получили широкое распространение и в конечном итоге были включены в стандарт 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. [68]
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-х годов. [69] Следующий комментарий появляется в Справочном руководстве IBM ( FOR TRANSIT Automatic Coding System C28-4038, Copyright 1957, 1959 IBM):
Система FORTRAN была разработана для более сложной машины, чем 650, и, следовательно, некоторые из 32 операторов, найденных в Справочном руководстве программиста FORTRAN, неприемлемы для системы FOR TRANSIT. Кроме того, были добавлены некоторые ограничения для языка FORTRAN. Однако ни одно из этих ограничений не делает исходную программу, написанную для FOR TRANSIT, несовместимой с системой FORTRAN для 704.
Допустимыми утверждениями были:
- Операторы арифметического присваивания, например,
a = b
GO to n
GO TO (n1, n2, ..., nm), i
IF (a) n1, n2, n3
PAUSE
STOP
DO n i = m1, m2
CONTINUE
END
READ n, list
PUNCH n, list
DIMENSION V, V, V, ...
EQUIVALENCE (a,b,c), (d,c), ...
В одной программе можно было использовать до десяти подпрограмм.
Операторы FOR TRANSIT ограничивались только столбцами с 7 по 56. Перфокарты использовались для ввода и вывода в IBM 650. Требовалось три прохода для перевода исходного кода на язык «ИТ», затем для компиляции операторов ИТ в ассемблерный язык SOAP и, наконец, для создания объектной программы, которая затем могла быть загружены в машину для запуска программы (с использованием перфокарт для ввода данных и вывода результатов на перфокарты).
Для 650-х годов с барабаном памяти на 2000 слов существовало две версии: FOR TRANSIT I(S) и FOR TRANSIT II, последняя для машин, оснащенных индексными регистрами и автоматической десятичной ( двузначной ) арифметикой с плавающей запятой. Приложение А к руководству включало электрические схемы IBM 533 устройством считывания карт/перфоратора панели управления .
Языки на основе Фортрана
[ редактировать ]До FORTRAN 77 обычно использовался ряд препроцессоров для создания более дружественного языка, с тем преимуществом, что предварительно обработанный код мог быть скомпилирован на любой машине со стандартным компилятором FORTRAN. Эти препроцессоры обычно поддерживают структурированное программирование , имена переменных длиной более шести символов, дополнительные типы данных, условную компиляцию и даже возможности макросов . Популярные препроцессоры включали EFL , FLECS , iftran , MORTRAN , SFtran , S-Fortran , Ratfor и Ratfiv . EFL, Ratfor и Ratfiv, например, реализовали C -подобные языки, выдавая предварительно обработанный код на стандартном FORTRAN 66. Препроцессор PFORT часто использовался для проверки соответствия кода переносимому подмножеству языка. Несмотря на достижения в языке Фортран, препроцессоры продолжают использоваться для условной компиляции и замены макросов.
Одна из самых ранних версий FORTRAN, представленная в 60-х годах, широко использовалась в колледжах и университетах. Разработанный, поддерживаемый и распространяемый Университетом Ватерлоо , WATFOR был в основном основан на FORTRAN IV. Студент, использующий WATFOR, мог отправить пакетное задание на FORTRAN, и, если не было синтаксических ошибок, программа сразу перешла бы к выполнению. Это упрощение позволило студентам сосредоточиться на синтаксисе и семантике своей программы или логическом потоке выполнения, вместо того, чтобы иметь дело с языком управления заданиями (JCL), последовательными процессами компиляции/ссылки-редактирования/выполнения или другими сложностями мэйнфрейма. / среда миникомпьютера. Обратной стороной этой упрощенной среды было то, что WATFOR не был хорошим выбором для программистов, которым требовались расширенные возможности их хост-процессора (ов), например, WATFOR обычно имел очень ограниченный доступ к устройствам ввода-вывода. На смену WATFOR пришли WATFIV и его более поздние версии.
program; s=0 i=1,n; s=s+1; stop i; s='s' Stop
(линейное программирование)
LRLTRAN был разработан в Радиационной лаборатории Лоуренса для обеспечения поддержки векторной арифметики и динамического хранения, а также других расширений для поддержки системного программирования. В состав дистрибутива вошла операционная система Livermore Time Sharing System (LTSS).
Стандарт Fortran-95 включает дополнительную часть 3 , которая определяет дополнительную возможность условной компиляции . Эту возможность часто называют «CoCo».
Многие компиляторы Фортрана интегрировали подмножества препроцессора C. в свои системы
SIMSCRIPT — это препроцессор Fortran для конкретного приложения, предназначенный для моделирования и моделирования больших дискретных систем.
Язык программирования F был разработан как чистое подмножество Фортрана 95, в котором была предпринята попытка удалить избыточные, неструктурированные и устаревшие функции Фортрана, такие как EQUIVALENCE
заявление. F сохраняет функции массивов, добавленные в Fortran 90, и удаляет операторы управления, которые устарели из-за конструкций структурированного программирования, добавленных как в FORTRAN 77, так и в Fortran 90. F описывается его создателями как «компилируемый, структурированный язык программирования массивов, особенно хорошо подходящий для к образованию и научным вычислениям». [70] Essential Lahey Fortran 90 (ELF90) представлял собой аналогичную подгруппу.
Лэхи и Fujitsu объединились, чтобы создать язык Fortran для Microsoft .NET Framework . [71] Silverfrost FTN95 также способен создавать код .NET. [72]
Примеры кода
[ редактировать ]Следующая программа иллюстрирует динамическое выделение памяти и операции с массивами — две функции, представленные в Fortran 90. Особого внимания заслуживает отсутствие DO
петли и IF
/ THEN
операторы управления массивом; математические операции применяются к массиву в целом. Также очевидным является использование описательных имен переменных и общего форматирования кода, соответствующих современному стилю программирования. В этом примере вычисляется среднее значение по данным, введенным в интерактивном режиме.
program average
! Read in some numbers and take the average
! As written, if there are no data points, an average of zero is returned
! While this may not be desired behavior, it keeps this example simple
implicit none
real, allocatable :: points(:)
integer :: number_of_points
real :: average_points, positive_average, negative_average
average_points = 0.
positive_average = 0.
negative_average = 0.
write (*,*) "Input number of points to average:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "Enter the points to average:"
read (*,*) points
! Take the average by summing points and dividing by number_of_points
if (number_of_points > 0) average_points = sum(points) / number_of_points
! Now form average over positive and negative points only
if (count(points > 0.) > 0) positive_average = sum(points, points > 0.) / count(points > 0.)
if (count(points < 0.) > 0) negative_average = sum(points, points < 0.) / count(points < 0.)
! Print result to terminal stdout unit 6
write (*,'(a,g12.4)') 'Average = ', average_points
write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
write (*,'(a,g12.4)') 'Average of negative points = ', negative_average
deallocate (points) ! free memory
end program average
Юмор
[ редактировать ]Во время того же заседания комитета по стандартам FORTRAN, на котором было выбрано название «FORTRAN 77», в официальный дистрибутив было включено сатирическое техническое предложение под названием «Буква O считается вредной ». Это предложение имело целью устранить путаницу, которая иногда возникает между буквой «О» и цифрой ноль, путем исключения этой буквы из допустимых имен переменных. Однако предложенный метод заключался в том, чтобы полностью исключить букву из набора символов (тем самым сохранив 48 как количество лексических символов, которое двоеточие увеличило до 49). Это считалось выгодным, поскольку способствовало развитию структурного программирования, делая невозможным использование пресловутой технологии GO TO
заявление, как и прежде. (Проблемный FORMAT
утверждения также будут исключены.) Было отмечено, что это «может сделать недействительными некоторые существующие программы», но что большинство из них «в любом случае, вероятно, не соответствовали требованиям». [73] [ ненадежный источник? ] [74]
Когда X3J3 обсуждал, должно ли минимальное количество отключений для цикла DO быть равно нулю или единице в Fortran 77, Лорен Мейснер предложил минимальное количество отключений, равное двум, рассуждая (иронично) , что если бы оно было меньше двух, то не быть причиной для цикла.
Когда добавлялись массивы предполагаемой длины, возник спор относительно подходящего символа для разделения верхней и нижней границ. В комментарии, рассматривающем эти аргументы, Уолт Брейнерд написал статью под названием «Астрономия против гастроэнтерологии», потому что некоторые сторонники предлагали использовать звездочку или звездочку («*»), в то время как другие предпочитали двоеточие («:»). [ нужна ссылка ]
Имена переменных, начинающиеся с букв I – N, имеют по умолчанию целочисленный тип, а переменные, начинающиеся с любых других букв, по умолчанию имеют значение вещественное, хотя программисты могут переопределить значения по умолчанию с помощью явного объявления. [75] Это привело к шутке: «В ФОРТРАНЕ БОГ РЕАЛЬНЫЙ (если не указано ЦЕЛОЕ ЧИСЛО)».
См. также
[ редактировать ]- f2c - программа для преобразования кодовых
- F2PY — библиотека Python для числового программирования.
- FORMAC - система компьютерной алгебры, основанная на
- Список компиляторов Фортрана
- Список числовых библиотек Фортрана
- Список языков программирования
- Матричное представление – метод хранения в памяти компьютера.
- Код спагетти — исходный код программного обеспечения с плохой структурой.
Ссылки
[ редактировать ]- ^ «Спецификация часовни (Благодарность)» (PDF) . Cray Inc., 1 октября 2015 г. Архивировано (PDF) из оригинала 5 февраля 2016 г. . Проверено 14 января 2016 г.
- ^ Отчет о визите для обсуждения общих языков программирования в Чехословакию и Польшу, 1963, Джон А. Госден (редактор), Роджер Э. Гей, Джон Л. Джонс, Джек Н. Мернер, Кристофер Дж. Шоу
- ^ Джон Бэкус. «История ФОРТРАНА I, II и III» (PDF) . Softwarepreservation.org. Архивировано (PDF) из оригинала 26 июля 2007 г. Проверено 19 ноября 2014 г.
- ^ Уилсон, Лесли Б. (2001). Языки сравнительного программирования, третье издание . Аддисон-Уэсли. п. 16. ISBN 0-201-71012-9 .
Руководство по Фортрану I было выпущено в 1956 году, но только в 1958 году успешные компиляторы начали корректно запускать программы.
- ^ Ло, Евгений (18 июня 2010 г.). «Идеальный язык программирования для HPC» . Очередь АКМ . 8 (6): 30–38. дои : 10.1145/1810226.1820518 .
- ^ «HPL — портативная реализация высокопроизводительного теста Linpack для компьютеров с распределенной памятью» . Проверено 21 февраля 2015 г.
- ^ «Вопрос 13. Каковы ориентиры?» . Обзор — ЦП 2017 года . СПЕЦ . Проверено 13 ноября 2019 г.
- ^ Уилсон, Лесли Б. (2001). Языки сравнительного программирования, третье издание . Аддисон-Уэсли. п. 18. ISBN 0-201-71012-9 .
Другая проблема заключалась в том, что для Фортрана не было стандарта, и поэтому несколько разные версии... скорее всего, потерпят неудачу при использовании с другим компилятором.
- ^ TIOBE Software BV (май 2024 г.). «Индекс ТИОБЕ» . TIOBE.com . ТИОБЕ . Проверено 6 мая 2024 г.
- ^ Перейти обратно: а б с д и Бэкус, Джон Уорнер ; Бибер, Р.Дж.; Бест, Шелдон Ф.; Гольдберг, Ричард ; Херрик, Харлан Л.; Хьюз, РА; Митчелл, LB; Нельсон, Роберт А.; Натт, Рой ; Сэйр, Дэвид ; Шеридан, Питер Б.; Стерн, Гарольд; Циллер, Ирвинг (15 октября 1956 г.). Сэйр, Дэвид (ред.). Система автоматического кодирования FORTRAN для IBM 704 EDPM: Справочное руководство программиста (PDF) . Нью-Йорк, США: Отдел прикладных наук и отдел исследований в области программирования, International Business Machines Corporation . стр. 2, 19–20. Архивировано (PDF) из оригинала 4 июля 2022 г. Проверено 4 июля 2022 г. (2+51+1 стр.)
- ^ Перейти обратно: а б с д и ж Бэкус, Джон (октябрь – декабрь 1998 г.). «История Фортрана I, II и III» (PDF) . IEEE Анналы истории вычислений . 20 (4): 68–78. дои : 10.1109/85.728232 . Архивировано (PDF) из оригинала 3 марта 2016 г. Проверено 17 июня 2020 г. [1] [2]
- ^ «ФОРТРАН: новаторский язык программирования» . ИБМ . 7 марта 2012 года . Проверено 19 июля 2017 г.
- ^ «ФОРТРАН» . Британская энциклопедия . 14 июня 2021 г. . Проверено 19 июля 2021 г.
- ^ Чепмен, Стивен Дж. (2018). Фортран для ученых и инженеров (Четвертое изд.). Нью-Йорк : Образование Макгроу-Хилл . п. 13. ISBN 978-0-07-338589-1 .
- ^ «Набор символов Фортрана», определенный стандартом FORTRAN 77, был минимальным набором символов, который должны были поддерживать компиляторы, соответствующие стандарту; на практике многие компиляторы FORTRAN 77 поддерживали полный набор символов ASCII .
- ^ Перейти обратно: а б Дж. В. Бэкус ; Р. Дж. Бибер; С. Бест; Р. Гольдберг; Л. М. Хаибт ; Х. Л. Херрик; Р. А. Нельсон; Д. Сэйр ; П. Б. Шеридан; Х. Стерн; Л. Циллер; Р. А. Хьюз; Р. Натт (февраль 1957 г.). Система автоматического кодирования FORTRAN (PDF) . Западная объединенная компьютерная конференция. стр. 188–198. дои : 10.1145/1455567.1455599 .
- ^ Минделл, Дэвид (2008). Цифровой Аполлон . Кембридж, Массачусетс: MIT Press. п. 99. ИСБН 978-0-262-13497-2 . JSTOR j.ctt5hhn02 . OCLC 228031739 .
- ^ Падуя, Дэвид (январь – февраль 2000 г.). «Компилятор Фортрана I» (PDF) . Вычисления в науке и технике . 2 (1): 70–75. Бибкод : 2000CSE.....2a..70P . дои : 10.1109/5992.814661 . Архивировано из оригинала (PDF) 17 июня 2020 года.
Компилятор Fortran I был первым крупным проектом по оптимизации кода. Он решал проблемы решающей важности, общее решение которых было важным направлением исследований в области технологии компиляторов на протяжении нескольких десятилетий. Многие классические методы анализа и оптимизации компилятора берут свое начало и вдохновение от компилятора Fortran I.
- ^ Брайан Бергштейн (20 мая 2007 г.). «Умер создатель Фортрана Джон Бэкус» . MSNBC . Проверено 29 октября 2018 г.
- ^ «ФОРТРАН – первый язык программирования для числовых вычислений» . Блог SciHi . 15 октября 2019 г.
- ^ Хейнс, Л.Х. (1965). «Последовательная компиляция и компилятор FORTRAN 1401». IBM Systems Journal . 4 (1): 73–80. дои : 10.1147/sj.41.0073 .
- ^ Ли, Джон А.Н. (1967). Анатомия компилятора . Ван Ностранд Рейнхольд.
- ^ Спецификации и рабочие процедуры Фортрана, IBM 1401 (PDF) . ИБМ. C24-1455-2. Архивировано (PDF) из оригинала 23 сентября 2017 г.
- ^ «Тема: GOTRAN НА IBM 1316 DISK STORAGE PACK (серийный номер K7402)» . Архивировано из оригинала 21 февраля 2006 года . Проверено 3 марта 2006 г.
- ^ Система автоматического кодирования FORTRAN для IBM 704 EDPM: предварительное руководство оператора (PDF) . Отдел исследований в области программирования, Международная корпорация Business Machines. 8 апреля 1957 г. стр. 6–37. Архивировано (PDF) из оригинала 26 февраля 2014 г.
- ^ Армстед, Бетти Джо (21 января 2015 г.). «Мои годы в НАСА» (PDF) . Денверский музей природы и науки . Архивировано из оригинала (PDF) 24 декабря 2019 года . Проверено 15 июня 2019 г.
- ^ Справочное руководство, Система обработки данных IBM 7090 (PDF) . 1961. А22-6528-3. Архивировано (PDF) из оригинала 1 декабря 2008 г.
- ^ Общее информационное руководство по Фортрану II (PDF) . 1963. Архивировано (PDF) из оригинала 26 апреля 2005 года . Проверено 19 ноября 2014 г.
- ^ Справочное руководство FORTRAN II для системы обработки данных IBM 704 (PDF) . 1958. С28-6000-2. Архивировано (PDF) из оригинала 30 октября 2005 г.
- ^ «Библия.орг » Библиотека.орг . Получено 15 . сентября
- ^ Спецификации языка Fortran IV, спецификации программ и рабочие процедуры, IBM 1401, 1440 и 1460 (PDF) . ИБМ. Апрель 1966 г. C24-3322-2. Архивировано (PDF) из оригинала 23 сентября 2017 г.
- ^ Маккракен, Дэниел Д. (1965). «Предисловие» . Руководство по программированию на FORTRAN IV . Нью-Йорк: Уайли. п. ISBN против 978-0-471-58281-6 .
- ^ «Список реализаций FORTRAN 1957–1967» . Группа специалистов BCS по Фортрану . Анналы IEEE. 2017 . Проверено 17 октября 2017 г.
- ^ Функциональные характеристики IBM System/360 Model 50 (PDF) . ИБМ. 1967. А22-6898-1. Архивировано (PDF) из оригинала 29 октября 2021 г. - через битсейверы.
- ^ Перейти обратно: а б «Справочное руководство для программиста DECSYSTEM-10 FORTRAN IV (F40)» (PDF) . Гитхаб . Корпорация цифрового оборудования . Проверено 15 апреля 2022 г.
- ^ Перейти обратно: а б «ФОРТРАН IV» . WorldCat.org . Проверено 10 декабря 2023 г.
- ^ MIL-STD 1753 — ФОРТРАН, дополнение Министерства обороны США к американскому национальному стандарту X3.9-1978 . Типография правительства США . 9 ноября 1978 года . Проверено 21 апреля 2024 г.
- ^ IEEE 1003.9-1992 – Стандарт IEEE для информационных технологий – POSIX(R) FORTRAN 77 Языковые интерфейсы – Часть 1: Привязка для системного прикладного программного интерфейса (API) . ИИЭЭ . Проверено 24 ноября 2018 г.
- ^ Приложение Б.1.
- ^ «Справочник по Фортрану 95» . Gnu.Орг . Проверено 10 мая 2014 г.
- ^ Лайонел, Стив (30 декабря 2013 г.). «Доктор Фортран в «Это современный мир Фортрана» » . Дискуссионная группа форума Intel (была DEC) на Фортране . Интел . Проверено 11 апреля 2022 г.
- ^ «Фортран 2003 – Последний рабочий проект» . Gnu.Орг . Проверено 10 мая 2014 г.
- ^ «WG5 завершает обработку Fortran 2003 и TR» . nag.co.uk. 14 мая 2004 года. Архивировано из оригинала 5 августа 2004 года . Проверено 3 апреля 2023 г. . Его также можно скачать в формате PDF по адресу «Новые возможности Fortran 2003» (PDF) . Архивировано (PDF) из оригинала 15 января 2018 г. Проверено 3 апреля 2023 г.
- ^ «N1836, Сводка голосования/таблица ответов по ISO/IEC FDIS 1539-1, Информационные технологии. Языки программирования. Фортран. Часть 1. Базовый язык» (PDF) . Архивировано (PDF) из оригинала 15 января 2018 г.
- ^ «Фортран 2008 — последний рабочий проект» (PDF) . Gnu.Орг. Архивировано (PDF) из оригинала 12 мая 2014 г. Проверено 10 мая 2014 г.
- ^ N1830, Информационные технологии. Языки программирования. Фортран. Часть 1. Базовый язык [3] [ мертвая ссылка ]
- ^ ISO/IEC TS 29113:2012 – Информационные технологии – Дальнейшее взаимодействие Фортрана с C.
- ^ «Проект Технической спецификации (ТУ) 29113» (PDF) . wg5-fortran.org . Архивировано (PDF) из оригинала 15 января 2018 г.
- ^ «Доктор Фортран в «Восемнадцать — новые пятнадцать» » . Software.intel.com . Проверено 20 ноября 2017 г.
- ^ «Фортран 2018» . ИСО . Проверено 30 ноября 2018 г.
- ^ «Дальнейшая совместимость с C» (PDF) . ИСО. Архивировано (PDF) из оригинала 1 декабря 2017 г. Проверено 20 ноября 2017 г.
- ^ «Дополнительные параллельные возможности в Фортране» . ИСО . Проверено 20 ноября 2017 г.
- ^ «Новые возможности Фортрана 2015» . ИСО . Проверено 23 июня 2017 г.
- ^ «Доктор Фортран в «Одна дверь закрывается» » . Software.intel.com . Проверено 21 сентября 2015 г.
- ^ «Доктор Фортран переходит на голландский язык: Фортран 2015» . Software.intel.com . Проверено 19 ноября 2014 г.
- ^ Документ интерпретации Fortran 2018 (PDF) . 9 октября 2018 г.
- ^ «Фортран 2023» . wg5-fortran.org . Проверено 30 ноября 2023 г.
- ^ Кемени, Джон Г.; Курц, Томас Э. (11 октября 1968 г.). «Дартмутское разделение времени» . Наука . 162 (3850): 223–228. Бибкод : 1968Sci...162..223K . дои : 10.1126/science.162.3850.223 . ПМИД 5675464 .
- ^ Филлипс, Ли (8 мая 2014 г.). «Будущее научных вычислений: может ли какой-либо язык программирования превзойти бегемота 1950-х годов?» . Арс Техника . Проверено 8 мая 2014 г.
- ^ Пасачофф, Джей М. (апрель 1984 г.). «Ученые: ФОРТРАН против Модулы-2» . БАЙТ (буква). п. 404 . Проверено 6 февраля 2015 г.
- ^ Гальперин, Борис (1993). «26». Крупно-вихревое моделирование сложных инженерно-геофизических потоков . Лондон: Кембриджи. п. 573. ИСБН 978-0-521-43009-8 .
- ^ Брандт, Зигмунд (1970). Статистические и вычислительные методы анализа данных . Издательство Северной Голландии. с. Предисловие. ISBN 0-7204-2033-4 .
- ^ Курчич, Милан (24 ноября 2020 г.). Современный Фортран: создание эффективных параллельных приложений . Саймон и Шустер. ISBN 978-1-61729-528-7 .
- ^ Гаффни, П.В.; Вутен, Дж. В. (1 мая 1980 г.). Методы обеспечения стандартизации программного обеспечения FORTRAN (Отчет). Окриджская национальная лаборатория. ОСТИ 5361454 .
ПФОРТ...Библиотека...
- ^ Перейти обратно: а б П. А. Фокс (1977). «Порт — портативная библиотека математических подпрограмм». Портативная библиотека математических подпрограмм . Конспекты лекций по информатике. Том. 57. стр. 165–177. дои : 10.1007/3-540-08446-0_42 . ISBN 978-3-540-08446-4 .
ПОРТ... пишется на (PFORT)..ANS Фортран
- ^ Уиттен, Дуглас Э.; Демейн, Поль А.Д. (1975). «Фортран, независимый от машины и конфигурации: Портативный Фортран {PFortran}». Транзакции IEEE по разработке программного обеспечения . СЭ-1 (1). Институт инженеров по электротехнике и электронике (IEEE): 111–124. дои : 10.1109/tse.1975.6312825 . ISSN 0098-5589 . S2CID 16485156 .
- ^ «Проблемы переносимости» .
.. обсуждает .. переносимость .. Фортрана
- ^ Хили, MJR (1968). «На пути к ФОРТРАНУ VI» . Передовой научный Фортран от CDC . CDC. стр. 169–172. Архивировано из оригинала 5 июля 2009 года . Проверено 10 апреля 2009 г.
- ^ Перлис, Эй Джей; Смит, Дж.В.; Ван Зоерен, внутренний переводчик отдела кадров (ИТ). Компилятор для IBM 650 (PDF) . Вычислительный центр Технологического института Карнеги. Архивировано (PDF) из оригинала 2 октября 2012 г.
- ^ «Домашняя страница языка программирования F» . Фортран.com. Архивировано из оригинала 9 января 2015 года . Проверено 19 ноября 2014 г.
- ^ «Фортран для языковой системы .NET» . Архивировано из оригинала 18 октября 2014 года.
- ^ «FTN95: Фортран 95 для Windows» . Silverfrost.com . Проверено 19 ноября 2014 г.
- ^ Рассылка X3J3 после собрания, состоявшегося в Брукхейвенской национальной лаборатории в ноябре 1976 года.
- ^ «Уничтожение О». Компьютерный еженедельник . 3 марта 1977 года.
- ^ Правила ввода данных (Справочник по языку FORTRAN 77) . Проверено 29 сентября 2016 г.
Дальнейшее чтение
[ редактировать ]- Языковые стандарты
- АНСИ х3.9-1966. Стандарт США FORTRAN (PDF) . Американский национальный институт стандартов. Архивировано из оригинала (PDF) 15 мая 2011 года . Проверено 5 мая 2010 г. Неофициально известный как FORTRAN 66.
- АНСИ х3.9-1978. Американский национальный стандарт – язык программирования FORTRAN . Американский национальный институт стандартов. Архивировано из оригинала 29 октября 2013 года . Проверено 11 декабря 2007 г. Также известен как ISO 1539–1980, неофициально известный как FORTRAN 77.
- АНСИ Х3.198-1992 (Р1997) / ИСО/МЭК 1539:1991. Американский национальный стандарт — расширенный язык программирования Fortran . Американский национальный институт стандартов/ISO/IEC. Архивировано из оригинала 1 мая 2002 года. Неофициально известен как Fortran 90.
- ИСО/МЭК 1539-1:1997. Информационные технологии – Языки программирования – Фортран – Часть 1: Базовый язык (PDF) . Архивировано из оригинала (PDF) 18 августа 2011 года . Проверено 13 декабря 2007 г. Неофициально известный как Фортран 95. Этот стандарт состоит из еще двух частей. Часть 1 была официально принята ANSI.
- ИСО/МЭК 1539-1:2004. Информационные технологии – Языки программирования – Фортран – Часть 1: Базовый язык (PDF) . Архивировано из оригинала (PDF) 31 июля 2023 года. Неофициально известен как Fortran 2003.
- ISO/IEC 1539-1:2010 (Окончательный проект международного стандарта). Информационные технологии – Языки программирования – Фортран – Часть 1: Базовый язык (PDF) . [ постоянная мертвая ссылка ] Неофициально известный как Fortran 2008.
- Сопутствующие стандарты
- Кнейс, Вильфрид (октябрь 1981 г.). «Проект стандарта промышленного Фортрана реального времени» . Уведомления ACM SIGPLAN . 16 (7): 45–60. дои : 10.1145/947864.947868 . ISSN 0362-1340 . S2CID 8662381 .
- ISO 8651-1:1988 Системы обработки информации. Компьютерная графика. Привязки языка графической системы ядра (GKS). Часть 1: FORTRAN . Женева, Швейцария: ISO . 1988.
- Другой справочный материал
- Стандарт ECMA на ФОРТРАНЕ (PDF) . Европейская ассоциация производителей компьютеров. Апрель 1965 года. Архивировано (PDF) из оригинала 10 мая 2008 года . Проверено 17 ноября 2014 г.
- Справочное руководство FORTRAN 77 4.0 (PDF) . Sun Microsystems, Inc., 1995. Архивировано из оригинала (PDF) 5 января 2012 года . Проверено 17 ноября 2014 г.
- «Форма кодирования FORTRAN» (PDF) . ИБМ . Архивировано из оригинала (PDF) 8 июня 2015 года . Проверено 17 ноября 2014 г.
- Язык IBM System/360 и System/370 Fortran IV (PDF) . ИБМ . Май 1974 года. Архивировано из оригинала (PDF) 6 апреля 2011 года . Проверено 17 ноября 2014 г.
- Гёрц, Майкл (2014). «Справочная карта современного Фортрана» (PDF) . Архивировано (PDF) из оригинала 14 декабря 2014 г. Проверено 14 декабря 2014 г.
- Книги
- Адамс, Жанна С .; Брейнерд, Уолтер С.; Хендриксон, Ричард А.; Мэн, Ричард Э.; Мартин, Жанна Т.; Смит, Брайан Т. (2009). Справочник по Fortran 2003 (1-е изд.). Спрингер . ISBN 978-1-84628-378-9 .
- Акин, Дж. Э. (2003). Объектно-ориентированное программирование на Фортране 90/95 . Кембридж, Нью-Йорк: Издательство Кембриджского университета. ISBN 978-0-521-52408-7 . OCLC 49906306 .
- Арьен, Маркус (2012), «Современный Фортран на практике», Cambridge Univ. Пресса, ISBN 978-1-13908479-6.
- Брейнерд, штат Вашингтон; Гольдберг, Швейцария; Адамс, Дж. К. (1996). Руководство программиста по Фортрану 90 (3-е изд.). Спрингер. ISBN 978-0-387-94570-5 .
- Брейнерд, Уолтер (2015). Руководство по программированию на Фортране 2008 . Лондон: Спрингер. ISBN 978-1-4471-6758-7 . OCLC 920530344 .
- Чепмен, Стивен Дж. (2018). Фортран для ученых и инженеров (Четвертое изд.). Нью-Йорк : Образование Макгроу-Хилл . стр. XXIV + 1024. ISBN. 978-0-07-338589-1 .
- Чиверс, Ян; Слейтхолм, Джейн (2018). Введение в программирование на Фортране (4-е изд.). Спрингер. ISBN 978-3-319-75501-4 .
- Клерман, Норман (2012). Современный Фортран: стиль и использование . Нью-Йорк: Издательство Кембриджского университета. ISBN 978-0-521-51453-8 . OCLC 776162717 .
- Курчич, Милан (2020). Современный Фортран: построение эффективных параллельных приложений . Остров Шелтер, Нью-Йорк: Компания Manning Publications. ISBN 978-1-61729-528-7 . OCLC 1256806439 .
- Эллис, ПМР; Филлипс, Айвор Р.; Лэхи, Томас М. (1994). Программирование на Фортране 90 (1-е изд.). Эддисон Уэсли. ISBN 978-0-201-54446-6 .
- Эттер, Д.М. (1990). Структурированный FORTRAN 77 для инженеров и ученых (3-е изд.). издательской компании Benjamin/Cummings, Inc. ISBN 978-0-8053-0051-2 .
- Керриган, Дж. Ф. (1993). Переход на Фортран 90 (1-е изд.). O'Reilly & Associates, Inc. ISBN 1-56592-049-Х .
- Купфершмид, Майкл (2002). Классический Фортран: программирование для инженерных и научных приложений . Марсель Деккер (CRC Press). ISBN 978-0-8247-0802-3 . ( Дополнительные материалы )
- Лоренцо, Марк Джонс (2019). Абстрагируя машину: история языка программирования FORTRAN (FORmula TRANslation) . Независимо опубликовано. ISBN 978-1082395949 .
- Лукидес, Майк (1990). Unix для программистов на FORTRAN . Севастополь, Калифорния: ISBN O'Reilly & Associates, Inc. 0-937175-51-Х .
- Маккракен, Дэниел Д. (1961). Руководство по программированию на FORTRAN . Нью-Йорк: Уайли. LCCN 61016618 .
- Найхофф, Ларри; Сэнфорд Листма (1995). ФОРТРАН 77 для инженеров и ученых с введением в Фортран 90 (4-е изд.). Прентис Холл . ISBN 978-0-13-363003-9 .
- Пейдж, Клайв Г. (1988). Руководство профессионального программиста по Fortran77 (изд. от 7 июня 2005 г.). Лондон: Питман. ISBN 978-0-273-02856-7 . Проверено 4 мая 2010 г.
- Пресс, Уильям Х. (1996). Численные рецепты на Фортране 90: искусство параллельных научных вычислений . Кембридж, Великобритания: Издательство Кембриджского университета. ISBN 978-0-521-57439-6 .
- Рютч, Грегори; Фатика, Массимилиано (2013). CUDA Fortran для ученых и инженеров (1-е изд.). Эльзевир . п. 338. ИСБН 9780124169708 .
- Слайтхом, Джейн; Чиверс, Ян Дэвид (1990). Интерактивный Fortran 77: практический подход . Компьютеры и их приложения (2-е изд.). Чичестер: Э. Хорвуд. ISBN 978-0-13-466764-5 . Архивировано из оригинала 12 марта 2014 года . Проверено 12 марта 2014 г.
- Статьи
- Аллен, FE (сентябрь 1981 г.). «История технологии языковых процессоров в IBM». Журнал исследований и разработок IBM . 25 (5): 535–548. дои : 10.1147/rd.255.0535 . S2CID 14149353 .
- Дж. В. Бэкус ; Р. Дж. Бибер; С. Бест; Р. Гольдберг; Л. М. Хаибт ; Х. Л. Херрик; Р. А. Нельсон; Д. Сэйр ; П. Б. Шеридан; Х. Стерн; Л. Циллер; Р. А. Хьюз; Р. Натт (февраль 1957 г.). Система автоматического кодирования FORTRAN (PDF) . Западная объединенная компьютерная конференция. стр. 188–198. дои : 10.1145/1455567.1455599 .
- Чиверс, Ян Д.; Слейтхолм, Джейн (2022). «Поддержка компилятора для стандартов Fortran 2008 и 2018» .
- Пиготт, Диармуид (2006). «ФОРТРАН - Бэкус и др. Компилятор высокого уровня (компьютерный язык)» . Энциклопедия компьютерных языков . Университет Мердока . Архивировано из оригинала 8 октября 2009 года . Проверено 5 мая 2010 г.
- Робертс, Марк Л.; Гриффитс, Питер Д. (1985). «Аспекты проектирования IBM Personal Computer Professional FORTRAN, оптимизирующего компилятора». IBM Systems Journal . 24 (1): 49–60. дои : 10.1147/sj.241.0049 .
Внешние ссылки
[ редактировать ]- ISO/IEC JTC1/SC22/WG5 — официальный сайт стандартов Фортрана.
- Документы стандартов Fortran — стандарты GFortran
- fortran-lang.org (2020).
- История FORTRAN и Fortran II — Музей истории компьютеров
- Валмер Норрод и др.: Курс самообучения по программированию на FORTRAN - Том I - учебник , Computer Science Corporation El Segundo, Калифорния (апрель 1970 г.). НАСА (N70-25287).
- Валмер Норрод, Шелдом Блечер и Марта Хортон: Курс самообучения по программированию на FORTRAN - Том II - рабочая тетрадь , NASA CR-1478 (апрель 1970 г.), NASA (N70-25288).
- Введение в язык программирования Фортран , Рейнхольд Бадер, Нисарг Патель, Суперкомпьютерный центр Лейбница .
- Учебник по карри
- Виктор Эйкхаут: Введение в научное программирование на C++17/Fortran2008, Искусство HPC, том 3 (PDF). Архивировано 5 февраля 2023 г., в Wayback Machine.
- Фортран
- Семейство языков программирования Фортран
- Американские изобретения
- Языки программирования массивов
- Компьютерные стандарты
- Языки числового программирования
- Объектно-ориентированные языки программирования
- Процедурные языки программирования
- Языки программирования высокого уровня
- программное обеспечение IBM
- Языки программирования, созданные в 1957 году.
- Языки программирования со стандартом ISO
- Статически типизированные языки программирования
- Инструменты программирования Unix
- программное обеспечение 1957 года