Современный язык с преимуществами Фортрана? - PullRequest
12 голосов
/ 23 августа 2010

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

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

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

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

Ответы [ 12 ]

17 голосов
/ 23 августа 2010

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

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

10 голосов
/ 01 октября 2010

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

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

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

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

Между прочим - не никогда книгами Числовых Рецептов.Это дерьмо, алгоритмы, которые они используют, устарели, а код варьируется от плохого до неправильного.Пройдите настоящий курс по числовым алгоритмам - есть хорошие в сети - или купите настоящую книгу по числовым алгоритмам - и, ради бога, не вводите код из книги для линейной алгебры или чего-то еще;используйте миллионы настоящих профессиональных библиотек качества.

10 голосов
/ 24 августа 2010

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

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

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

Итак, возьмите хорошую книгу (многие рекомендуют одну из трех для начинающих; а) Чэпмена Дж. Стивена б) Мэн или в) Меткалфа, Рейда и Коэна (известный как «Книга MRC») - после чего Многие «более неясные» функции не только становятся более ясными, но и «очевидными» (как в некотором смысле; это действительно лучший способ - почему я так поступил ... раньше? ) .

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

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

Thhhh-а-а-а-а-а-а-а-а-а *

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

6 голосов
/ 24 августа 2010

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

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

5 голосов
/ 24 августа 2010

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

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

4 голосов
/ 23 августа 2010

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

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

2 голосов
/ 24 августа 2010

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

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

Конечно, все другие предложения верны, но matlab не бесплатен, в то время как Fortran.

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

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

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

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

1 голос
/ 23 августа 2010

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

0 голосов
/ 15 февраля 2014

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

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

0 голосов
/ 23 августа 2010

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

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

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

Похоже на C.

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

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

...