LINUX.ORG.RU

Fortran: 65 лет с момента выхода первого справочного руководства

 , ,


2

1

В этот день 65 лет назад, 15 октября 1956 года, появилось первое справочное руководство для программирования на языке FORTRAN: «The Fortran Automatic Coding System for the IBM 704».

За 3 года до этого, сотрудник компании IBM Джон Бэкус предложил создать язык программирования, позволяющий записывать команды в более удобной для пользователя форме. В течение 1954-1957 годов Джон Бэкус вместе со своей группой разработали язык, считающийся первым широко используемым языком программирования высокого уровня, и в 1957 году выпустили первый оптимизирующий компилятор для него.

Так как Fortran быстро стал популярным для написания программ для интенсивных научных расчётов, это с самого начала сподвигло разработчиков конкурирующих платформ создавать компиляторы, способные генерировать быстрый и эффективный код.

Одним из важнейших событий в процессе развития языка стало принятие ANSI решения создать рабочую группу по стандартизации языка, что привело к появлению в 1966 году его первого стандарта FORTRAN 66. Некоторые созданные разработчиками компиляторов расширения к нему вошли в следующий стандарт FORTRAN 77 (в 1978 году), устранив ряд недостатков предыдущего стандарта.

К сожалению, только к началу 1990-х, с большой задержкой, был выпущен следующий стандарт Fortran 90, получивший множество улучшений, учитывающих изменения в используемых методах программирования по сравнению с теми, что были актуальны для 1978 года. Небольшим улучшением этого стандарта стал Fortran 95 (1997), включивший в себя возможности расширения High Performance Fortran для встроенного распараллеливания вычислений.

Последующие стандарты Fortran 2003 (2004), Fortran 2008 (2010), Fortran 2018 (2018) прежде всего добавляли и улучшали поддержку ООП, взаимодействие с языком C, усовершенствование динамического размещения данных в памяти, встроенную поддержку средствами языка параллельных вычислений (Co-Arrays Fortran). Стандарт Fortran 202x находится в разработке и дополнит стандарт Fortran 2018 несколькими расширениями.

На сегодняшний день многие вендоры предлагают свои компиляторы, дополнительные инструменты и математические библиотеки для Fortran:

  • GNU Fortran Compiler (gfortran из набора GCC);

  • LLVM Flang;

  • Intel;

  • NAG;

  • NVIDIA (NVIDIA HPC SDK);

  • HPE / Cray (Cray Compiling Environment (CCE))

  • IBM (IBM XL Fortran);

  • AMD (AMD Optimizing C/C++ Compiler (AOCC) - LLVM based);

  • ARM (Linux user-space Fortran compiler - LLVM based);

  • Absoft;

  • Oracle / Sun;

  • Lahey / Fujitsu;

  • Silverfrost FTN95;

  • NEC (NEC SX-Aurora TSUBASA Compilers, Libraries and Tools).

Популярность языка и его простота использования для научных расчётов позволила Fortran прочно занять свою нишу среди языков, использующихся в области HPC (High Performance Computing) для решения задач астрономии, метеорологии, вычислительной химии, вычислительной гидродинамики и ряда других областей.

(На основе материалов статей https://www.wikipedia.org и других источников)

>>> Подробности

★★★★★

Проверено: Zhbert ()

Вот это я понимаю новость! Фортран еще переживет всякие поделия для хипстоты типа питона!

Reset ★★★★★ ()

Слава Fortran’у, «великому и ужасному»! :)

quickquest ★★★★★ ()

Отличная для меня новость! Фортран сила. Это не всякие новомодные языки. С него мы начинали. И в своей нише - ему равных нет.

anonymous ()
Ответ на: комментарий от Reset

Он и хипстоту переживет. В большинстве своем. Не вижу причин для отказа от фортрана - свою функцию вполне выполняет.

anonymous ()
Ответ на: комментарий от Reset

Фортран еще переживет всякие поделия для хипстоты типа питона!

Да, на питоне трудно будет написать эмуляцию ядерного взрыва.

