• Язык программирования Fortran - описание, основные команды и функции. Язык программирования Фортра́н (Fortran)

    Впервые я услышал о Фортране в раннем детстве от отца. Он рассказывал, что в 70-х годах ему приходилось часами выстаивать очереди к едва ли не единственной ЭВМ в ВУЗе, дабы используя перфокарту запустить примитивный код. Признаюсь честно, с тех пор и до недавнего времени (несмотря на полученное техническое образование) я пребывал в полной уверенности, что Фортран остался где-то далеко там, в мире, где носителями информации выступают странные картонки с дырками, а компьютеры стоят так дорого, что воспринимаются, как настоящий аттракцион.

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

    Пережил минимум 10 обновлений

    В действительности, тот Фортран о котором вы слышите от преподавателей в школе или университете был создан в период с 1954 по 1957 года. Он вошёл в историю, как первый полностью реализованный язык высокого уровня, совершил маленький прорыв в IT-мире, но по сути был не слишком удобен и функционален. “Допиливать” его в IBM принялись практически сразу, уже в 1958 году появился FORTRAN II и параллельно FORTRAN III. Но более-менее приличный вид он приобрёл лишь в 70-х, когда появились достаточно портативные машины, когда был разработан полноценный стандарт IBM FORTRAN IV, и появился FORTRAN 66 с циклами, метками, условными операторами, командами ввода/вывода и прочими по современным меркам примитивными возможностями.

    Последняя версия появилась в 2010 году, её название Fortran 2008 (как видите, в ходе истории, название перестало писаться исключительно заглавными буквами), отличительной чертой которой являются всевозможные параллельные вычисления, положительно сказывающиеся, как на скорости обработки данных, так и на размерности обрабатываемых массивов. Кроме того, на 2018 год запланирован выход Fortran 2015. Из анонса следует, что в нём будет улучшена интеграция с С, а также устранены текущие недоработки.

    Входит в 30 самых популярных языков программирования

    На сегодняшний день 0,743% запросов в поисковых системах относительно языков программирования посвящену именно Фортрану. Чтобы вы поняли, насколько это круто, просто представьте, что такие языки, как Lisp, Scala, Clojure, LabVIEW, Haskell, Rust и VHDL, находятся в рейтинге ниже.

    Может работать на Android (и не только)

    Компиляторы для Фортана за его долгую историю разрабатывались такими компаниями, как IBM, Microsoft, Compaq, HP, Oracle, благодаря чему сегодня язык совместим с Windows, Mac OS и Linux. Более того, удобное приложение с компилятором теперь можно взять с собой, благодаря приложению CCTools для Android. Можно запустить компилятор и на вашем iPhone, но в этом случае немного поколдовать.

    Конкурирует с MATLAB

    Пока в этом тексте не было сказано главного, а именно области применения Фортрана. Так вот это язык, востребованный в науке и инженерии, полностью или частично применяемый для прогноза погоды, океанографии, молекулярной динамики, сейсмологического анализа. В общем, это самый настоящий “Data Science”-язык родом из времени, когда в массовую продажу впервые поступил калькулятор.

    При этом стоит признать, что частично своей популярностью Фортран обязан наследию. За долгие годы практически без конкуренции язык оброс огромной базой клиентов, библиотек и надстроек. Кроме того, каждая следующая версия Фортрана неизбежно поддерживает предыдущие. Поэтому сложилась ситуация, когда отсутствуют какие-либо существенные факторы, для того, чтобы учёные и инженеры вынуждены были отказаться от этого союза.

    По сути, главным конкурентом Фортрана на сегодняшний день является MATLAB, который более универсален, более функционален и удобен. Однако MATLAB при этом имеет строгие ограничения по используемому ПО, достаточно дорого стоит и в большинстве случаев просто излишен.

    Имеет относительно безоблачное будущее

    Безусловно, мы не можем предсказать, что будет через 10-20 лет, и как за это время изменится IT-мир. Однако, если посмотреть на возможных новых конкурентов для Фортрана (таких, как Go), их главный недостаток - универсализация. То есть создатели Fortran очень быстро наметили целевую аудиторию в виде учёных, их мнение и пожелания имеют приоритетное значение. Поэтому трудно представить, что завтра они откажутся от своего “спецзаказа” ради какой-то модной тенденции. Именно на основании этого можно утверждать, что ещё одно поколение Фортран отходит смело.

    А потом они просто выпустят новую версию.

    Министерство образования и науки Российской Федерации

    Уральский федеральный университет

    имени первого Президента России

    ОСНОВЫ ПРОГРАММИРОВАНИЯ

    НА ЯЗЫКЕ ФОРТРАН

    Учебное пособие

    Екатеринбург

    Введение. 3

    Историческая справка. 5

    Структура программы.. 8

    Отличия Фортрана 90 от Фортрана 77. 11

    Доступ к вычислительным ресурсам. 15

    Запуск задач на кластере. 17

    Переписать тексты программ на сервер. 17

    Компиляция программ. 17

    Запуск программы на счет. 19

    Типы данных. 22

    Целая константа. 22

    Вещественная константа. 23

    Вещественная константа двойной точности. 23

    Комплексная константа. 23

    Комплексная константа двойной точности. 24

    Логическая константа. 24

    Текстовая константа. 24

    Операторы описания типов данных. 26

    INTEGER целого типа. 26

    REAL и DOUBLE PRECISION вещественного типа. 27

    COMPLEX и DOUBLE COMPLEX комплексного типа. 28

    CHARACTER символьного типа. 29

    LOGICAL логического типа. 29

    DIMENSION массивов. 30

    Атрибут PARAMETER.. 32

    Разновидности встроенных типов данных. 35

    Выражения, операции и присваивания. 36

    Арифметические выражения. 36

    Выражения отношения. 37

    Логические выражения. 38

    Правила вычисления выражений. 38

    Операторы ввода/вывода. 39

    Оператор ввода DATA.. 39

    Оператор ввода READ.. 40

    Оператор вывода WRITE. 41

    Оператор вывода на экран PRINT. 42

    Оператор задания формата ввода-вывода (FORMAT) 43

    Спецификации X, T. 43

    Спецификатор I 44

    Разделители. 45

    Спецификация F. 46

    Повторители. 49

    Спецификация E. 50

    Спецификация G.. 51

    Дескрипторы данных. 52

    Операторы условия. 53

    Логический оператор условия. 53

    Арифметический оператор условия. 57

    Конструкция SELECT CASE. 60

    Операторы цикла. 62

    Оператор цикла DO.. 62

    Оператор цикла DO WHILE. 64

    Оператор остановки STOP. 65

    Оператор выхода из цикла EXIT. 66

    Операторы перехода. 67

    Оператор бузословного перехода GOTO.. 67

    Вычисляемый оператор перехода GOTO.. 67

    Оператор условного перехода IF … GOTO.. 68

    Работа с массивами. 69

    Ввод массивов. 69

    Вывод массивов. 71

    Обработка массивов. 73

    Подпрограммы.. 76

    Оператор-функция. 78

    Подпрограмма-функция FUNCTION.. 81

    Подпрограмма-процедура SUBROUTINE. 83

    Работа с внешними файлами. 85

    Оператор открытия файла OPEN.. 85

    Оператор закрытия файла CLOSE. 86

    Примеры работы с файлами. 86

    Литература. 89

    Введение

    Характерная черта параллельных ЭВМ – возможность одновременного использования для обработки информации большого числа процессоров. Применение многопроцессорных вычислительных систем (МВС) ставит две задачи построения параллельных алгоритмов: распараллеливание существующих последовательных алгоритмов и создание новых алгоритмов с ориентацией на параллельные вычислительные системы.

    Наиболее распространенной технологией программирования для параллельных компьютеров с распределенной памятью в настоящее время является MPI. Основным способом взаимодействия параллельных процессов в таких системах является передача сообщений друг другу. Это и отражено в названии данной технологии – Message Passing Interface (интерфейс передачи сообщений). Стандарт MPI фиксирует интерфейс, который должен соблюдаться как системой программирования на каждой вычислительной платформе, так и пользователем при создании своих программ. Коммуникационная библиотека MPI стала общепризнанным стандартом в параллельном программировании с использованием механизма передачи сообщений.

    MPI-программа представляет собой набор независимых процессов, каждый из которых выполняет свою собственную программу (не обязательно одну и ту же), написанную на языке C или FORTRAN.В языке FORTRAN большинство MPI-процедур являются подпрограммами (вызываются с помощью оператора CALL), а код ошибки возвращают через дополнительный последний параметр процедуры. Несколько процедур, оформленных в виде функций, код ошибки не возвращают. Не требуется строгого соблюдения регистра символов в именах подпрограмм и именованных констант. Массивы индексируются с 1. Объекты MPI, которые в языке C являются структурами, в языке FORTRAN представляются массивами целого типа.

    В ИММ программируют на Фортране. Главной сложностью в его использовании для больших задач является согласование взаимодействия частей большой задачи. Фортран 90 включает механизмы взаимодействия объектов в соответствии с технологией объектно-ориентированного программирования, которые облегчают коллективную работу над большим проектом. Это модули для оформления библиотек, структуры и производные типы данных для организации сложных данных, это динамическое распределение памяти, а также ряд механизмов обработки массивов, в том числе образование различных вырезок (сечений). Возможность объединения в одном семействе (в роду) типовых процедур обработки, отличающихся типами их аргументов, может быть полезным средством в целом ряде задач. Виды (семейства) типов данных позволяют легко настраивать реализацию типа с учетом свойств аппаратуры (например, тип INTEGER можно объявить длинным или коротким через управление видом KIND). Некоторые правила стилевого оформления могут помогать разработке, например, объявление входных, выходных и изменяемых параметров процедуры помогает отысканию ошибок взаимодействия программных единиц. Правила записи свойств данных, комментариев и других элементов облегчают чтение написанных программ, что ускоряет поиск ошибок.

    Историческая справка

    1954 г. – IBM , первый транслятор языка Фортран .

    1958 г. – Фортран II .

    1962 г. – Фортран IV .

    1966 г. – Фортран 66.

    1978 г. – Фортран 77 .

    Модификация языка Фортран, появившиеся в 1958 году, получила название Фортран II и содержала понятие подпрограммы и общих переменных для обеспечения связи между сегментами.

    К 1962 году относится появление языка, известного под именем Фортран IV . В 1966 завершена разработка американского стандарта на язык ANSI (American National Standards Institute), язык называют Fortran 66 . В 1978 году разработана вторая версия стандарта ANSI – язык Fortran 77 , включающий элементы структурного программирования, например, структурный IF, символьные типы.

    Третий вариант стандарта ANSI – Fortran 90 , реализован в 1991. Fortran 90 является развитием языка Fortran 77 , так что программа, написанная на Fortran 77 , может быть скомпилирована и запущена как программа на Fortran 90 . Стандарт Fortran 90 Standard вводит много новых средств для операций над массивами, новые методы спецификации точности, свободный формат исходного кода, рекурсию, динамические массивы и т. д.

    Программы на текущем языке стандарта Fortran 77 могут успешно компилироваться компиляторами Fortran 90 без каких-либо изменений. Тем не менее, структура программы на языке Fortran 90 может значительно отличаться от структуры эквивалентной программы на Fortran 77 . Программист должен остерегаться смешения двух стилей.

    В такой же мере компилятор с Fortran 90 требует обеспечения объяснений для сообщений о некоторых кодах несоответствия (несогласования), то есть использование операторов или переменных, которые разрешены сверх множества правил, выходящих за пределы стандарта.

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

    Язык программирования Fortran используется в основном для научных вычислений. Изобретенный в 1954 году, это старейший язык программирования высокого уровня, за которым последовал Lisp (1958), Algol (1958) и COBOL (1959). Число научных библиотек, написанных на "Фортране", и создание специальных переводчиков-компиляторов позволяют использовать язык и сегодня. Кроме того, были созданы множественные калькуляторы для векторизации, сопроцессоров, параллелизма, которые вкрапляют этот язык для использования в промышленном производстве современного мира.

    Джон Бэкус, радиотехник IBM, опубликовал в 1954 году статьи под заголовками «Предварительный отчет», «Спецификации для IBM Matmal Transmula TRANslating System», которые положили начало термину FORTRAN. Затем потребовалось еще два года усилий целой команды, которую он возглавил, для написания первого компилятора языка программирования Fortran (25 000 строк для IBM 704).

    Название языка первоначально прописывалось заглавными буквами FORTRAN и использовалось для обозначения языковых версий вплоть до Fortran 77, в отличие от бесплатных версий синтаксиса, начиная с Fortran 90. В стандарте Fortran 77 строчные буквы не являются частью языка, но большинство компиляторов поддерживают их, в дополнение к стандарту.

    Сегодня язык программирования Fortran является доминирующим в программировании, используемом в инженерных приложениях. Поэтому важно, чтобы инженеры-выпускники могли читать и изменять код Fortran. Время от времени, так называемые эксперты, прогнозируют, что язык потеряет свою популярность и скоро перестанет использоваться вообще.

    Эти прогнозы всегда терпели неудачу. "Фортран" - самый устойчивый компьютерный язык программирования в истории. Одна из основных причин, по которой язык программирования Fortran выжил и выживет - это инерция программного обеспечения. После того, как компания потратила много ресурсов и, возможно, миллионы долларов на программный продукт, вряд ли она будет переводить программное обеспечение на другой язык.

    Основным преимуществом Fortran является то, что он стандартизован международными органами ANSI и ISO. Следовательно, если программа написана в ANSI, то она будет запущена на любом компьютере с компилятором Fortran 77. Это важная информация. Таким образом, программы объектно ориентированного языка программирования Fortran существуют на разных программных устройствах.

    Этапы создания языковой платформы:

    1. В 1954-1957 годах первый компилятор был разработан с нуля. В те времена не было «языков высокого уровня» (= HLL), большинство операционных систем были простыми, а память была небольшой, что-то около 16 Kb. Первый компилятор работал на IBM 704. Этот язык HLL был намного более эффективным, чем программирование на ассемблере, и очень популярным в свое время.
    2. В 1958 году издан ФОРТРАН II. В том же году был разработан FORTRAN III, но так и не выпущен в широкое производство.
    3. В 1961 году был создан FORTRAN IV. Он содержал улучшения, такие как реализация операторов COMMON и EQUIVALENCE.
    4. В 1962 году комитет ASA начал разработку стандарта для объектно ориентированного языка программирования Fortran. Это позволило продавцу использовать его в каждом новом компьютере. И этот факт сделал его еще более популярным HLL, язык стал доступен в системах Apple и TRS80.
    5. В 1967 году был выпущен FORTRAN 66, первый в мире стандарт HLL. Публикация стандарта означала, что язык стал более широко реализованным, чем любой другой. К середине 1970-х годов практически каждый компьютер, мини или мэйнфрейм был снабжен стандартным языком FORTRAN 66. Язык использовал утверждение if, goto-statement и spagethi-программы. Такое структурированное программирование стало популярным в 60-70-х годах.
    6. "Фортран" существовал на перфокартах в частности, с системой FMS, оптимизируя расположение своих источников до тех пор, пока Fortran 90 не ввел «свободный» синтаксис. В нем код массива Fortran начинается с 7-го столбца и не должен превышать 72 тыс. знаков.

    Следует также отметить, что до Fortran 90 пробелы не имели значения между 7-м и 72-м столбцом. Таким образом, цикл «DO I = 1.5» также может быть записан «DOI = 1,5». С другой стороны, «DO I = 1,5» эквивалентно «DOI = 1.5».

    Многочисленные промышленные коды были написаны в Nastran, NAG и IMSL- Fortran библиотеке. Совместимость новых версий с предыдущими важна. По этой причине Fortran 90 полностью совместим с Fortran 77. Однако в следующих версиях стандарта уже были введены несовместимости.

    Вскоре последовали более совершенные языки Fortran 90 и Fortran 95, обновленные до текущего стандарта Fortran-2003. При том, что современные компиляторы работают неограниченно во всех текущих версиях Windows и даже поддерживают 64-разрядные процессоры. Между тем, производители признали тенденцию времени и предлагают компиляторы для Linux в виде объектно ориентированного языка программирования Actor Fortran.

    Предпосылки использования языка программирования

    Нужно понимать, что Fortran по-прежнему является широко используемым языком программирования и в основном применяется в области открытий. Классические области применения, например, в физике или технике, где выполняются обширные и сложные математические вычисления. В них очень полезны обширные математические библиотеки, которые существуют для разных компиляторов. Подведя итог, можно утверждать, что сегодня язык Fortran по-прежнему используется по ряду причин:

    • Наличие многочисленных функциональных библиотек, разрабатываемых на протяжении многих лет.
    • Наличие программного обеспечения в "Фортране", которое требует очень важных ресурсов для развития, когда переход на другой язык считается слишком дорогостоящим.
    • Наличие мощных компиляторов со встроенными функциями Fortran, которые производят очень быстрые исполняемые файлы.
    • Язык более доступен для изобретателя, у которого не было специализированного компьютерного курса.

    Многие научные программы теперь написаны на языках C и C ++, компиляторы которых доступны на большинстве машин. Другие скомпилированные языки иногда используются для научных вычислений, и особенно для таких программ, как Scilab или Matlab. Последние также включают библиотеки BLAS и LAPACK, разработанные в программировании Fortran. Matlab изначально была программой в Fortran, распространяемой в университетах и исследовательских центрах.

    Хотя Tom Lahey теперь является «единственным» генеральным компилятором, Lahey Computer Systems продолжает использоваться многими программистами. Lahey уже несколько лет работает с Fujitsu, Lahey концентрируется на синтаксическом анализаторе Fortran, а Fujitsu - на генераторе кода. Текущий Compiler Suite для Windows называется Lahey Fujitsu Fortran 95 (LF95) и доступен в различных версиях, некоторые из которых также интегрируются с Visual Studio .NET 2003.

    Существует также недорогая версия LF95 Express без собственной IDE. Текущая версия - 7.1. в Linux вызывается компилятором Lahey / Fujitsu Fortran 95 v6.2 для Linux и доступна в двух разных версиях. Например, версия Pro включает совместимость с OpenMP v2.0, простой графический движок Winteracter Starter Kit, математическую библиотеку и научную библиотеку подпрограмм Fujitsu 2.

    Другим производителем является Absoft. Компиляторы и C ++ существуют не только для Windows и Linux, но также и для OS X на Macintosh. Эти компиляторы интересны разработчикам, которые нуждаются или хотят поддерживать все три платформы. К сожалению, Absoft различает 32- и 64-разрядные версии под Linux, в настоящее время используется версия 10.0 Fortran 95 для 64-разрядной Linux.

    Относительно новым для рынка является пакет EKOPath Compiler Suite. Это состоит из компиляторов C ++ и среды разработки Fortran для Linux, которые также доступны отдельно и в основном предназначены для 64-разрядных AMDusers. Он также работает на Intel EM64T. Также Microsoft однажды попыталась найти «дешевый рынок» Fortran и вывела на рынок Microsoft Powerstation.

    Возможно, рынок был слишком мал для софтверного гиганта, но Digital занял часть кода в 1997 году и использовал свой опыт работы с компиляторами Digital Unix и OpenVMS. Это было рождение еще очень успешного Digital Visual Fortran. В какой-то момент Digital затем перешел в Compaq, компилятор был доработан до текущей версии Compaq Visual Fortran (CVF) v6.6.

    В дополнение к «нормальным» 32-разрядным платформам существуют различные 64-битные компиляторы, например, для Intel Itanium и Intel EM64T. Хотя они не являются «неотложными» для объема поставки, они доступны для бесплатной загрузки через веб-систему поддержки Intel Premier.

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

    Программа Fortran представляет собой последовательность строк текста. Текст должен следовать определенному синтаксису. Например: круг радиуса r, площадью c.

    Эта программа считывает реальный радиус и определяет площадь круга с радиусом r:

    "Радиус r:"read (*, *) r;

    area = 3.14159 * r * r;

    write (*, *) "Area =";

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

    Программа Fortran обычно состоит из основной программы или драйвера и нескольких подпрограмм, процедур или подпрограмм. Структура основной программы:

    • название программы;
    • декларации;
    • заявления;
    • стоп;
    • конец.

    Выделенные курсивом не должны восприниматься как буквальный текст, а скорее, как общее описание. Оператор остановки является необязательным и может казаться излишним, так как программа остановится, когда она достигнет конца в любом случае, но рекомендуется всегда завершать программу с помощью оператора остановки, чтобы подчеркнуть, что поток выполнения прекращается.

    Правила позиции столбца

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

    • Col. 1: Blank или «c» или «*» для комментариев.
    • Col. 2-5: метка оператора.
    • Col. 6: продолжение предыдущей строки.
    • Col. 7-72: утверждение.
    • Col. 73- 80: Номер последовательности.

    Строкой Fortran, начинающейся с буквы «c» или звездочкой в первом столбце, является комментарий. Комментарии могут появляться в любом месте программы. Хорошо написанные, они имеют решающее значение для читаемости программы. Коммерческие коды Fortran часто содержат около 50% комментариев. Также можно столкнуться с программами, которые используют восклицательный знак (!). Это очень нестандартно в Fortran 77, но разрешено в Fortran 90.

    Восклицательный знак может появляться в любом месте в строке. Иногда заявление не вписывается в одну строку, тогда можно разбить оператор на две или более строк и использовать знак продолжения в позиции.

    1. C23456789 - это демонстрирует положение столбца.
    2. «C» - следующий оператор проходит две области физических линий.
    3. Area = 3.14159265358979+ * r * r.

    Пустые пробелы игнорируются, начиная с "Фортрана 77". Поэтому, если удалить все пробелы в Fortran 77, программа по-прежнему синтаксиально правильная, хотя при этом почти нечитаемая для операторов.

    Имена переменных в Fortran состоят из 1-6 символов, выбранных из букв a-z и цифр 0-9. Первым символом должна быть буква. Fortran 90 допускает имена переменных произвольной длины. Fortran 77 не проводит различия между верхним и нижним регистром, на самом деле он предполагает, что все входные данные являются верхним регистром. Тем не менее, почти все компиляторы F 77 будут принимать строчные буквы. Каждая переменная должна быть определена в объявлении. Это устанавливает тип переменной. Наиболее распространенными списками переменных являются:

    • integer;
    • real;
    • double precision;
    • complex;
    • logical;
    • character.

    Список переменных должен состоять из имен, разделенных запятыми. Каждая переменная должна быть объявлена ровно один раз. Если переменная не объявлена, F 77 использует набор неявных правил для установления типа. Это означает, что все переменные, начинающиеся с букв «in», являются целыми числами, а все остальные - реальными. Многие старые программы F 77 используют эти неявные правила, но программисты не должны этого делать, так как вероятность ошибок в программе резко возрастает, если они непостоянно объявляют переменные.

    Фортран 77 имеет только один тип для целочисленных переменных. Целые числа обычно хранятся в виде 32-битных (4 байта) переменных. Поэтому все целочисленные переменные должны принимать значения в диапазоне [-m, m], где m составляет приблизительно 2 * 10 9.

    F 77 имеет два разных типа для переменных с плавающей запятой, называемых реальной двойной точностью. Некоторые численные вычисления требуют очень высокой точности, и следует использовать двойную точность. Обычно реальная - 4-байтовая переменная, а двойная точность - 8 байтов, но это зависит от машины.

    Нестандартные версии "Фортран" используют синтаксис real * 8 для обозначения 8-байтовых переменных с плавающей запятой. Некоторые константы появляются много раз в программе. Поэтому желательно определить их только один раз, в начале программы. Для этого используется оператор параметра. Это также делает программы более читаемыми. Например, программа площади круга должна быть написана так.

    Синтаксис оператора параметра (name = constant, ..., name = constant). Правила для оператора параметров:

    1. «Переменная», определенная в инструкции параметра, не является переменной, а константой, значение которой никогда не может измениться.
    2. «Переменная» может отображать не более одного оператора параметра.
    3. Параметр оператор должен прийти до первого исполняемого оператора

    Некоторые веские причины использовать параметр - помогает уменьшить количество опечаток, легко изменить константу, которая появляется много раз в программе.

    Логические выражения могут иметь только значение.TRUE. или.FALSE. и могут быть сформированы путем сравнения с использованием реляционных операторов.

    Нельзя использовать символы, такие как «<» или «=» для сравнения в F 77, но можно использовать правильную двухбуквенную аббревиатуру, заключенную точками. Однако такие символы разрешены в Fortran 90.

    Логические выражения могут быть объединены логическими операторами «AND», «OR», « NOT», которые имеют очевидное значение. Значения истины могут храниться в логических переменных. Назначение аналогично арифметическому назначению.

    Пример: logical a, ba = .TRUE.b = a .AND. 3 .LT. 5/2

    Порядок приоритетности очень важен. Правило состоит в том, что сначала вычисляются арифметические выражения, затем реляционные операторы и, наконец, логические операторы. Следовательно, b будет присвоено.FALSE. В приведенном выше примере логические переменные редко используются в Fortran, но они часто используются в условных операторах, таких как оператор «if».

    Константа и назначение

    Простейшая форма выражения является константой. Существует 6 типов констант, соответствующих 6 типам данных. Вот некоторые целочисленные константы:10-10032767+15

    Вещественные константы:1,0-0,252.0E63.333E-1.

    E-нотация означает, что нужно умножить константу на 10, поднятую до мощности, следующей за «E». Следовательно, 2.0E6 составляет два миллиона, а 3,333E-1 составляет примерно одну треть для констант, которые больше, чем наибольшее реальное допустимое, или которое требует высокой точности, следует использовать двойную точность. Обозначения те же, что и для реальных констант, за исключением того, что «E» заменяется на «D».

    Пример:2.0D-11D99.

    Здесь 2.0D-1 представляет собой двойную точность с одной пятой, в то время как 1D99 - один, за которым следуют 99 нулей.

    Следующий тип - это сложные константы. Они обозначаются парой констант (целых или вещественных), разделенных запятой и заключенных в скобки.

    Примерами являются:(2, -3)(1,9,9Е-1). Первое число обозначает действительную часть, а второе - мнимую часть.

    Пятый тип - это логические константы. Они могут иметь только одно из двух значений:

    Обращают внимание, что точки, содержащие буквы, обязательны к написанию.

    Последний тип - это символьные константы. Они чаще всего используются в виде массива символов, называемых строкой. Они состоят из произвольной последовательности символов, заключенных в апострофы (одинарные кавычки):

    "Anything goes!"

    "It is a nice day"

    Строковые и символьные константы чувствительны к регистру. Проблема возникает, если нужно иметь реальный апостроф в самой строке. В этом случае нужно удвоить апостроф: "It""s a nice day", что означает "Какой чудесный день"

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

    Самый простой - это логическое выражение «if» в Fortran описании: if (logical expression) executable statement.

    Это должно быть написано на одной строке, например, при определении абсолютного значения x:

    if (x .LT. 0) x = -x

    Если в «if» должно быть выполнено более одного оператора, тогда следует использовать следующий синтаксис: if (logical expression) thenstatementsendif.

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

    Операторы if могут быть вложены в несколько уровней. Чтобы обеспечить читаемость, важно использовать правильный отступ. Вот пример:

    if (x .GT. 0) thenif (x .GE. y) thenwrite(*,*) "x is positive and x >= y"elsewrite(*,*) "x is positive but x< y"endifelseif (x .LT. 0) thenwrite(*,*) "x is negative"elsewrite(*,*) "x is zero"endif

    Программисты должны избегать вложенности многих уровней утверждений «if», поскольку ему будет трудно следовать.

    Можно использовать любую рабочую станцию Unix с компилятором F 77. Опытные программисты рекомендуют использовать либо Sun, либо Dec.

    Программа Fortran состоит из простого текста, который следует определенным правилам синтаксиса. Это называется исходным кодом. Программисты используют редактор для записи исходного кода. Наиболее распространенными редакторами в Unix являются emacs и vi, но они могут быть немного сложными для начинающих пользователей. Можно использовать более простой редактор, например, xedit, который работает под X-окнами.

    После того, как написана программа Fortran, ее сохраняют в файле с расширением «.f» или «.for» и переводят программу в машиночитаемую форму. Это делается с помощью специальной программы, называемой компилятором. Компилятор Fortran 77 обычно называют f77. Результату компиляции дается несколько загадочное имя «a.out» по умолчанию, но можно выбрать другое имя, если потребуется. Чтобы запустить программу, просто вводят имя исполняемого файла, например, « a.out». Компилятор переводит исходный код в объектный код, а компоновщик или загрузчик - в исполняемый файл. Как видно, эта процедура совершенно не сложная и доступна любому пользователю.

    Моделирование является одним из наиболее часто используемых методов производства и других систем, имеющихся на современных предприятиях. Большинство имитационных моделей построены с использованием объектно ориентированного языка программирования Actor Fortran, или пакета программного обеспечения для моделирования, написанного на традиционном языке. Эти инструменты имеют свои ограничения. Объектно-ориентированная технология проявляла все большее применение во многих областях и обещает более гибкий и эффективный подход к моделированию бизнес-систем.

    Программирования Simula Fortran сравниваются с обычным научным языком программирования под названием FORTRAN. Типичная военная имитационная модель запрограммирована как в SIMULA, так и в FORTRAN. Программа SIMULA оказалась на 24% короче, чем версия FORTRAN.

    Версия SIMULA также более проста и дает лучшую картину моделируемой модели. С другой стороны, время выполнения для производственных тиражей на 64% больше с объектно ориентированным языком программирования Simula Fortran. Взвешивание плюсов и минусов показывает, что SIMULA будет все более прибыльным ПО, с более высокими расходами на персонал и более низкими затратами на компьютер.

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

    CUDA Fortran для ученых и инженеров определит интенсивные вычислительные части кода и изменит код для управления данными, параллелизма и оптимизации производительности. Все это делается в "Фортране", без необходимости переписывать программу на другой язык. Каждая концепция иллюстрируется фактическими примерами, поэтому можно сразу оценить производительность кода.

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

    Середина 50-х гг. характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных кодах стала уменьшаться, стали появляться языки программировании нового типа, выступающие в роли посредника между машинами и программистами. Наступило время второго и третьего поколений языков программирования

    С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня (high-levellanguage). Эти языки были Машино независимыми (не привязаны к определенному типу ЭВМ).

    Но для каждого языка были разработаны собственные компиляторы - программа, выполняющая компиляцию.

    Компиляция - трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера)

    Язык программирования FORTRAN

    Первый язык высокого уровня был создан в период с 1954 по 1957 года группой программистов под руководством Джона Бэкуса в корпорации IBM и это стало следующим этапом развития языков программирования. Это был язык программирования FORTRAN. Он предназначался для научных и технических расчетов. Название Fortran является сокращением от FORmulaTRANslator (переводчик формул).

    История языка

    В конце 1953 Джон Бэкус предложил начать разработку эффективной альтернативы ассемблеру для программирования на ПК IBM 704. Уже к середине 1954 была закончена черновая спецификация языка Fortran. Первое руководство для Fortran появилось в октябре 1956 вместе с первым компилятором, поставленным в апреле 1957. Компилятор был оптимизирующим, потому что клиенты отказывались использовать язык программирования высокого уровня, который был не в состоянии генерировать код с производительностью ниже, чем у ассемблера.

    В то время сообщество относилось скептически к новому способу программирования и не верили в то, что Fortran позволит программировать быстрее и эффективнее. По словам самого Джона Бэкуса большая часть его работы была направлена на то чтобы «быть ленивым». Ему жутко не нравилось писать программы под IBM 701 на ассемблере.

    Язык был широко принят учеными для написания программ с интенсивными вычислениями. Включение комплексного типа данных сделало его особенно подходящим для технических приложений.

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

    Фортран в СССР

    Фортран в СССР появился позже, чем на Западе, поскольку поначалу у нас более перспективным языком считался Алгол. Во внедрении Фортрана большую роль сыграло общение советских физиков со своими коллегами из CERN, где в 1960-х годах почти все расчёты велись с использованием программ на Фортране.

    Первый советский компилятор с Фортрана был создан в 1967 г. для машины «Минск-2», однако он не получил большой известности. Широкое внедрение Фортрана началось после создания в 1968 г. компилятора ФОРТРАН-ДУБНА для машины БЭСМ-6. Машины ЕС ЭВМ, появившиеся в 1972 г., уже изначально имели транслятор Фортрана («позаимствованный» с IBM/360 вместе с другим программным обеспечением)

    Современный Фортран. Достоинства языка

    Фортран широко использовался в основном для научных и инженерных вычислений. Он прекрасно подходит для решения численных задач, поскольку за 50 с лишним лет написано множество библиотек, поэтому языком пользуются сейчас и в ближайшем будущем ему не грозит забвение. Он используется и по сей день, однако, не столько по причине удачного дизайна, сколько в силу большого количества написанных на нём программ, изменять и, тем более, переписывать которые нет смысла.

    Вероятно, если вы хотите быстро что-то посчитать, то Фортран будет одним из лучших вариантов. Язык для этого именно и изобретался.

    Его структура способствует тому, что компилятор может очень хорошо оптимизировать вычисления.

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

    Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц , и пакет для решения сложных интегральных уравнений , и многие, многие другие. Ряд таких пакетов создавался на протяжении десятилетий и популярен в научной среде по сей день, например - IMSL (англ. ).

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

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

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

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

    FORTRAN 66 (1972) На базе стандарта фирмы IBM FORTRAN IV FORTRAN 77 (1980) Введено множество улучшений: Fortran 90 (1991) Значительно переработан стандарт языка. Fortran 95 (1997) Коррекция предыдущего стандарта. Введён оператор и конструкция FORALL, позволяющие более гибко, чем оператор и конструкция WHERE, присваивать массивы и заменять громоздкие циклы. FORALL позволяет заменить любое присваивание сечений или оператор и конструкцию WHERE, в частности, обеспечивает доступ к диагонали матрицы. Данный оператор считается перспективным в параллельных вычислениях, способствуя более эффективному, чем циклы, осуществлению распараллеливания . Fortran 2003 (2004) Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой. Добавлены также следующие возможности: Fortran 2008 (2010) Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran) . Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции и др.

    Компиляторы

    С момента первоначальной разработки языка, компиляторы Фортрана производит фирма IBM. В настоящее время фирмой IBM поставляется оптимизирующий компилятор VS Fortran для мэйнфреймов IBM System z , история развития различных версий которого восходит ещё к 1964 году , а также компилятор XL Fortran для платформ на базе архитектуры PowerPC - AIX , Linux и суперкомпьютера Blue Gene (выпускалась также версия для Mac OS X , когда компьютеры Macintosh использовали процессоры PowerPC). Оба этих компилятора содержат очень сложные оптимизаторы, являющиеся результатом непрерывной научной работы специалистов IBM на протяжении полувека. На базе компилятора IBM Fortran XL фирмой Absoft, бизнес-партнёром IBM, создан и поставляется компилятор Absoft Pro Fortran для систем на базе процессоров PowerPC (Linux, Mac OS X) и Intel (Linux, Mac OS X, Windows) .

    Фонд свободного программного обеспечения GNU выпускал открытый компилятор Фортрана-77 g77, доступный практически для любой платформы и полностью совместимый с GCC . Сейчас ему на смену пришел компилятор GFortran , в котором реализованы практически все конструкции стандарта Фортран-95 и многие конструкции стандартов Фортран-2003 и Фортран-2008. Он также полностью обратно совместим с Фортран-77. Также существует независимый проект g95 по созданию на основе GCC компилятора Фортран-95.

    Возможности и структура программы

    Фортран имеет достаточно большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами высокой точности. Выразительные средства языка изначально были весьма бедны, поскольку Фортран был одним из первых языков высокого уровня. В дальнейшем в Фортран были добавлены многие лексические конструкции, характерные для структурного, функционального и даже объектно-ориентированного программирования.

    Перфокарта с разметкой колонок для Фортрана.

    Структура программ изначально была ориентирована на ввод с перфокарт и имела ряд удобных именно для этого случая свойств. Так, 1-я колонка служила для маркировки текста как комментария (символом C ), с 1-й по 5-ю располагалась область меток, а с 7-й по 72-ю располагался собственно текст оператора или комментария. Колонки с 73-й по 80-ю могли служить для нумерации карт (чтобы восстановить случайно рассыпавшуюся колоду) или для краткого комментария, транслятором они игнорировались. Если текст оператора не вписывался в отведённое пространство (с 7-й по 72-ю колонку), в 6-ой колонке следующей карты ставился признак продолжения, и затем оператор продолжался на ней. Расположить два или более оператора в одной строке (карте) было нельзя. Когда перфокарты ушли в историю, эти достоинства превратились в серьёзные неудобства.

    Именно поэтому в стандарт Фортрана, начиная с Fortran 90, в добавление к фиксированному формату исходного текста появился свободный формат, который не регламентирует позиции строки, а также позволяет записывать более одного оператора на строку. Введение свободного формата позволило создавать код, читаемость и ясность которого не уступает коду, созданному при помощи других современных языков программирования, таких как или Java .

    Своего рода «визитной карточкой» старого Фортрана является огромное количество меток, которые использовались как в операторах безусловного перехода GOTO , так и в операторах циклов, и в операторах описания форматного ввода/вывода FORMAT. Большое количество меток и операторов GOTO часто делало программы на Фортране трудными для понимания.

    Именно этот негативный опыт стал причиной, по которой в ряде современных языков программирования (например, Java) метки и связанные с ними операторы безусловного перехода сильно видоизменены.

    Однако современный Фортран избавлен от избытка меток за счёт введения таких операторов, как DO … END DO, DO WHILE, SELECT CASE. Более того, в современных стандартах языка оставлен лишь классический оператор GOTO, применяемый во многих языках и поныне. Вычисляемый оператор GOTO, а также конструкция ENTRY - множественного входа в процедуры, были исключены.

    Также к положительным чертам современного Фортрана стоит отнести большое количество встроенных операций с массивами и гибкую поддержку массивов с необычной индексацией. Пример:

    Real ,dimension (: ,: ) :: V ... allocate (V(- 2 : 2 ,0 : 10 ) ) ! Выделить память под массив, индексы которого могут ! меняться в пределах от -2 до 2 (первый индекс) ! и от 0 до 10 - второй ... V (2 ,2 : 3 ) = V(- 1 : 0 ,1 ) ! Повернуть кусочек массива write(* ,* ) V(1 ,: ) ! Напечатать все элементы массива V, первый индекс которых равен 1. deallocate (V)

    Hello, World!

    Фиксированный формат (символами «␣» выделены пробелы в позициях строки с 1 по 6):

    ␣␣␣␣␣␣PROGRAM hello ␣␣␣␣␣␣PRINT* , "Hello, World!" ␣␣␣␣␣␣END

    Свободный формат:

    Program hello print * , "Hello, World!" end

    Замечания.

    • Оператор PROGRAM не является обязательным. Строго говоря, единственный обязательный оператор Фортран-программы - оператор END .
    • Выбор прописных или строчных букв для написания операторов программы произволен. С точки зрения современных стандартов языка Фортран, множество прописных букв и множество строчных букв при написании операторов языка совпадают.

    Взаимодействие с другими языками

    Многие системы программирования позволяют компоновать полученные в результате трансляции фортрановской программы объектные файлы с объектными файлами, полученными от компиляторов с других языков, что позволяет создавать более гибкие и многофункциональные приложения. Для языка Фортран также доступно большое количество библиотек, содержащих как подпрограммы решения классических вычислительных задач (LAPACK , IMSL, BLAS), задач организации распределённых вычислений (MPI , pvm), так и задач построения графических интерфейсов (Quickwin , FORTRAN/TK) или доступа к СУБД (Oracle).

    Фортран в СССР

    Примечания

    1. См., например: Netlib Repository at UTK and ORNL
    2. А. М. Горелик . Эволюция языка программирования Фортран (1957-2007) и перспективы его развития//Вычислительные методы и программирование, 2008, Т. 9, с. 53-71
    3. Бартеньев О.В. Современный Фортран . - М .: Диалог МИФИ, 2005. - ISBN 5-86404-113-0
    4. А. М. Горелик. объектно-ориентированное программирвание на современном Фортране
    5. С. Д. Алгазин, В. В. Кондратьев. Программирование на Visual Fortran. - М .: «Диалог МИФИ », 2008. - 448 с. - ISBN 5-8243-0759-8
    6. Горелик А. М.Новости
    7. VS FORTRAN
    8. XL Fortran for Linux
    9. Absoft Pro Fortran Compiler Suites General Overview
    10. Sun Studio - Benchmarks
    11. Очерк Александра Расторгуева о появлении Фортрана в Дубне
    12. История компьютерной графики в России

    Литература

    • Fortran. Programmer"s Reference Manual. The Fortran Automatic Coding System for the IBM 704 EDPM . - IBM Corp., 1956. - 51 с.
    • ISO/IEC 1539-2:2000 Information technology - Programming languages - Fortran - Part 2: Varying length character strings
    • Роберт У. Себеста. 2.3. Компьютер IBM 704 и язык Фортран // Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. - 5-е изд. - М .: Вильямс, 2001. - С. 63-69. - 672 с. - 5000 экз. - ISBN 5-8459-0192-8 (рус.), ISBN 0-201-75295-6 (англ.)

    Ссылки

    • gfortran - Компилятор Фортрана 95/2003/2008, часть Коллекции компиляторов GNU
    • в Прогопедии - энциклопедии языков программирования (рус.)