Из Википедии, бесплатной энциклопедии
  (Перенаправлено с FORTRAN )
Перейти к навигации Перейти к поиску

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

Fortran ( / е ɔːr т г æ п / ; ранее FORTRAN , полученный из формулы перевода [2] ) является универсальным, составленным обязательным языком программирования , который особенно подходит для численных расчетов и научных вычислений .

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

У Fortran было несколько версий, каждая из которых добавляла расширения, но в значительной степени сохраняла совместимость с предыдущими версиями. В последующих версиях добавлена ​​поддержка структурированного программирования и обработки символьных данных (FORTRAN 77), программирования массивов , модульного программирования и общего программирования (Fortran 90), высокопроизводительного Fortran (Fortran 95), объектно-ориентированного программирования (Fortran 2003), параллельное программирование (Fortran 2008) и собственные возможности параллельных вычислений (Coarray Fortran 2008/2018).

Дизайн Фортрана стал основой для многих других языков программирования. Среди наиболее известных - BASIC , основанный на FORTRAN II с некоторыми чистками синтаксиса , в частности улучшенными логическими структурами [7] и другими изменениями, облегчающими работу в интерактивной среде. [8]

По состоянию на март 2021 года Fortran занимал 22- е место в индексе TIOBE , показателе популярности языков программирования, поднявшись на 12 позиций по сравнению с 34- м местом в январе 2020 года [9].

Именование [ править ]

Имена более ранних версий языка через FORTRAN 77 обычно записывались заглавными буквами [10] (FORTRAN 77 был последней версией, в которой набор символов Fortran включал только прописные буквы [11] ). В официальных языковых стандартах Fortran этот язык называется «Fortran» с заглавными буквами (а не «FORTRAN» в верхнем регистре), начиная с Fortran 90.

История [ править ]

IBM 704 Мэйнфрейм

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

Проект спецификации IBM Mathematical Formula Translating System был завершен к ноябрю 1954 года. [12] : 71 Первое руководство по FORTRAN появилось в октябре 1956 года, [12] : 72 с первым компилятором FORTRAN, выпущенным в апреле 1957 года [12] : 75 Это был первый оптимизирующий компилятор , потому что клиенты не хотели использовать язык программирования высокого уровня, если его компилятор не мог генерировать код с производительностью, приближающейся к вручную написанному языку ассемблера. [16]

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

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

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

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

Наиболее полный отчет об истории Fortran в одном документе дан Лоренцо в книге, указанной ниже.

Фортран играет эпизодическую роль, когда IBM устанавливает новый мэйнфрейм в НАСА в фильме « Скрытые фигуры» .

ФОРТРАН [ править ]

Первоначальный выпуск FORTRAN для IBM 704 содержал 32 оператора , в том числе:

  • DIMENSIONи EQUIVALENCEзаявления
  • Заявления о присвоении
  • Трехсторонний арифметический IF оператор, который передает управление в одно из трех мест в программе в зависимости от того, был ли результат арифметического оператора отрицательным, нулевым или положительным.
  • IFотчетность за исключением проверочных ( ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOWи DIVIDE CHECK); и IFинструкции для управления сенсорными переключателями и сенсорными лампами
  • GO TO, Вычислен GO TO, ASSIGNи назначаетсяGO TO
  • DO петли
  • Форматированный I / O: FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT, иPUNCH
  • Unformatted I / O: READ TAPE, READ DRUM, WRITE TAPE, иWRITE DRUM
  • Другое I / O: END FILE, REWINDиBACKSPACE
  • PAUSE, STOPИCONTINUE
  • FREQUENCYоператор (для предоставления компилятору подсказок по оптимизации ).

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

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

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

Много лет спустя этот FREQUENCYоператор не повлиял на код и стал рассматриваться как оператор комментария, поскольку компиляторы больше не выполняли такого рода моделирование во время компиляции. Подобная участь постигла и намеки компилятора в некоторых других языках программирования, например, registerключевое слово в C . [ необходима цитата ]

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

Фиксированный макет и перфокарты [ править ]

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

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

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

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

  • 1–5 были полем метки: последовательность цифр здесь была взята как метка для использования в операторах DO или управляющих операторах, таких как GO TO и IF, или для идентификации оператора FORMAT, упомянутого в операторах WRITE или READ. Начальные нули игнорируются, и 0 не является допустимым номером метки.
  • 6 было полем продолжения: символ, отличный от пробела или нуля, приводил к тому, что карта принималась как продолжение утверждения на предыдущей карте. Карты продолжения обычно пронумерованы 1, 2 и т. Д., Поэтому в столбце продолжения стартовой карты может быть ноль, что не является продолжением предыдущей карты.
  • 7–72 служили полем утверждения.
  • От 73 до 80 игнорировались ( кардридер IBM 704 использовал только 72 столбца). [22]

Столбцы 73–80 могут поэтому использоваться для идентификационной информации, такой как ввод порядкового номера или текста, который может использоваться для изменения порядка карточек, если стопка карточек упала; хотя на практике это было зарезервировано для стабильных производственных программ. IBM 519 можно использовать для копирования программы колоды и добавить порядковые номера. Некоторые ранние компиляторы, например, IBM 650, имели дополнительные ограничения из-за ограничений на их устройства чтения карт. [23] Клавиатуры можно было запрограммировать для перехода к столбцу 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.), что позволяло сохранять пробелы в строке символов. Ошибки в учете были проблемой.

