Почему fortran используется для научных вычислений? - программирование
Подтвердить что ты не робот

Почему fortran используется для научных вычислений?

Я читал, что Fortran по-прежнему широко используется для научных вычислений. Для кода, который уже сильно инвестирован в Fortran, это имеет смысл для меня.

Но есть ли причина использовать Fortran над другими современными языками для нового проекта? Существуют ли языковые дизайнерские решения в Fortran, что делает его гораздо более подходящим для научных вычислений по сравнению с более популярными языками (С++, Java, Python, Ruby и т.д.)? Например, существуют ли специфические языковые функции Fortran, которые, возможно, позволяют повысить числовую оптимизацию в компиляторах в гораздо большей степени по сравнению с другими языками, о которых я говорил?

4b9b3361

Ответ 1

Fortran, к лучшему или худшему, является единственным основным языком, специально разработанным для научных вычислительных вычислений. Обработка массивов хороша, с краткими операциями массива как на всех массивах, так и на срезах, сопоставимых с матрицей или numpy, но очень быстро. Язык тщательно разработан, чтобы сделать его очень трудным для случайного написания медленных указателей кода, которые ограничены таким образом, что это сразу же очевидно, если в качестве стандартного примера может быть наложение псевдонимов - и поэтому оптимизатор может отправиться в город на вашем код. Текущие инкарнации имеют такие вещи, как coarray fortran, и делают параллельные и встроенные в язык, позволяя распределенную память и общую память parallelism, и векторизация.

Недостатки Fortran - это, в основном, обратная сторона одного из упомянутых выше аспектов; Fortran имеет огромную долгую историю. Потенциал: тонны больших библиотек. Недостатки: тонны исторического багажа.

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

Ответ 2

Основная причина для меня - отличная нотация массива и многие другие дизайнерские решения, упрощающие запись и отладку научного кода. Тот факт, что это, как правило, лучший выбор с точки зрения производительности по соответствующим задачам (операции с массивами), не повредит:)

Честно говоря, я бы не рассматривал большинство языков, названных в качестве реальных конкурентов для Fortran. Java и Ruby намного отстают с точки зрения удобства и производительности, а С++ - слишком сложный и сложный язык, чтобы рекомендовать кому-либо чья основная работа за последние несколько лет была чем-то другим, кроме ежедневного программирования на С++. Однако Python с numpy может быть вариантом. Я лично не большой поклонник языка, но я знаю несколько людей, которые регулярно используют numpy и, похоже, очень довольны этим.

Реальная конкуренция, которую я вижу, не из этих, а из Matlab, R и подобных языков, которые предлагают аналогичное удобство в сочетании со многими стандартными библиотеками. К счастью, обычно можно запустить проект в R или Matlab и позже написать критически важные компоненты в Fortran.

Ответ 3

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

Фортран - это то, чему научили многие ученые, и в котором реализовано множество библиотек, в которых они нуждаются. Некоторые из них могут быть не компьютерными или ИТ-специалистами, а учеными-вычислителями. Их основная задача - редко вычислять, это их наука в первую очередь. В то время как большое количество программистов будет иметь тенденцию изучать новый язык программирования или структуру, когда они получат шанс (в том числе в свободное время), большинство ученых будут использовать это время для изучения новых идей в отношении своей науки.

Эксперт домена, прошедший обучение в Фортране (или любом другом языке) и окруженный людьми, находящимися в подобной ситуации, не будет иметь никакого стимула отойти от него. Это не только то, что теперь другие языки могут быть такими же хорошими, как Fortran с точки зрения производительности, они должны быть намного лучше: необходимо быть хорошей причиной, чтобы отойти от того, что у вас есть, и знать.

Это также "порочный" круг до определенной степени. Я всегда находил сравнения между Java и Fortran немного сложными, просто потому, что ряд научных приложений Java не программируется на Java-пути. Некоторые из приложений Java Grande выглядят четко, как программы Fortran, превращенные в программы на C, скопированные/вставленные/измененные в программы Java (в методе, передающем длину массива поскольку дополнительный параметр рядом с самим массивом дает ключ, если я хорошо помню). Из-за этого Java (например) не имеет большой репутации в научном сообществе, хотя его производительность становится лучше. Следствием этого является то, что между экспертами HPC и экспертами Java, например, существует небольшое совпадение. Даже у разработчиков аппаратных средств или библиотек мало спроса со стороны пользователей приводит к небольшой поддержке, которая, в свою очередь, отталкивает пользователей, которые потенциально могут быть заинтересованы в переходе на другие языки.

Обратите внимание, что это не мешает тем же (или другим) ученым использовать другие языки для других целей (например, управление рабочим процессом, управление данными, более быстрое моделирование с помощью Matlab, Numpy,...).

Ответ 4

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

Ответ 5

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