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 ()

Ответ на: комментарий от Psilocybe

Как говорил один препод, Fortran IV - язык для настоящих мужчин!

От олдфага и не такую ерунду можно услышать.

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

Назначение у них разное. Руками можно копать землю, но лопатой - удобнее. Лопатой можно погладить любимую женщину по спине, но руками разумнее. И безопаснее.)))

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

Бредоносцы встречаются во всех возрастных группах. Подожди пока тик-токеры подрастут - все кровавыми слезами восплачем.

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

Это сказано с юмором, который понимают те, кто на нем прогал.

Что называется, выросло поколение нам на голову.

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

Что называется, выросло поколение нам на голову.

Это, да.
Они забывают о том, что года быстро бегут и к ним их бумеранг

ВЕРНЕТСЯ ОБЯЗАТЕЛЬНО ...

АЛГОЛ-68, Фортран - IV, PL-1, РПГ, Pascal, Мнемокод, … JavaScript, PHP, Perl, …, … не обошли меня стороной.
Нормально к этим языкам отношусь.
Не использую их ныне потому, что 99% времени трачу лишь на разработку системного API /C/C++/ …

Пост о том, что молодежь ныне все считает СТАРЫМ.
ИМХО

НУБОВСКИЕ СУЖДЕНИЯ
anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()

К сожалению, только к началу 1990-х, с большой задержкой

Это же хорошо.

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

Не каждую свою бесценную мысль нужно вываливать в окружающую среду.

К сожалению это так …
Но как им объяснить, что словесный понос … /ну вы поняли/

Молодые эшо ...

PS: ИМХО для разработчика понятия «старый» не приемлемо.
Он берет лучшее из уже кем-то созданного и пытается усовершенствовать /а иногда и технологию новую создать/ …

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

При этом, разумеется, вменяемый программист не станет использовать такие расширения языка, которые мало кем поддерживаются

No true Scotsman…

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

ИМХО для разработчика понятия «старый» не приемлемо.

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

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

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

Это у вас так, а у меня и от Алгол-68 и … не забывается все хорошее …
Новое?
Да технологии создание новых компиляторов такие же как и 65 лет назад.
Именно об этом и был пост …

PS: Появитсяm что-то новое /в хорошем смысле/ - БУДЕМ ИСПОЛЬЗОВАТЬ!

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

стогнация и дегродация

похоже, что у тебя уже :)

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

Хороший у вас был препод, более менее адекватный. А вот я знаю персонажа который математик очень неплохой, даже туповатым студням основы вбивает, но вот из языков знает матлаб и питон (со словарем).

anonymous
()
Ответ на: комментарий от anonymous
  1. Чтобы сделать студенческую лабу «бохатый API» MatLab может быть избыточен.
  2. На Fortran тоже имеется достаточно много расчетных библиотек, причем некоторые из них являются очень значимыми в своих областях так, что и MatLab их использует и Python и R.
  3. Matlab стоит денех, а gfortran или flang - бесплатны.
  4. Программа на Matlab раз в 5 медленнее программы на Fortran
  5. Кому-то нравится делать все расчетные модули своими руками.
anonymous
()
Ответ на: комментарий от anonymous

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

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

Проглядел сначала 4 пункт. Но тем не менее - ответ на второй.

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

РПГ – программогенератор.

Генератор отчетов /на макро ассемблере/ …

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

На фортране ппц много как написано по двум простым причинам:

  1. Крайняя невыразительность и убогость языка (напр. напейсали разложение Холецкого - раз, потом ещё раз для двойной точности, просто копипастой - два). Вменяемого решения нет по сей день, даже в последнем стандарте.
  2. Повсеместное велосипедостроение (напр. сортировка - используется часто, в стандартной библиотеке нет, может занимать существенную часть исходного кода, алгоритм неуниверсален, т. е. сортирует только массив одиночной точности). Константы Pi (да и других тоже) до сих пор нет - ну реально же язык, подходящий только для вычислений.
anonymous
()
Ответ на: комментарий от anonymous
  1. Вменяемого решения

Generic functions/subroutines. Доступно начиная с Fortran 90. Более чем вменяемое решение, для тех, кто о нём хотя бы знает.

  1. Сортировка… используется часто