FORTRAN II [ править ]

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

  • SUBROUTINE, FUNCTIONИEND
  • CALL и RETURN
  • COMMON

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

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

Простая программа FORTRAN II [ править ]

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

С площади треугольника со стандартным квадратным ROOT ФУНКЦИЯ C ВХОД - TAPE READER блок 5, целочисленный ВХОД С ВЫХОД - ЛИНИЯ ПРИНТЕР БЛОК 6, РЕАЛЬНОГО ВЫХОД С ВХОД Ошибка Дисплей ОШИБКА ВЫХОД КОД 1 В РАБОТУ УПРАВЛЕНИЯ ПЕРЕЧИСЛЕНИЕ ЧТЕНИЕ ВХОД ЛЕНТА 5 , 501 , IA , IB , IC  501 ФОРМАТ ( 3 I5 ) C IA, IB и IC НЕ МОГУТ БЫТЬ ОТРИЦАТЕЛЬНЫМ ИЛИ НУЛЕМ. ДАЛЕЕ, СУММА ДВУХ СТОРОН ТРЕУГОЛЬНИКА C ДОЛЖНА БЫТЬ БОЛЬШЕ, чем ТРЕТЬЯ СТОРОНА, ПОЭТОМУ ПРОВЕРЯЕМ ЭТО, ТОО ИФ ( ИА ) 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  ЕСЛИ  ( IB + IC - IA)  777 ,  777 ,  799  777  СТОП 1 C ИСПОЛЬЗУЯ ФОРМУЛУ ГЕРОНА МЫ РАССЧИЛИВАЕМ ПЛОЩАДЬ 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 , ФОРМАТ ОБЛАСТИ  601 ( 4 H A = , I5 , 5 H B = , I5 , 5 H C = , I5 , 8 H AREA = , F10 . 2 , + 13 H КВАДРАТНЫХ БЛОКОВ ) СТОПОРНЫЙ КОНЕЦ                           

FORTRAN III [ править ]

Репродукция формы кодирования FORTRAN, напечатанная на бумаге и предназначенная для использования программистами для подготовки программ для перфорации на карты операторами перфорации . Теперь устарело.

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

IBM 1401 FORTRAN [ править ]

FORTRAN был предоставлен для компьютера IBM 1401 инновационным 63-фазным компилятором, который полностью работал в своей основной памяти и содержал всего 8000 (шестибитных) символов. Компилятор можно запускать с магнитной ленты или с колоды из 2200 карт; он не использовал ни ленточного, ни дискового хранилища. Он сохранял программу в памяти и загружал оверлеи, которые постепенно преобразовывали ее на месте в исполняемую форму, как описано Хейнсом. [26] Эта статья была переиздана, отредактирована в обеих редакциях Анатомии компилятора [27] и в руководстве IBM «Спецификации и рабочие процедуры Fortran, IBM 1401». [28] Исполняемая форма не была полностью машинным языком; скорее, были интерпретированы арифметические операции с плавающей запятой, вспомогательные сценарии, ввод / вывод и ссылки на функции, опередившие P-код UCSD Pascal на два десятилетия.

Позднее IBM предоставила компилятор FORTRAN IV для компьютеров серии 1400. [29]

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 должен был соответствовать стандарту , разработанному Рабочей группой FORTRAN X3.4.3 Американской ассоциации стандартов . [30]

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

  • 1966: FORTRAN IV F для DOS / 360 (64 Кбайт)
  • 1966: FORTRAN IV G для OS / 360 (128 Кбайт)
  • 1968: FORTRAN IV H для OS / 360 (256 Кбайт)

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

FORTRAN 66 [ править ]

Возможно, наиболее значительным событием в ранней истории FORTRAN было решение Американской ассоциации стандартов (ныне Американский национальный институт стандартов (ANSI)) сформировать комитет, спонсируемый BEMA, Ассоциацией производителей бизнес-оборудования, для разработки американского стандарта Fortran . Получившиеся два стандарта, утвержденные в марте 1966 года, определили два языка: FORTRAN (на основе FORTRAN IV, который служил стандартом де-факто) и Basic FORTRAN (на основе FORTRAN II, но без его машинно-зависимых функций). FORTRAN, определенный первым стандартом, официально обозначенный X3.9-1966, стал известен как FORTRAN 66.(хотя многие продолжали называть его FORTRAN IV, языком, на котором в значительной степени основан стандарт). FORTRAN 66 фактически стал первой стандартной версией FORTRAN. 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 линия

