Язык программирования Fortran - описание, основные команды и функции
Язык программирования Fortran используется в основном для научных вычислений. Изобретенный в 1954 году, это старейший язык программирования высокого уровня, за которым последовал Lisp (1958), Algol (1958) и COBOL (1959). Число научных библиотек, написанных на "Фортране", и создание специальных переводчиков-компиляторов позволяют использовать язык и сегодня. Кроме того, были созданы множественные калькуляторы для векторизации, сопроцессоров, параллелизма, которые вкрапляют этот язык для использования в промышленном производстве современного мира.
Исторические вехи Fortran
Джон Бэкус, радиотехник 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 существуют на разных программных устройствах.
Различие языковых версий
Этапы создания языковой платформы:
- В 1954-1957 годах первый компилятор был разработан с нуля. В те времена не было «языков высокого уровня» (= HLL), большинство операционных систем были простыми, а память была небольшой, что-то около 16 Kb. Первый компилятор работал на IBM 704. Этот язык HLL был намного более эффективным, чем программирование на ассемблере, и очень популярным в свое время.
- В 1958 году издан ФОРТРАН II. В том же году был разработан FORTRAN III, но так и не выпущен в широкое производство.
- В 1961 году был создан FORTRAN IV. Он содержал улучшения, такие как реализация операторов COMMON и EQUIVALENCE.
- В 1962 году комитет ASA начал разработку стандарта для объектно ориентированного языка программирования Fortran. Это позволило продавцу использовать его в каждом новом компьютере. И этот факт сделал его еще более популярным HLL, язык стал доступен в системах Apple и TRS80.
- В 1967 году был выпущен FORTRAN 66, первый в мире стандарт HLL. Публикация стандарта означала, что язык стал более широко реализованным, чем любой другой. К середине 1970-х годов практически каждый компьютер, мини или мэйнфрейм был снабжен стандартным языком FORTRAN 66. Язык использовал утверждение if, goto-statement и spagethi-программы. Такое структурированное программирование стало популярным в 60-70-х годах.
- "Фортран" существовал на перфокартах в частности, с системой 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:
write (*, *);
'Радиус r:'read (*, *) r;
area = 3.14159 * r * r;
write (*, *) 'Area =';
stop;
end.
Линии, начинающиеся с «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.
Восклицательный знак может появляться в любом месте в строке. Иногда заявление не вписывается в одну строку, тогда можно разбить оператор на две или более строк и использовать знак продолжения в позиции.
Пример:
- C23456789 - это демонстрирует положение столбца.
- «C» - следующий оператор проходит две области физических линий.
- 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). Правила для оператора параметров:
- «Переменная», определенная в инструкции параметра, не является переменной, а константой, значение которой никогда не может измениться.
- «Переменная» может отображать не более одного оператора параметра.
- Параметр оператор должен прийти до первого исполняемого оператора
Некоторые веские причины использовать параметр - помогает уменьшить количество опечаток, легко изменить константу, которая появляется много раз в программе.
Логические выражения
Логические выражения могут иметь только значение .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). Первое число обозначает действительную часть, а второе - мнимую часть.
Пятый тип - это логические константы. Они могут иметь только одно из двух значений:
.TRUE.
.FALSE.
Обращают внимание, что точки, содержащие буквы, обязательны к написанию.
Последний тип - это символьные константы. Они чаще всего используются в виде массива символов, называемых строкой. Они состоят из произвольной последовательности символов, заключенных в апострофы (одинарные кавычки):
'ABC'
'Anything goes!'
'It is a nice day'
Строковые и символьные константы чувствительны к регистру. Проблема возникает, если нужно иметь реальный апостроф в самой строке. В этом случае нужно удвоить апостроф: 'It''s a nice day', что означает 'Какой чудесный день'
Условные утверждения «if»
Важными компонентами любого языка программирования являются условные утверждения. Наиболее распространенным из таких утверждений в 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
Можно использовать любую рабочую станцию 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, многие программисты и ученые видят за ним будущее. Кроме того, в мире достаточно производителей, которые живут за счет разработки современных компиляторов и неплохо зарабатывают на этом процессе.