Современный язык с преимуществами FORTRAN? - программирование
Подтвердить что ты не робот

Современный язык с преимуществами FORTRAN?

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

  • Простота обучения (без объектно-ориентированных или функционально-программирующих осложнений)
  • Легко читаемый
  • Быстрое свержение при хрустах числа

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

Есть ли современный язык, столь же простой, как FORTRAN, столь же быстрый для математических приложений и менее ограниченный? Или ответ Fortran 90, 95, 2003.,

4b9b3361

Ответ 1

Или ответ Fortran 90, 95, 2003,,

Да. Fortran 95, поддерживаемый большинством компиляторов, - это язык, который вы ищете. Однако Fortran 2003 имеет некоторые основные усовершенствования (помимо ненужных с вашей точки зрения поддержки ООП), которые могут быть полезны. Поддержка компилятора для стандарта Fortran 2003.

Ответ 2

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

Частично в продолжение комментария JasonFruit от ответа С. Лотта:

Да, стандарт добавил немало функций от F90 до 2003 года. Но "проблема", если ее можно назвать такой (я не могу думать или ухаживать за более подходящим словом), заключается в том, что многие люди, которые используют Fortran не знаю, сохраните основные функции, в которых они нуждаются. Это благословение и проклятие все в одном, в некотором роде. Они никогда не узнавали об этом, никогда не читали книгу об этом - они просто подхватили ее, когда они шли. Таким образом, вы можете работать некоторое время (если вы структурируете свои программы просто так, как это делали многие века, и имеют своего рода умственную дисциплину, этот подход может продолжаться всю жизнь/всю вашу карьеру), но через какое-то время он начинает чтобы показать свои недостатки. Попробуйте, например, после некоторых обсуждений последних функций на comp.lang.fortran, чтобы проверить свои знания.

Итак, возьмите хорошую книгу (многие рекомендуют одну из трех для новичков: a) Chapman J. Stephen b) Мэн, или c) Меткалф, Рид и Коэн (известный как "Книга MRC" ), после чего многие "более неясные" черты не только становятся яснее, но и "очевидны" (как в некотором роде, это действительно лучший способ - почему я сделал это таким образом... раньше?).

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

Последнее, что в какой-то мере является причиной всех этих вопросов, в большинстве случаев - мнение людей о Фортране с акцентом на мнение! Вообще говоря (и мы можем принять этот форум как довольно хороший образец для нашего анализа) заключается в том, что это не так хорошо. Немногие это [следуйте вопросам, отмеченным fortran на этом форуме в течение месяца, и вы быстро узнаете, кто они. Кстати, судя по частоте появления вашего имени, вы быстро становитесь членом клуба:)], большинство из них либо равнодушны, а некоторые ненавидят это из-за чистого невежества (часто используется сравнение F66 с сегодняшними языками), некоторые из их собственных причин. Теперь, если мы возьмем те и сравним их с общей популяцией, простым счетом, результат обязательно выйдет плохо. Если бы вы опросили только традиционных инженеров, результаты были бы совсем другими.

Thhhh-aaa-ttt it.

О, еще одна вещь - Fortran был/был и по-прежнему остается в первую очередь нацелен на инженеров, а не на математиков. Он лучше подходит для решения больших систем, а затем вычисляет pi до десятизначного числа. Я не знаю, была ли это опечатка в вашем вопросе или преднамеренная. Для чисто математических приложений (в классическом смысле математик) я бы (был ли я частью этого поля), вероятно, выбрал, не знаю, Mathematica? Или Паскаль (не знаю, почему это всегда был Паскаль, но это кажется очень популярным среди этих парней).

Ответ 3

Я удивлен, что консенсус здесь для современного Фортрана, и я неохотно согласен.

Независимо от его недостатков, Fortran является единственным языком, который специально разработан для научного программирования. Научное программирование является более тонким (в каждой строке) и менее сложным (по структуре), чем, скажем, веб-сервером, и ему просто нужны разные инструменты. Сбор мусора, например, почти никогда не бывает полезен для решения больших PDE 2d/3d, где фиксируются ваши основные структуры данных.

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

Python и родственные языки хороши для прототипирования, а прорисовка проста, и как только у вас есть работа, вы можете написать числовые ядра в скомпилированных языках для скорости; но он снова страдает от отсутствия реальных массивов (Numpy - хороший, но не большой), и это s..l..o..w.

Кстати, не из книг Numerical Recipes. Они дерьмо, алгоритмы, которые они подают, имеют дату, а код варьируется от плохого до неправильного. Возьмите настоящий курс числовых алгоритмов - там хорошие на линии - или купите настоящую книгу числовых алгоритмов - и для любви к Богу не вводите код из книги, чтобы делать линейную алгебру или что-то еще; используйте тиллионы реальных, профессиональных библиотек качества там.

Ответ 4

Для самого прямого ответа на ваш вопрос, я думаю, что ответ kemiisto правильный, с оговорками, указанными Idigas.