FORTRAN 77 [ править ]

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

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

  • Блок IFи END IFзаявление, с необязательными ELSEи ELSE IFпунктами, чтобы обеспечить улучшенную поддержку языка для структурного программирования
  • DO расширения цикла, включая выражения параметров, отрицательные приращения и нулевое количество отключений
  • OPEN, CLOSEИ INQUIREзаявление для улучшения возможностей ввода / вывода
  • Файловый ввод-вывод с прямым доступом
  • IMPLICIT оператор, чтобы переопределить неявные соглашения о том, что необъявленные переменные являются INTEGER, если их имя начинается с I, J, K, L, M или N (и REAL в противном случае)
  • CHARACTER тип данных, заменяющий строки Холлерита значительно расширенными возможностями для ввода и вывода символов и обработки символьных данных
  • PARAMETER инструкция для задания констант
  • SAVE инструкция для постоянных локальных переменных
  • Общие имена для встроенных функций (например, SQRTтакже принимает аргументы других типов, таких как COMPLEXили REAL*16).
  • Набор функций intrinsics ( LGE, LGT, LLE, LLT) для лексического сравнения строк на основе последовательности сортировки ASCII . (Эти функции ASCII были запрошены Министерством обороны США при голосовании условного утверждения. [ Необходима цитата ] )

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

  • Холлерита константы и Холлерита данные, такие какGREET = 12HHELLO THERE!
  • Чтение в дескриптор редактирования H (поле Холлерита) в спецификации FORMAT
  • Переиндексирование границ массива индексами
      РАЗМЕР A ( 10 , 5 ) Y = A ( 11 , 1 )   
  • Передача управления из и обратно в диапазон контура DO (также известный как «Расширенный диапазон»)

Варианты: Миннесота FORTRAN [ править ]

На компьютерах Control Data Corporation была другая версия FORTRAN 77, называемая Minnesota FORTRAN (MNF), разработанная специально для использования студентами, с вариациями в выходных конструкциях, специальным использованием операторов COMMON и DATA, уровнями кода оптимизации для компиляции, подробными списками ошибок, подробными предупреждениями. сообщения и функции отладки. [33] MNF был разработан людьми (Liddiard & Mundstock) из Университета Миннесоты . [34] MNF был доступен в основном бесплатно.

Переход на стандартный Фортран ANSI [ править ]

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

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

  • DO WHILE, EXIT, CYCLEИ END DOзаявление
  • INCLUDE утверждение
  • IMPLICIT NONEвариант IMPLICITзаявления
  • Встроенные функции обработки битов , основанные на аналогичных функциях, включенных в Industrial Real-Time Fortran (ANSI / ISA S61.1 (1976))

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

Fortran 90 [ править ]

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

  • Исходный текст произвольной формы , также с ключевыми словами Fortran в нижнем регистре
  • Идентификаторы длиной до 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конструкция для многостороннего выбора
  • Переносимая спецификация числовой точности под контролем пользователя
  • Новые и улучшенные внутренние процедуры.

Устаревание и удаления [ править ]

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

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

"Привет, мир!" пример [ править ]

программа helloworld  print  * ,  "Hello, World!" конец программы helloworld

Fortran 95 [ править ]

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

  • FORALLи вложенные WHEREконструкции для помощи векторизации
  • Определяемые пользователем PUREи ELEMENTALпроцедуры
  • Инициализация по умолчанию компонентов производного типа, включая инициализацию указателя
  • Расширена возможность использования выражений инициализации для объектов данных.
  • Инициализация указателей на NULL()
  • Четко определено, что ALLOCATABLEмассивы автоматически освобождаются, когда они выходят за пределы области видимости.

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

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

  • DOоператоры, использующие REALи DOUBLE PRECISIONиндексирующие переменные
  • Переход к END IFоператору извне его блока
  • PAUSE утверждение
  • ASSIGNи назначенный GO TOоператор, и назначенные спецификаторы формата
  • H Дескриптор редактирования Холлерита.

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

Еще одним важным дополнением к 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).

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

Fortran 2003 [ править ]

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

Из этой статьи основные улучшения в этой редакции включают:

  • Улучшения производных типов: параметризованные производные типы, улучшенный контроль доступности, улучшенные конструкторы структур и финализаторы.
  • Поддержка объектно-ориентированного программирования : расширение и наследование типов , полиморфизм , динамическое выделение типов и процедуры с привязкой к типу, обеспечивающие полную поддержку абстрактных типов данных
  • Усовершенствования управления данными: выделяемые компоненты (включая TR 15581), параметры отложенного типа, VOLATILEатрибут , явное указание типа в конструкторах массива и операторах выделения, улучшения указателей, расширенные выражения инициализации и расширенные внутренние процедуры
  • Улучшения ввода / вывода: асинхронная передача, доступ к потоку, определяемые пользователем операции передачи для производных типов, определяемое пользователем управление округлением во время преобразования формата, именованные константы для предварительно подключенных единиц, FLUSHоператор, регуляризация ключевых слов и доступ к сообщениям об ошибках
  • Указатели процедур
  • Поддержка арифметики с плавающей запятой IEEE и обработки исключений с плавающей запятой (включая TR 15580)
  • Совместимость с языком программирования C
  • Поддержка международного использования: доступ к 4-байтовым символам ISO 10646 и выбор десятичной дроби или запятой при вводе / выводе в числовом формате
  • Улучшенная интеграция с операционной системой хоста: доступ к аргументам командной строки , переменным среды и сообщениям об ошибках процессора.

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

