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 ()
Ответ на: комментарий от DELIRIUM

Matlab

Ну напиши мне модель глобальной циркуляции на матлабе. К пенсии как раз один шаг вперёд посчитает.

Julia

Julia на многих задачах может заменить фортран, но ей всё ещё нужно над производительностью поработать. На больших задачах 20% разницы может быть критично.

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

Не на тех людях проверяли . Большинство программистов не думают, поэтому любителя думать это занятие не должно соблазнять.

Математики часто пользуются Python вместо предназначенных специально для математики Fortran, R, Julia. Python - простой язык общего назначения. Значит, подойдёт тем, кто не увлекается программированием, а должен решать свои математические задачки.

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

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

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

Scilab ещё жив? Чем он лучше Octave? Julia в перспективе лучше обоих, не спорю. Аналога Simulink пока нигде нет, так что матлаб нужен. Тем более, у института академическая лицензия на него.

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

Я с кластером пока не работал, те задачи, которые мне ставились, решались на обычном компе за разумное время

Однако мнение умеешь. Ок, чо.

ps:// Добавил в комментарий с Джоулем и индукцией, золотая профессура России!

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

А что не так? Я продемонстрировал Julia на обычных задачах, всем понравилось, теперь научник хочет её потестить на кластере, если будет удобно и без косяков, то будут внедрять, наверно и меня привлекут.

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

Я продемонстрировал Julia на обычных задачах

На обычных хелоуворлдах. На них разница между фортраном, матлабом, julia, Java, R, питоном и прочими scilab'ами весьма минимальная.

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

Ну не скажи, на C++ банальный метод Рунге-Кутты для нелинейного, нестандартного уравнения в частных производных занимает охуиллиард строк, на фортране ещё больше, на Julia - строк 20. А производительность примерно такая же.

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

Ну не скажи, на C++ банальный метод Рунге-Кутты для нелинейного, нестандартного уравнения в частных производных занимает охуиллиард строк, на фортране ещё больше, на Julia - строк 20. А производительность примерно такая же.

На фотране есть давно написанные библиотеки для очень большого количества разных случаев. Например, https://www.nag.co.uk/content/nag-library Причем эти библиотеки имеют длительную историю тестирования и вылавливания разных неочевидных случаев.

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

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

Я через пару недель как раз буду читать лекцию про лицензии в научном ПО и статьях.

Должно быть по совести MIT или BSD и очень веские причины использовать что-то более проприетарное. Это если наука финансируется из налогов.

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

Ну не скажи, на C++ банальный метод Рунге-Кутты для нелинейного, нестандартного уравнения в частных производных занимает охуиллиард строк, на фортране ещё больше

Это какой-то у тебя не правильный фортран. 66й что-ли? Из бункера не пробовал вылезти?

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

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

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

П.С. Интел компиллятор - БЕСПЛАТНЫЙ.

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

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

Да и не вижу, чего от него так корежит многих?

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

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

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

Он только вышел ) Некоторые фичи поддерживает. Флажок std=2018 появился в gcc8, но некоторые вещи были добавлены ещё раньше

https://gcc.gnu.org/wiki/Fortran2018Status

Ещё в новости не упомянуто, но ряд вещей в стандарте помечено к удалению, например, циклы forall. Вместо них рекомендуют использовать do concurrent.

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

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

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

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

Да, те кто учил Фортран до стандарта 90 всё ещё не перешли на более новые. Это ещё полбеды. Хуже, что они активно использовали и используют нестандартные расширения.


Хорошо, что не все такие - в прикреплённой в dev теме есть ссылки на курсы лекций по современному Фортрану.

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

Ну те, кому нужно разрабатывать алгоритмы для современного линала используют фортран. Кому тупо использовать эти алгоритмы - используют фронтенд в виде python, julia, php.

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

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

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

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

В универе доп. задание давали реализовать алгоритм решения уравнения Силвестра на любом языке, статья с алгоритмом какая то сложная была, а пример кода был говнокодом на фортран 66. Я ниосилил даже перепаст на C.

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

Развитие фортранчика тормозит борьба за обратную совместимость.

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

потому что некоторые дебилы так и продолжают писать новый код на f77

Да, это плохо. Фортран до f90 - это жуть и мрак. Читать не возможно, писать опасно. Нормальным языком фортран стал именно после f90.

Ещё и студентов наверняка заставляют именно 77й изучать.

Я конечно не знаю за весь мир, но сам такого не видел. Учат на > f90, если вообще учат.

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

А твой numpy на чём основан?

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

ZERG ★★★★ ()