В какого типа задачах часто используется сортировка?

Константы Pi (да и других тоже) до сих пор нет

Рассказать как вычисляется pi и задаётся как параметр?

Многие «константы» определяются экспериментально и все их задавать смысла нет в стандартной библиотеке. Остальных не так много, хотя и не помешали бы.

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

Generic functions/subroutines. Доступно начиная с Fortran 90. Более чем вменяемое решение, для тех, кто о нём хотя бы знает.

Более всего хотелось бы, чтобы об этом знали те, кто до сих пор кодит на сабже. А по массе доступных открытых кодов этого не видно. Ну и потом, «ппц скоко написано» - это про ф77 и более ранние, а там вовсе трэш, угар и содомия.

Ну и, кстати, не покажешь, как будет тогда выглядеть, например, saxpy в обобщенном виде?

В какого типа задачах часто используется сортировка?

Лисапедную сортировку двухмерного массива по значению в заданном индексе тут как-то выкатывал один из адептов. Был слит в сортирную яму пятистрочным кодом на языке, от которого припекает у всех ниасиляторов (а их тут большинство).

Рассказать как вычисляется pi и задаётся как параметр?

«Язык для научных и инженерных вычислений» разменял вторую полсотню лет, в число, которое применяется чуть ли не в половине задач надо каждый раз либо вычислять, либо задавать. Даже в заедушном поцкале было (и есть) Pi, а тут не осилили прикрутить кнопочку, которая есть в любом калькуляторе.

Ссылку на тему про двухмерную сортировку дам попозже.

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

saxpy в обобщенном виде?

Не покажу. Скорее всего тебя интересуют шаблоны, а generic их не реализует.

Лисапедную сортировку

Так в каком типе задач она может потребоваться?

Pi

Ну хорошо же, что оно где-то есть. Оно всё равно будет задано в виде выражения для разных типов.

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

Так в каком типе задач она может потребоваться?

Спроси у слонёнка, который её накатал. А так, ещё - для вычисления медианы (да, профессура не знает про quick select с алгоритмической сложностью O(N)).

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

saxpy в обобщенном виде?

Не покажу. Скорее всего тебя интересуют шаблоны, а generic их не реализует.

Ч.Т.Д.

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

y = alpha * x + y

Вот это что ли? А зачем что-то писать то?

Оно так и будет выглядеть. Нечего тут обобщать.

grem ★★★★★
() автор топика

Да причём тут фортран?? Тут уже Жабу давно пора так же хоронить!

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

Молодец. Только не все такие. Более того, - большинство предпочитает лисапедизм.

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

Обобщать - чтоб не создавать по своей функции для каждого типа - одну для real, ещё одну для double, ещё одну для complex, еще одну для complex*16, ещё одну для ещё какого-нить типа. Не все функции такие простые как saxpy.

И да, все-таки:


! в фортране с пробелами традиционно напряжёнка:

y(i)=alpha*x(i)+y(i)

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

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

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

Индексы писать не нужно. Или ты хочешь это зачем-то в цикл запихнуть? Зачем?

Пробелы тут причём?

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

Когда идиоту не к чему придраться - он начинает придираться к орфографии. Когда идиот еще и полуграмотный троляка, он вспоминает о пробелах в фортране.

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

А что с пробелами то? Требую пряснительную бригаду.

Хочешь - вставляй, не хочешь - не вставляй.

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

ладно, на индексах сэкономили. Или ты так предлагаешь прям в виде выражения всё пихать в место вызова функции / процедуры ? Некоторые (и даже большинство из них) весьма тяжелы, чтобы так делать.

Ну а в общем, резюме:

  1. Да в фортране надо постоянно копипастить, потому что шаблонов нет, даже в современном стандарте (это вообще-то был один из примеров убогости). (обобщённый saxpy не покажу, потому что его невозможно написать).
  2. Лисапедизм тоже процветает по сей день. В старом фортране всё ещё хуже, потому его и так много.
anonymous
()
Ответ на: комментарий от grem

Требуй у тех, кто на пробелах экономит. Это большая часть т.н. «серьёзных научных и математических программ».

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

И действительно, зачем это. Всю жизнь люди без пробелов пишут, а тут чо-то вспомнили.

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