LINUX.ORG.RU

Fortran 2018: новый стандарт языка

 , ,


3

4

2-го декабря 2018-го года Международная Организация по Стандартизации (ISO) опубликовала ISO/IEC 1539:2018, ранее известный под названием Fortran 2015.

Новый стандарт расширяет возможности взаимодействия с программами на C и параллельного программирования:

  • Введён новый тип CFI_cdesc_t, содержащий информацию о типе элементов, ранге, размере передаваемого массива и способе выделения его памяти. Ранее на сторону программы, написанной на языке C, вместо массивов чисел можно было передать только «голые» указатели, и о соблюдении границ массивов приходилось заботиться вручную.
  • Введено понятие команды (team), позволяющее разделить выполняющуюся на кластере программу на несколько сравнительно независимых подмножеств процессов.
  • Появилась возможность обработки ошибок отдельных процессов кластера (fail image и аргумент stat= вызовов change team, end team, event post, form team, sync all, sync images, sync team).
  • Добавлены атомарные операции над переменными (atomic_add, atomic_and, atomic_or, atomic_xor, atomic_fetch_add, atomic_fetch_and, atomic_fetch_or, atomic_fetch_xor, atomic_cas).
  • Улучшена совместимость со стандартом ISO/IEC/IEEE 60559:2011 для чисел с плавающей запятой.

Следующая версия стандарта временно называется Fortran 202x.

Новые возможности Fortran 2018

Бесплатно доступный черновик стандарта

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

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от dave

Расчеты в Matlab написаны большей частью на Matlab'e. Там большая часть кода открыта. То, что закрыто, например, какая-нибудь LU-декомпозиция, написано, естественно, не понятно на чем. Может на C, может на C++, но уж точно не на фортране.

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

Что ты понимаешь под ядром? Алгоритм для решения системы ОДУ для тебя ядро или морда? А какое-нибудь QR-разложение?

Ядро там на Фортране писаное.

Откуда такие сведения?

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

Вот вот. У Фортрана нет альтернативы на самом деле вообще. С++ не подходит для численных расчетов совершенно. Как можно считать на языке, на котором даже две матрицы перемножить нельзя стандартными средствами?

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

Видал я тот научный софт на крестах, кровь из глаз моментально. 100500 разных стандартов, библиотеки времён царя гороха и прочие атрибуты пользователей c++

То же самое могу сказать про научный софт на фортране.

Всё обмазано глобальными переменными, что такое отступы в коде — никто не слышал. Ладно бы их вообще не было. Но они есть, но блокам в коде вообще не соответствуют. Просто рандомно понатыканы.

Вот уж где кровь из глаз моментально.

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

Пожалуйстай, попробуйте себя в этом деле. Свежие данные можно скачать отсюда mosdac.gov.in , причем некоторые даже бесплатно. Спутники на орбите есть, нормально функционируют.

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

Ещё убрали arifmetic if, который реализовывал условный переход по трём условиям на основе результата выражения (было в fortran 77).

А вот это они зря сделали. Фича иногда довольно полезная.

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

Scilab ещё жив?

Да, у них новые версии выходят.

Чем он лучше Octave?

На мой взгляд ничем. У Scilab'а плохая совместимость по синтаксису и по функциям с Matlab'ом. Это делает его применение затруднительным. Ещё он сам по себе довольно глючный, и более тормозной чем Octave. Octave в плане совместимости с Matlab выглядит лучше.

Аналога Simulink пока нигде нет, так что матлаб нужен.

Не всем нужен Симулинк. Сейчас как раз использую Scilab на работе для прототипирования, т.к. у нас на RHEL5 Octave собирается только очень древних версий.

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

Октаве не хватает реализации кое-каких вещей с использованием CUDA. А то уж больно тупят числодробильные операции... Некоторые вещи народ даже в обертку openmp не потрудился завернуть, в итоге на 16-ядерном процессоре унылые операции, допускающие отличное распараллеливание, выполняются в один поток!

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

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

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

На то, что потом этот код неюзабелен — всем насрать. Даже если разрабатывают в команде.

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

Пожалуйстай, попробуйте себя в этом деле.

Спасибствуйвуй. Я уже получаю эстетическое наслаждение от old school дизайна этого сайта.:)

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

Потому что для тебя всё остальное на том сайте это просто непонятные буковки.

Не удалось подколоть про вымышленный спутник — обтекай тихо.

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

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

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

Для одно- двумерных случаев подойдут eigen, armadillo и прочие на любой вкус. И да, в Фортране тоже можно писать классы.

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

Да фортран предлагает большие возможности:

do = format (1., 2., 3.)
subroutine = format ('fortran', 'sucks')
goto = format (1)
end

function format (do, continue, return)
return = format + do / continue * double
format = return
end
Слабо вот такое вот на сишке сваять ? А на крестах ? То-то же. А тут мало того, что скомпиляется без единого варнинга, да ещё и упадёт в сегфолт без единого указателя.

Сила !!!

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

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

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

Кисо, а в твоём гогне мамонта есть быстрое преобразования Ханкеля в стадарной поставке? Нет ? А для быстрого пребразования Фурье тоже штоле надо подстёгивать внешнюю либу ? А давно ли вы (фортранисты) перестали писать в начале кажной функции

C Да, да в серьезном ЯП для научных математических
C ращщётов только такой хардкор:
pi=atan(1)*4 

 
А сложно ли написать на фортране программу для вычисления цикломатической сложности программы на фортране ?
anonymous ()
Ответ на: комментарий от anonymous

https://fortran.io

https://www.polyhedron.com/fortranonweb

Если очень хочется, то можно. Есть ли плейер не знаю, скорее нет. Но если найти подходящую библиотеку работы со звуком, то почему бы и нет? Биндинги к gtk+ можно использовать.

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

А давно ли вы (фортранисты) перестали писать в начале кажной функции...

Давно, с тех пор как появились common block, а позже module.

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

grem ★★★★★ ()

А вот интересно: используют ли в научных расчетах SML? Его вроде как позицианируют тоже как язык для научных расчетов. Для работы на кластере есть CML расширение. Мне кажется, что решив перейти с фортрана на ml, то за пару лет весь легаси можно было бы переписать (язык же более высокоуровневый). Что касается быстродействия, то проблем нет, превосходит C/C++ (из вики прим. MLton). Подключаемые бакенды (я про все тот же MLton) позволять скомпилить код хоть в OpenCL, хоть напрямую в машинный код, хоть под GPU, было бы желание...

Не знаю, я хоть и учился на фортране азам, но желания его использовать что-то нет, точно также и с паскалем.

jamy ()

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

Сейчас нужно писать статьи быстро, отчётность не дремлет, иначе будешь лапу сосать и никто на тебя не станет ссылаться. Некогда по долгу компилировать и отлаживать. Качество, конечно, страдает от этого, но выхода нет. Хорошо, что Питон есть.

Vudod ★★★★★ ()