Fortran 2008 [ править ]

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

  • Подмодули - дополнительные возможности структурирования модулей; заменяет ISO / IEC TR 19767: 2005
  • Coarray Fortran - модель параллельного выполнения
  • Конструкция DO CONCURRENT - для итераций цикла без взаимозависимостей.
  • Атрибут CONTIGUOUS - для указания ограничений схемы хранения.
  • Конструкция BLOCK - может содержать объявления объектов с областью видимости конструкции.
  • Рекурсивные размещаемые компоненты - как альтернатива рекурсивным указателям в производных типах

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

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

Фортран 2018 [ править ]

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

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

  • ISO / IEC TS 29113: 2012 Дальнейшее взаимодействие с C [49]
  • ISO / IEC TS 18508: 2015 Дополнительные параллельные функции в Fortran [50]

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

Особенности языка [ править ]

Полное описание возможностей языка Fortran, начиная с Fortran 95, можно найти в соответствующей статье « Возможности языка Fortran 95» .

Наука и инженерия [ править ]

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

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

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

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

Переносимость [ править ]

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

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

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

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

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

Варианты [ править ]

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

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

Fortran 5 [ править ]

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

FORTRAN V [ править ]

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

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

Фортран 6 [ править ]

Fortran 6 или Visual Fortran 2001 были лицензированы для Compaq корпорацией Майкрософт . Они лицензировали Compaq Visual Fortran и предоставили интерфейс среды Visual Studio 5 для Compaq v6 до v6.1. [65]

Конкретные варианты [ править ]

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

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

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

FOR TRANSIT для IBM 650 [ править ]