anonymous ()

кто-то опять украл машину времени...

А по теме: long live Fortran!.. (я на нём иногда программирую... впрочем, без особого удовольствия, но он хотя бы лучше, чем С...)

Sahas ★★★★★ ()
Ответ на: комментарий от vM

Ну, во первых, не IF (BIGA = A(I)) , a IF (BIGA - A(I)), a, во-вторых, все равно не соберется современным компилятором. Арифметический if и equivalence остались только в 77 стандарте. :)

gns ★★★★★ ()
Ответ на: комментарий от beck

Вполне себе торт, кстати. Много чего полезного туда добавили, распараллеливание на уровне компилятора, например.

gns ★★★★★ ()

Ура, товарищи!

gns ★★★★★ ()
Ответ на: комментарий от gns

Ага, жаль только, что те же coarrays в gfortran для распараллеливания требуют внешнюю библиотеку opencoarrays (использует mpi как транспорт, но код заметно короче получается).

Зато do concurrent (как и устаревший forall) так работает.

grem ★★★★★ ()
Ответ на: комментарий от Reset

Одно другому вообще-то не мешает. Считаем на фортране, строим графики на питоне.

yvv ★★☆ ()
Ответ на: комментарий от gns

Ну да, «не соберется»...

C PROGRAM FOR FINDING THE LARGEST VALUE
C X ATTAINED BY A SET OF NUMBERS
      DIMENSION A(1000)
      BIGA=A(1)
      DO 20 I=2,N
      IF(BIGA - A(I)) 10, 20, 20
10    BIGA=A(I)
20    CONTINUE
      END

В таком виде прекрасно собирается (gfortran v. 11.1.0, ifort v.14).

vence ()
Ответ на: комментарий от anonymous

Да, на питоне трудно будет написать эмуляцию ядерного взрыва.

А на фортране перевести результаты этой симуляции в удобоваримый для вэб странички вид.

yvv ★★☆ ()
Ответ на: комментарий от vence

gleb@cheetah:~/tmp$ ifort -e90 test.for test.for(5): error #6031: The Arithmetic IF statement is an obsolescent feature in Fortran 90. Use the IF statement or the IF construct IF (BIGA - A(I)) 10, 20, 20 ^ compilation aborted for test.for (code 1)

gns ★★★★★ ()
Ответ на: комментарий от gns

Арифметический if и equivalence остались только в 77 стандарте. :) Да как так-то?! О, а невозбранно написать

DO 20 I = 1.10

вместо

DO 20 I = 1,10

ещё осталась?

anonymous ()
Ответ на: комментарий от gns

А зачем -e90? Понятно же, что в fortrane 90 арифметичекого if нет

vence ()
Ответ на: комментарий от hummer

Такого понятия, как фортранер, нет. Есть дядьки учоные в потёртых свитерах с пузырями на локтях. Они не фортранеры. Они физики, математики, химики и т.д. Они используют фортран.

yvv ★★☆ ()
Ответ на: комментарий от yvv

Как надо, я знаю. Это был ответ на утверждение gns. На самом деле даже весьма древний код времен фортрана IV в подавляющем большинстве случаев собирается современными компиляторами.

vence ()

Извините - Markdown в виде списка занимает полэкрана со своими пустыми строками между элементами списка - либо ЛОР что-то сделает, либо нахер такие новости - вспоминаем LOR-code…

drfaust ★★★★★ ()
Ответ на: комментарий от anonymous

Не вижу причин для отказа от фортрана

Так никто и не собирается отказываться. Хорошая прикладная штука для инженеров. Отлаженные за десятилетия библиотеки.

Он и хипстоту переживет.

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

Для почти всего есть ниши, только ширина ниш разная.

IRASoldier ()
Ответ на: комментарий от vence

В этом его проблема. Если бы фортрановский комитет отказались от поддержки древнего кода, фортранчик может и побыстрее развивался бы.

yvv ★★☆ ()
Ответ на: комментарий от anonymous

Да, на питоне трудно будет написать эмуляцию ядерного взрыва.

