Вопрос

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

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

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

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

Это было полезно?

Решение

Или ответ Fortran 90, 95, 2003. Отказ Отказ ?

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

Другие советы

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

Частично при продолжении комментариев Jasonfruit на ответ S. Lott:

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

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

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

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

Thhhh-AAA-TTT это.

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

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

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

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

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

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

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

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

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

Я рекомендую книгу MetCalf, Reid и Cohen.

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

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

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

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

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

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

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

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

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

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

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

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

Совместимость с языком программирования C.

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

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

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

Легко читать

Быстро пылающий на номер

Звучит как C.

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

http://www.amazon.com/numerical-recipes-Art-scientificific-computing/dp/0521431085.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top