FOR TRANSIT - это сокращенная версия языка IBM 704 FORTRAN, которая была реализована для IBM 650 с использованием программы-переводчика, разработанной в Карнеги в конце 1950-х годов. [66] Следующий комментарий появляется в Справочном руководстве IBM ( FOR TRANSIT Automatic Coding System C28-4038, Copyright 1957, 1959 by 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, ​​последняя для машин, оснащенных индексирующими регистрами и автоматической десятичной ( двухчетной ) арифметикой с плавающей запятой . В Приложении A к руководству включены электрические схемы для панели управления устройством чтения / перфорации IBM 533 .

Языки на основе Fortran [ править ]

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

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

программа ;  s = 0  i = 1 , n ;  s = s + 1 ;  стоп я ;  s = 's'  Стоп

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

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

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

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

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

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

Лахи и Fujitsu объединились для создания Fortran для Microsoft .NET Framework . [68] Silverfrost FTN95 также может создавать код .NET. [69]

Примеры кода [ править ]

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

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

Юмор [ править ]

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

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

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

В FORTRAN 77 (и в большинстве более ранних версий) имена переменных, начинающиеся с букв I – N, имели целочисленный тип по умолчанию, в то время как переменные, начинающиеся с любых других букв, по умолчанию принимались за реальные, хотя программисты могли переопределить значения по умолчанию с явным объявлением. [72] Это привело к шутке: «В Фортране БОГ НАСТОЯЩИЙ (если не объявлен INTEGER)».

См. Также [ править ]

  • f2c
  • FORMAC
  • Список компиляторов Fortran
  • Список числовых библиотек Fortran
  • Список языков программирования
  • Матричное представление
  • Рядный порядок
  • Код спагетти

Ссылки [ править ]

  1. ^ "Спецификация часовни (Благодарности)" (PDF) . Cray Inc. 1 октября 2015 . Проверено 14 января +2016 .
  2. ^ "ФОРТРАН" . Словарь английского языка американского наследия (5 изд.). Бесплатный словарь. 2011 . Проверено 8 февраля +2016 .
  3. ^ Джон Бэкус. «История FORTRAN I, II и III» (PDF) . Softwarepreservation.org . Проверено 19 ноября 2014 .
  4. Юджин Ло (18 июня 2010 г.). «Идеальный язык программирования для высокопроизводительных вычислений» . Очередь . 8 (6).
  5. ^ «HPL - портативная реализация высокопроизводительного эталонного теста Linpack для компьютеров с распределенной памятью» . Проверено 21 февраля 2015 года .
  6. ^ "Q13. Какие тесты?" . Обзор - CPU 2017 . СПЕЦ . Дата обращения 13 ноября 2019 .
  7. ^ «Пятьдесят лет ОСНОВНОГО» . Время . 29 апреля 2014 г.
  8. Щепаниак, Джон (1 мая 2014 г.). «Основная история BASIC в день его 50-летия» . Гамасутра .
  9. ^ TIOBE Software BV (март 2021). «Индекс TIOBE на март 2021 года» . TIOBE.com . ТИОБ . Проверено 11 марта 2021 года .
  10. ^ Чепмен, Стивен Дж. (2018). Fortran для ученых и инженеров (четвертое изд.). Нью-Йорк : McGraw-Hill Education . п. 13. ISBN 978-0-07-338589-1.
  11. ^ «Набор символов Fortran», определенный стандартом FORTRAN 77, был минимальным набором символов, который должны были поддерживать совместимые со стандартом компиляторы; на практике многие компиляторы FORTRAN 77 поддерживали полный набор символов ASCII .
  12. ^ a b c d e Бэкус, Джон (октябрь – декабрь 1998 г.). «История Fortran I, II и III» (PDF) . IEEE Annals of the History of Computing . 20 (4): 68–78. DOI : 10.1109 / 85.728232 . Архивировано 3 марта 2016 года (PDF) из оригинала . Проверено 17 июня 2020 . [1] [2]
  13. ^ а б Дж. У. Бэкус ; Р. Дж. Бибер; С. Бест; Р. Гольдберг; LM Haibt ; HL Herrick; Р. А. Нельсон; Д. Сэйр ; ПБ Шеридан; Х. Стерн; Л. Циллер; Р. А. Хьюз; Р. Натт (февраль 1957 г.). Система автоматического кодирования FORTRAN (PDF) . Западная объединенная компьютерная конференция. С. 188–198. DOI : 10.1145 / 1455567.1455599 .
  14. ^ Минделл, Дэвид, Digital Apollo, MIT Press, CambridgeMA, 2008, стр.99
  15. ^ «IBM и шахматы» . Шахматный маньяк . Online Chess LLC . Проверено 30 апреля 2020 .
  16. Падуя, Дэвид (январь – февраль 2000 г.). "Компилятор Fortran I" (PDF) . Вычислительная техника в науке и технике (CiSE) . Лучшие алгоритмы. Университет Иллинойса : IEEE : 70–75. Архивировано из оригинального (PDF) 17 июня 2020 года . Компилятор Fortran I был первым крупным проектом по оптимизации кода. В нем решались проблемы критической важности, общее решение которых было важным направлением исследований в области компиляторных технологий в течение нескольких десятилетий. Многие классические методы анализа и оптимизации компилятора могут проследить свое происхождение и вдохновение от компилятора Fortran I.
  17. ^ Brian Bergstein (20 мая 2007). «Создатель Fortran Джон Бэкус умирает» . MSNBC . Проверено 29 октября 2018 года .
  18. ^ http://scihi.org/fortran-programming/
  19. ^ Подразделение прикладных наук и исследовательский отдел программирования, International Business Machines Corporation (15 октября 1956 г.). Система автоматического кодирования FORTRAN для IBM 704 EDPM: Справочное руководство программиста (PDF) . С. 19–20.
  20. ^ Отдел исследований программирования, International Business Machines Corporation (8 апреля 1957 г.). Система автоматического кодирования FORTRAN для IBM 704 EDPM: предварительное руководство оператора (PDF) . С. 6–37.
  21. Бетти Джо Армстед (21 января 2015 г.). «Мои годы в НАСА» (PDF) . Денверский музей природы и науки . Проверено 15 июня 2019 .
  22. ^ Справочное руководство, IBM 7090 Data Processing System , 1961, IBM A22-6528-3.
  23. ^ "Руководство пользователя Fortran II" (PDF) . Bitsavers.org . Проверено 19 ноября 2014 .
  24. ^ Справочное руководство, FORTRAN II для системы обработки данных IBM 704 (PDF) . 1958. C28-6000-2.
  25. ^ "Ibibilio.org" . Ibiblio.org . Проверено 15 сентября 2014 года .
  26. Перейти ↑ Haines, LH (1965). «Серийная компиляция и компилятор FORTRAN 1401» . IBM Systems Journal . 4 (1): 73–80. DOI : 10.1147 / sj.41.0073 .
  27. ^ Ли, Джон А.Н. (1967). Анатомия компилятора . Ван Ностранд Рейнхольд.
  28. ^ Спецификации и рабочие процедуры Fortran, IBM 1401 (PDF) . IBM. C24-1455-2.
  29. ^ Спецификации языка Fortran IV, спецификации программ и рабочие процедуры, IBM 1401, 1440 и 1460 (PDF) . IBM. Апрель 1966 г. C24-3322-2.
  30. Перейти ↑ McCracken, Daniel D. (1965). «Предисловие» . Руководство по программированию FORTRAN IV . Нью-Йорк: Вили. п. v. ISBN 978-0-471-58281-6.
  31. ^ "Список реализаций FORTRAN 1957 - 1967" . Анналы IEEE. 2017 . Проверено 17 октября 2017 года .
  32. ^ Функциональные характеристики IBM System / 360 Model 50 (PDF) . IBM. 1967. A22-6898-1.
  33. ^ "Компиляторы и загрузчики FORTRAN" . Chilton-programming.org.uk . Проверено 19 ноября 2014 .
  34. Фриш, Майкл (декабрь 1972 г.). «Замечания по алгоритмам». Коммуникации ACM . 15 (12): 1074. DOI : 10,1145 / 361598,361914 . S2CID 6571977 . 
  35. ^ Mil-std-1753. Дополнение DoD к X3.9-1978 . Типография правительства США . Архивировано из оригинала 9 ноября 2007 года . Проверено 13 декабря 2007 года .
  36. ^ IEEE 1003.9-1992 - Стандарт IEEE для информационных технологий - Языковые интерфейсы POSIX (R) FORTRAN 77 - Часть 1: Привязка для системного прикладного программного интерфейса (API) . IEEE . Проверено 24 ноября 2018 года .
  37. ^ Приложение B.1
  38. ^ "Заявления для типов символов" . Справочное руководство по языку Compaq Fortran . Техас, Хьюстон, США: Compaq Computer Corporation. 1999. Архивировано из оригинала на 18 сентября 2018 года . Проверено 17 сентября 2018 года . Форма CHARACTER * (*) является устаревшей функцией Fortran 95.
  39. ^ "Справочник Fortran 95" . Gnu.Org . Проверено 10 мая 2014 .
  40. ^ «Фортран 2003– Последний рабочий проект» . Gnu.Org . Проверено 10 мая 2014 .
  41. ^ Рабочая группа Fortran (WG5) . Его также можно загрузить в виде файла PDF , FTP.nag.co.uk.
  42. ^ «N1836, Сводка голосований / Таблица ответов на ISO / IEC FDIS 1539-1, Информационные технологии - Языки программирования - Фортран - Часть 1: Базовый язык» (PDF) .
  43. ^ «Фортран 2008 - Последний рабочий проект» (PDF) . Gnu.Org . Проверено 10 мая 2014 .
  44. ^ N1830, Информационные технологии - Языки программирования - Фортран - Часть 1: Базовый язык [3] [ мертвая ссылка ]
  45. ^ Страница ISO в ISO / IEC DTS 29113, Дальнейшее взаимодействие Fortran с C
  46. ^ "Проект технических условий (TS) 29113" (PDF) . wg5-fortran.org .
  47. ^ «Доктор Фортран в« Восемнадцать - это новая Пятнадцать » » . Software.intel.com . Проверено 20 ноября 2017 года .
  48. ^ «Фортран 2018» . ISO . Проверено 30 ноября 2018 года .
  49. ^ «Дальнейшее взаимодействие с C» (PDF) . ISO . Проверено 20 ноября 2017 года .
  50. ^ «Дополнительные параллельные функции в Фортране» . ISO . Проверено 20 ноября 2017 года .
  51. ^ «Новые возможности Fortran 2015» . ISO . Проверено 23 июня 2017 года .
  52. ^ "Доктор Фортран в" Одна дверь закрывается " " . Software.intel.com . Проверено 21 сентября 2015 года .
  53. ^ «Доктор Фортран переходит на голландский язык: Фортран 2015» . Software.intel.com . Проверено 19 ноября 2014 .
  54. ^ Fortran 2018 Интерпретация документа , 9 октября 2018
  55. ^ Кемени, Джон G .; Курц, Томас Э. (11 октября 1968 г.). «Дартмутское разделение времени» . Наука . 162 (3850): 223–228. Bibcode : 1968Sci ... 162..223K . DOI : 10.1126 / science.162.3850.223 . PMID 5675464 . 
  56. ^ Филлипс, Ли. «Будущее научных вычислений: может ли любой язык программирования превзойти чудовище 1950-х годов?» . Ars Technica . Проверено 8 мая 2014 .
  57. ^ Pasachoff, Джей М. (апрель 1984). «Ученые: Фортран против Модула-2» . БАЙТ (письмо). п. 404 . Проверено 6 февраля 2015 года .
  58. Гальперин, Борис (1993). «26». Моделирование больших вихрей сложных инженерных и геофизических течений . Лондон: Кембриджи. п. 573. ISBN 978-0-521-43009-8.
  59. ^ "Interstellar 8-Track: Как продолжает работать винтажная технология Voyager" . ПРОВОДНОЙ . Проверено 23 декабря 2017 года .
  60. ^ «Методы обеспечения стандартизации программного обеспечения FORTRAN». ОСТИ 5361454 . ПОРТ ... Библиотека ...  Цитировать журнал требует |journal=( помощь )
  61. ^ а б П. А. Фокс (1977). «Порт - портативная библиотека математических подпрограмм». Портативная библиотека математических подпрограмм . Конспект лекций по информатике. 57 . С. 165–177. DOI : 10.1007 / 3-540-08446-0_42 . ISBN 978-3-540-08446-4. ПОРТ ... написано на (ПОРТ) .. ANS Fortran
  62. DE Whitten (1975). «Фортран, независимый от машины и конфигурации: Portable Fortran». DOI : 10.1109 / TSE.1975.6312825 . S2CID 16485156 .  Цитировать журнал требует |journal=( помощь )
  63. ^ «Проблемы переносимости» . .. обсуждает .. переносимость .. Fortran
  64. ^ Хили, MJR (1968). «К ФОРТРАНУ VI» . Передовой научный Fortran от CDC . CDC. С. 169–172. Архивировано из оригинала 5 июля 2009 года . Проверено 10 апреля 2009 года .
  65. ^ "сторонние примечания к выпуску Fortran v6.1" . Cs-software.com. 15 марта 2011 . Проверено 19 ноября 2014 .
  66. ^ "Internal Translator (IT) A Compiler for IBM 650", авторы AJ Perlis, JW Smith и HR Van Zoeren, вычислительный центр Технологического института Карнеги.
  67. ^ "Домашняя страница языка программирования F" . Fortran.com. Архивировано из оригинала 9 января 2015 года . Проверено 19 ноября 2014 .
  68. ^ «Фортран для языковой системы .NET» . Архивировано из оригинального 18 октября 2014 года.
  69. ^ «FTN95: Fortran 95 для Windows» . Silverfrost.com . Проверено 19 ноября 2014 .
  70. ^ X3J3 распределение после встречи состоялась встреча в Брукхейвенской национальной лаборатории в ноябре 1976 г. [ ненадежный источник? ]
  71. ^ "Уничтожение O", Computer Weekly, 3 марта 1977 г.
  72. ^ «Правила ввода данных (Справочник по языку FORTRAN 77)» . docs.oracle.com . Проверено 29 сентября 2016 года .

Дальнейшее чтение [ править ]

Языковые стандарты
  • Ansi x3.9-1966. Стандарт США FORTRAN (PDF) . Американский национальный институт стандартов. Архивировано из оригинального (PDF) 15 мая 2011 года . Проверено 5 мая 2010 года . Неофициально известен как FORTRAN 66.
  • Ansi x3.9-1978. Американский национальный стандарт - язык программирования FORTRAN . Американский национальный институт стандартов. Архивировано из оригинального 29 октября 2013 года . Проверено 11 декабря 2007 года .Также известен как ISO 1539–1980, неофициально известный как FORTRAN 77.
  • ANSI X3.198-1992 (R1997) / ISO / IEC 1539: 1991. Американский национальный стандарт - язык программирования Fortran Extended . Американский национальный институт стандартов / ISO / IEC. Архивировано из оригинала 1 мая 2002 года. Неофициально известен как Fortran 90.
  • ИСО / МЭК 1539-1: 1997. Информационные технологии - Языки программирования - Фортран - Часть 1: Базовый язык (PDF) . Архивировано 18 августа 2011 года из оригинального (PDF) . Проверено 13 декабря 2007 года .Неофициально известен как Fortran 95. Этот стандарт состоит еще из двух частей. Часть 1 официально принята ANSI.
  • ИСО / МЭК 1539-1: 2004. Информационные технологии - Языки программирования - Фортран - Часть 1: Базовый язык (PDF) . Неофициально известен как Fortran 2003.
  • ИСО / МЭК 1539-1: 2010 (окончательный проект международного стандарта). Информационные технологии - Языки программирования - Фортран - Часть 1: Базовый язык (PDF) .[ постоянная мертвая ссылка ] Неофициально известна как Fortran 2008.
Связанные стандарты
  • Кнейс, Вильфрид (октябрь 1981). «Проект стандарта промышленного FORTRAN реального времени» . Уведомления ACM SIGPLAN . 16 (7): 45–60. DOI : 10.1145 / 947864.947868 . ISSN  0362-1340 . S2CID  8662381 .
  • ISO 8651-1: 1988 Системы обработки информации - Компьютерная графика - Привязки языков графической системы ядра (GKS) - Часть 1: FORTRAN . Женева, Швейцария: ISO . 1988 г.
Другой справочный материал
  • Стандарт ECMA на FORTRAN (PDF) . Европейская ассоциация производителей компьютеров. Апрель 1965 . Проверено 17 ноября 2014 года .
  • Справочное руководство по FORTRAN 77 4.0 (PDF) . Sun Microsystems, Inc. 1995 . Проверено 17 ноября 2014 года .
  • «Форма кодирования FORTRAN» (PDF) . IBM . Архивировано из оригинального (PDF) 8 июня 2015 года . Проверено 17 ноября 2014 года .
  • IBM System / 360 и System / 370 язык Fortran IV (PDF) . Машины международного бизнеса . Май 1974. Архивировано из оригинального (PDF) 6 апреля 2011 года . Проверено 17 ноября 2014 года .
  • Герц, Майкл (2014). «Справочная карта современного Фортрана» (PDF) . Проверено 14 декабря 2014 .
Книги
  • Адамс, Жанна К .; Брейнерд, Уолтер С .; Хендриксон, Ричард А .; Мэн, Ричард Э .; Мартин, Жанна Т .; Смит, Брайан Т. (2009). Справочник Fortran 2003 (1-е изд.). Springer . ISBN 978-1-84628-378-9.
  • Акин, Эд: "Объектно-ориентированное программирование через Fortran 90/95", Cambridge Univ Press, ISBN 978-0521524087 , (февраль 2003 г.). 
  • Брейнерд, Уолтер С., Голдберг, Чарльз Х., Адамс, Жанна К.: "Руководство программиста по Fortran 90" (3-е изд.), Springer, (1996).
  • Брейнерд, Уолтер С.: «Руководство по программированию на Fortran 2008» (2-е изд.), Springer, ISBN 978-1447167587 (сентябрь 2015 г.). 
  • Чепмен, Стивен Дж. (2018). Fortran для ученых и инженеров (четвертое изд.). Нью-Йорк : McGraw-Hill Education . стр. xxiv + 1024. ISBN 978-0-07-338589-1.
  • Чиверс, Ян; Слейтхольм, Джейн (2018). Введение в программирование с помощью Fortran (4-е изд.). Springer. ISBN 978-3-319-75501-4.
  • Клерман, Норман С., Спектор, Уолтер: «Современный Фортран: стиль и использование», Cambridge University Press, ISBN 978-0521514538 (февраль 2012 г.). 
  • Эллис, ПМР; Phillips, Ivor R .; Лахи, Томас М. (1994). Программирование на Фортране 90 (1-е изд.). Эддисон Уэсли. ISBN 978-0-201-54446-6.
  • Эттер, DM (1990). Структурированный FORTRAN 77 для инженеров и ученых (3-е изд.). ISBN издательства Benjamin / Cummings Publishing Company, Inc. 978-0-8053-0051-2.
  • Керриган, Дж. Ф. (1993). Переход на Fortran 90 (1-е изд.). ISBN O'Reilly & Associates, Inc. 1-56592-049-X.
  • Купфершмид, Майкл (2002). Классический Фортран: программирование для инженерных и научных приложений . Марсель Деккер (CRC Press). ISBN 978-0-8247-0802-3.
  • Лоренцо, Марк Джонс: «Абстрагирование от машины: история языка программирования FORTRAN (FORmula TRANslation)», опубликовано независимо, ISBN 978-1082395949 , (август 2019 г.). 
  • Лукидес, Майк (1990). Unix для программистов FORTRAN . Севастополь, Калифорния 95472: ISBN O'Reilly & Associates, Inc. 0-937175-51-X.CS1 maint: location ( ссылка )
  • Маккракен, Дэниел Д. (1961). Руководство по программированию FORTRAN . Нью-Йорк: Вили. LCCN  61016618 .
  • Меткалф, Майкл; Рид, Джон; Коэн, Малкольм: «Объяснение современного Fortran: включение Fortran 2018» (5-е изд.), Oxford Univ. Press, ISBN 978-0198811886 , (ноябрь 2018 г.). 
  • Найхофф, Ларри; Сэнфорд Леестма (1995). FORTRAN 77 для инженеров и ученых с введением в Fortran 90 (4-е изд.). Прентис Холл . ISBN 978-0-13-363003-9.
  • Пейдж, Клайв Г. (1988). Руководство профессионального программиста по Fortran77 (изд. От 7 июня 2005 г.). Лондон: Питман. ISBN 978-0-273-02856-7. Проверено 4 мая 2010 года .
  • Press, Уильям Х. (1996). Числовые рецепты в Fortran 90: Искусство параллельных научных вычислений . Кембридж, Великобритания: Издательство Кембриджского университета. ISBN 978-0-521-57439-6.
  • Sleighthome, Джейн; Чиверс, Ян Дэвид (1990). Интерактивный Fortran 77: практический подход . Компьютеры и их приложения (2-е изд.). Чичестер: Э. Хорвуд. ISBN 978-0-13-466764-5. Архивировано из оригинального 12 марта 2014 года . Проверено 12 марта 2014 .
Статьи
  • Аллен, Ф.Э. (сентябрь 1981 г.). «История технологии языковых процессоров в IBM». Журнал исследований и разработок IBM . 25 (5): 535–548. DOI : 10.1147 / rd.255.0535 . S2CID  14149353 .
  • JW Backus ; Р. Дж. Бибер; С. Бест; Р. Гольдберг; LM Haibt ; HL Herrick; Р. А. Нельсон; Д. Сэйр ; ПБ Шеридан; Х. Стерн; Л. Циллер; Р. А. Хьюз; Р. Натт (февраль 1957 г.). Система автоматического кодирования FORTRAN (PDF) . Западная объединенная компьютерная конференция. С. 188–198. DOI : 10.1145 / 1455567.1455599 .
  • Чиверс, Ян Д.; Слейтхольм, Джейн (2013). «Поддержка компилятором стандартов Fortran 2003 и 2008» . ACM SIGPLAN Форум Fortran . 28 (1): 26–28. DOI : 10.1145 / 1520752.1520755 . ISSN  1061-7264 . S2CID  26200779 . Архивировано из оригинального 16 мая 2008 года.
  • Меткалф, Майкл (2011). «Семь возрастов Фортрана» . Журнал компьютерных наук и технологий . 11 (1): 1–8.
  • Пиготт, Диармуид (2006). «ФОРТРАН - компилятор высокого уровня Бакуса и др. (Компьютерный язык)» . Энциклопедия компьютерных языков . Университет Мердока . Архивировано из оригинала 8 октября 2009 года . Проверено 5 мая 2010 года .
  • Робертс, Марк Л .; Гриффитс, Питер Д. (1985). «Рекомендации по проектированию для персонального компьютера IBM Professional FORTRAN, оптимизирующий компилятор» (PDF) . IBM Systems Journal . 24 (1): 49–60. DOI : 10.1147 / sj.241.0049 .

Внешние ссылки [ править ]

  • ISO / IEC JTC1 / SC22 / WG5 - официальный источник стандартов Fortran
  • Документы по стандартам Fortran - стандарты GFortran
  • fortran-lang.org - новый дом Fortran в Интернете (2020 г.).
  • История FORTRAN и Fortran II - Музей истории компьютеров
  • Валмер Норрод и др .: Курс самообучения по программированию FORTRAN - Том I - учебник , Корпорация компьютерных наук Эль-Сегундо, Калифорния (апрель 1970 г.). НАСА (N70-25287).
  • Валмер Норрод, Шелдом Блечер и Марта Хортон: учебный курс по программированию FORTRAN - Том II - , НАСА CR-1478 (апрель 1970 г.), НАСА (N70-25288).