про это тебе по секрету рассказал голос из унитаза? или ты сам придумал?

anonymous ()
Ответ на: комментарий от hummer

Это штучный товар, трудно сказать. Мне за смесь С/С++/Perl/Fortran/Corba неплохо платили :)

gns ★★★★★ ()
Ответ на: комментарий от yvv

Да, на питоне трудно будет написать эмуляцию ядерного взрыва. А на фортране перевести результаты этой симуляции в удобоваримый для вэб странички вид.

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

anonymous ()

Fortran: 65 лет с момента выхода первого справочного руководства

Ожидаем

Fortran: 465 лет с момента выхода первого справочного руководства
anonymous ()
Ответ на: комментарий от vence

Да собирается, собирается. Только если захочешь что бы и тебе MPI с MKL, и что бы арифметический if... Вот тут проблемы и начнутся.

gns ★★★★★ ()
Ответ на: комментарий от anonymous

Да, на питоне трудно будет написать эмуляцию ядерного взрыва. про это тебе по секрету рассказал голос из унитаза? или ты сам придумал?

Ну вот стали подтягиваться люди, говорящие с унитазами и искренне считающие что так делают и все остальные. Передавай привет твоему унитазному Хотабычу.

anonymous ()
Ответ на: комментарий от anonymous

Ой, илитка подтянулась. На результаты вычислений вы видимо в текстовом редакторе смотрите, да?

yvv ★★☆ ()
Ответ на: комментарий от grem

Дык сейчас же весь интелловский oneAPI, как это теперь называется, в свободном репозитории лежит. Добавляешь PPA или как там оно для rpm называется, и типа apt install :)

gns ★★★★★ ()

Fortran: 65 лет с момента выхода первого справочного руководства

А я его наизусть знаю!

anonymous ()
Ответ на: комментарий от gns

Я вчера для opencoarrays написал ebuild для gentoo :P

В debian и ubuntu он и так есть.

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1 )

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

Более известный как Fortran IV. (Да, ещё раньше были II и IV.)

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1 )
Ответ на: комментарий от vence

Я за то, чтобы наконец уже взять и переписать. Netlib уже практически весь давно переписан. Где старый код ещё есть?

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

yvv ★★☆ ()
Ответ на: комментарий от vence

Нет конечно, переписывать сейчас фортрановскую программу многолетней давности так это себе дороже. Хотя, я бы поостерегся сравнивать вещественные числа с нулем на равенство :) Ну и приписать с старому коду IMPLICIT NONE и посмотреть, что будет. А то может быть как в старой байке:

DO 10 K = 1.10
.....
10 CONTINUE

gns ★★★★★ ()
Ответ на: комментарий от hobbit

Более известный как Fortran IV.

На СМ-1 и СМ-2М юзал еще и Алгол-68.
Потом правда крутой разработчик, разработал Pascal

Не гуже борландского и лет на десять раньше их ...
anonymous ()
Ответ на: комментарий от vence

Да была у нас нейронная сеть на фортране. Код в основном занимался вычислением скалярного произведения одномерных векторов (примерно по миллиону координат) REAL*8. Расчет шел минут 10 изначально. Вот, типа, тупо скалярно перемножить два массива длиной в миллион и так итераций тоже за 100 тысяч пока сойдется. После прикручивания MKL c SIMD и распараллеливания компилятором на четыре потока (ну уж сколько ядер было), вместо 10 минут счет стал занимать минуты три. Ну еще малька пооптимизировали, стало совсем приемлемо.

gns ★★★★★ ()
Ответ на: комментарий от vM

IBM

Ну а как же без нее …
В Центпрограмм Систем съездил за исходниками ОС.
Кстати СВМ /на ЕС ЭМВ Система Виртуальных Машин/, то как близнец брат MSDOS.
Можно было аж 1MB памяти взять.
Это при том-то, что сама ЕС ЭВМ 1042 имела 512KB! Для тех времен это была

ФАНТАСТИКА

Били от туда по началу многое использовал.
Да и OS-2 с тех же краев.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.