Тем не менее, я нашел больше своего численного кода, который вступает в контакт с вещами, такими как FTP, web и ближе к графике. Я видел MATLAB в другом ответе, но я пишу все больше Python (с NumPy) и звоню в Fortran, когда мне нужна скорость. Я почти наверняка не буду писать целую систему (например, всю численную модель прогноза погоды) таким образом, но это позволяет мне иметь лучшее из обоих миров во многих отношениях.

Ответ 5

Или ответ Fortran 90, 95, 2003.,? Да. Для научных вычислений Fortran >= 90 устраняет ограничения FORTRAN 77. Узнайте, как использовать распределяемые массивы для динамически значимых массивов. Узнайте, как использовать модули для организации ваших процедур и переменных - и легко обеспечить автоматическую проверку согласованности между фактическими и фиктивными аргументами. Начиная с FORTRAN 77, вы можете постепенно изучать Fortran 90/95/2003, используя те функции, которые вам кажутся вам полезными. Вам не нужно изучать функции OO и игнорировать эту часть языка, пока, возможно, когда-нибудь она не предложит вам полезную информацию.

Я рекомендую книгу Меткалфа, Рида и Коэна.

Ответ 6

Вы можете смотреть MATLAB. Многие инженеры-магистры учатся этому, поэтому я думаю, что это легко для непрограммистов.

Если вы хотите получить хардкор, посмотрите J.

Ответ 7

Я думаю, что Fortran 95 должен быть вашим выбором, он выглядит более современным и значительно расширяет Fortran 77. Стандарт Fortran 2003 не поддерживается большинством компиляторов. Большим преимуществом Fortran является то, что для каждой математической задачи существует оптимизированная подпрограмма (например, поиск корней, умножение матриц, проблемы с собственными значениями и т.д.). Другие люди, упомянутые в устаревших библиотеках и лапаке, - всего лишь один очень веский пример. Основным недостатком Fortran является то, что никто не использует его в реальном мире.

Лучшая книга - это мое мнение "Fortran 90/95 для ученых и инженеров".

Конечно, все остальные предложения действительны, но Matlab не является бесплатным, в то время как Fortran.

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

C, конечно, также является бесплатным вариантом и имеет много (постоянно обновляемых) доступных научных библиотек. Однако, когда дело доходит до читаемости, он не может победить Fortran. Fortran хорошо настроен для работы с векторами и массивами.

С++ является надмножеством C, поэтому он определенно также является возможным выбором. Однако это язык, который может быть сложным для проблем, на которые вы смотрите. Количество научных библиотек С++ довольно ограничено. Есть вокруг, но они не могут бить версии Fortran (или просто обертывают их). Это, вероятно, очень хороший вариант для очень больших проектов, но некоторые очень большие программы, которые работают на самых быстрых компьютерах мира, написаны в Fortran. С++, безусловно, стоит изучать, поскольку он используется для широкого круга приложений реального мира.

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

Ответ 8

Если вы действительно в восторге от использования Fortran, вы можете использовать Fortran для Microsoft.NET. Идея этого проекта заключается в том, что он позволяет вам использовать язык Fortran, используя при этом использование управляемой среды кода с помощью Common Language Runtime (CLR).

Ответ 9

@S.Lott: не могу представить пользователей Fortran, таких как ученые, которые должны переключиться и сбросить все свои работы в Fortran.....: S OP ищет информацию о том, что нового...

К OP: Вы читали на Wikipedia, в котором подробно описаны изменения, внесенные в Fortran, для версии 2003 года, позволяют взаимодействовать с C, поэтому, возможно, S.Lott есть точка, пожалуй, по-разному, мягко переносить некоторые вещи или писать оболочку на C для вызова модулей Fortran? Я приведу цитату из этой страницы Википедии...

Взаимодействие с языком программирования C.

Ответ 10

Недавно я работал с большим количеством Matlab, и сегодня я вижу, что он приносит пользу. Да, это медленно, потому что это интерпретируемый язык, но алгоритмы матрицы быстры. И мне это нравится именно из-за этого поведения. Медленность циклов for и производительность матричных операций побуждают вас думать более математически, а не придерживаться ориентированного на петлю программирования. Но я могу согласиться с тем, что Matlab можно уволить, потому что он не открыт.

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

Ответ 11

Простота обучения (нет объектно-ориентированных или функционально-программирующих осложнений)

Легко читаемый

Быстрое свержение при хрустах числа

Звучит как C.

Купите числовые рецепты в C. Это в значительной степени охватывает все базы в понятном и понятном стиле.

http://www.amazon.com/Numerical-Recipes-Art-Scientific-Computing/dp/0521431085

Ответ 12

Я предполагаю, что вы рассматриваете небольшие специализированные программы, написанные для решения конкретных проблем. В этом случае, если сложность OO действительно беспокоила вас, я бы просто написал приложение С# или Java и не использовал OO. В наши дни Visual Basic должен быть довольно проворным.

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