Изучение Фортрана

9

Мне было интересно, как лучше всего научиться программировать на Фортране?

Я искал книги, примеры, которые показались мне подходящими, были «Фортран 95/2003 Объяснено» и «Фортран для ученых и инженеров» .

Я не знаю, что вы, ребята, думаете об этом?

Еще одна вещь, которая меня интересует, это какой компилятор мне следует использовать? Я работаю на компьютере с Windows 7 (64-разрядная версия).

Я надеюсь, что вы, ребята, можете помочь мне в этом!

Итак, для моего опыта в программировании:

  1. Matlab и maple были любезны с моих первых знакомств в мире программирования. Matlab - это программа, в которой я на самом деле довольно хорош, я научился работать с циклами и как их комбинировать для создания более эффективных программ. Maple больше в базовой фазе (я знаю, как искать решение простых интегралов и т. Д.).
  2. Год спустя мы познакомились с C ++ в Visual Basic. На самом деле профессор быстро подошел к этому вопросу, через 2 месяца мы уже обсуждали указатели и наследование. Я могу писать простые программы на этом языке, только работа с классами - это то, что остается проблемой, но я считаю, что это просто вопрос практики.
  3. И через год мне нужно было выучить Mathematica 8, и сейчас я тоже очень хорошо учусь.

Так что у меня есть немного опыта программирования, но я не скажу, что это невероятное количество!

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

PS: в чем разница между Fortran95 и Fortran 2003?

Ник
источник
3
Можете ли вы быть более точным в отношении того, откуда вы пришли и куда хотите пойти? Вы уже знаете, как программировать, то есть какие другие языки программирования вы знаете? И что вы хотите, чтобы иметь возможность делать в Фортране?
Педро
Да, может быть, я должен был упомянуть об этом в своем вопросе, позвольте мне редактировать :) @Pedro
Ник
1
Я знаю, что это не отвечает на этот вопрос, но я настоятельно рекомендую вам использовать Python поверх Fortran, если у вас нет особых требований к производительности в качестве новичка. У вас будет меньше головной боли, связанной с реальной математикой и теорией, поскольку Python будет меньше кричать на вас. У этого также есть невероятные пакеты, которые делают много числовой математики очень простой (поиск SciPy, Numpy, Matplotlib). Эти инструменты делают Python очень похожим на MATLAB в его использовании, но у вас также есть целый язык для создания хорошего программного обеспечения, такого как ewll. Не говоря уже о том, что это открытый исходный код.
пропал
1
Fortran 95 также похож на Matlab и является стандартом ISO. Многие люди, использующие Python, пишут вычислительно тяжелые ядра на C / C ++ (даже на Fortran), что означает, что теперь вы должны изучать не один, а два языка. Один для производительности, а другой для удобства / простоты использования.
Стали

Ответы:

4

Я собираюсь повторить рекомендацию Стали о книге Чепмена. Я узнал из книги Фортрана 90 Чепмена, и это было очень полезно. Он научит вас языку фортран. Он не научит вас хорошим рабочим процессам для программирования, и для этого вы должны искать в другом месте после того, как вы изучите немного Фортрана и немного запрограммированы.

Большинство онлайн-ресурсов, которые помогут вам с программированием на Фортране, будут основаны на Linux. Точно так же в вычислительной науке большинство письменных материалов будут ориентированы на пользователей Linux. По этой причине я настоятельно рекомендую вам установить VirtualBox (или какое-либо программное обеспечение, которое позволяет вам запускать виртуальные операционные системы), а затем установить там какой-нибудь дистрибутив Linux. Если вы никогда ранее не пользовались Linux, то лучшим выбором будет удобный дистрибутив, такой как Ubuntu, Mint или Fedora. Эти дистрибутивы требуют минимального объема конфигурации, если они запускаются в виртуальной среде, и имеют хороший графический интерфейс, который поможет вам ориентироваться в операционной системе. В каждом из этих дистрибутивов есть менеджер пакетов, который вы можете использовать для установки дополнительного программного обеспечения. Используя менеджер пакетов, вы можете установить gfortran.

Вы захотите разрабатывать программное обеспечение в текстовом редакторе (или IDE), поэтому, вероятно, стоит изучить основы командной строки. У Software Carpentry есть хорошие ресурсы для этой задачи. (Отказ от ответственности: я преподавал часть семинара для Software Carpentry.) Затем вы сможете научиться писать простые программы и компилировать их в командной строке, а затем научиться использовать Makefile.

Проблема в том, чтобы делать что-либо на основе Windows, состоит в том, что большинство онлайн-материалов, которые вы увидите, когда будете заниматься наукой о компьютерах, предполагают, что вы используете Linux, и совет (если это было бы хорошо для начала) потерпит неудачу. вниз и стоить вам времени. Cygwin - это уровень API, который добавляет больше функциональности, подобной Linux, но соответствие с Linux не является идеальным, и программное обеспечение, скомпилированное для Linux, не будет работать на вашем компьютере; вам все равно нужно будет получить версии для Windows или перекомпилировать программное обеспечение для Windows. Собственный Windows-компилятор Fortran, такой как Visual Fortran, будет стоить денег, и у вас все еще будет проблема, заключающаяся в том, что большинство пользователей Fortran и специалисты по вычислительной технике используют Linux для разработки своего программного обеспечения, а это означает, что вам придется продвигаться вперед в своем своя. Однако, если вам действительно нужнопо какой-то причине распространять программное обеспечение на базе Windows, тогда имеет смысл приложить все усилия, чтобы выяснить, как использовать что-то вроде Visual Fortran.

Джефф Оксберри
источник
Спасибо за совет! Но я задаюсь вопросом, не мог ли я вместо виртуальной машины создать какой-то механизм двойной загрузки, в котором я выбирал, сначала я запускаю Windows7 или Linux Ubuntu? Я верю, что это действительно может сэкономить мне много времени! И если мне нужно будет перейти на Windows, тогда у меня будет опыт программирования в Linux-версии, который позволит мне намного быстрее пройти через шаги на Windows!
Ник
Вы могли бы, если вы этого хотите. Я думаю, что установка с двойной загрузкой менее гибкая и требует больше технических знаний и времени (вам может потребоваться изменить размер разделов, правильно настроить загрузчик и т. Д.). Я также думаю, что виртуальные машины легче перенести на новую машину, что может быть полезно, если вы хотите поделиться своей работой с коллегой или если вы приобрели новый компьютер и хотите перенести всю свою работу туда.
Джефф Оксберри
Я наконец нашел время, чтобы пройти все необходимые шаги. У меня есть VirtualBox и у меня установлен Linux (Ubuntu). Теперь мне было интересно, какой может быть лучший компилятор? Я не могу найти много онлайн об этой части: с. Я слышал, кто-то сказал Gfortran?
Ник
2
Гфортран свободен, и, вероятно, путь наименьшего сопротивления. Большинство других компиляторов требуют покупки лицензии с возможными исключениями для личного или академического использования. (Я знаю, что компилятор Intel можно загружать и использовать для личного пользования, например, только на бесплатной основе; вам придется читать лицензии для получения подробной информации.) HighPerformanceMark связан с веб-сайтом, на котором есть сравнения производительности компиляторов.
Джефф Оксберри
6

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

За мои деньги и книга Чивера и Слайтхолма, и книга Брейнерда достаточно хороши, хотя я не думаю, что она так же хороша, как книга Эллиса и др. , Которая, к сожалению, не была обновлена ​​для Fortran 2003 или более поздней версии .

У меня сильное отвращение к книге Чепмена. Я не могу вспомнить, почему мне так не понравился выпуск 90/95, поэтому я больше не могу оправдать это отвращение, вы можете отказаться от него в качестве предубеждения.

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

Что касается того, какой компилятор использовать, я использую компилятор Intel и в целом доволен им. Он интегрируется с Visual Studio, что может быть важно для вас. Компилятор NAG имеет лучшие сообщения об ошибках и предупреждениях, но генерирует более медленные (как правило, и ваш опыт может отличаться) исполняемые файлы. Компилятор gfortran бесплатный и получает достаточно хорошие обзоры, но я им не пользуюсь. Если вы хотите узнать больше, Многогранник скажет вам.

Высокая производительность
источник
Книга Маркуса имеет большое оглавление.
AlexE
Да, книга Маркуса действительно кажется великой книгой, поэтому я определенно рассмотрю ее! Для компилятора мне просто нужно что-то с быстрыми исполняемыми файлами (не требуется интеграция с Visual Studio).
Ник
Я думаю, что компилятор Intel вообще считается быстрым.
AlexE
3

Для книг я рекомендую "Современный Фортран, объясненный" Меткалфом / Рейдом / Коэном. Это скорее справочник, чем учебник, но он будет вам полезен, если вы уже знакомы с программированием в целом (скажем, C).

Кроме этой книги, я настоятельно рекомендую Ондреж Сертик «s сайт http://fortran90.org/ . Во-первых, он не научит вас Фортрану, но предоставит вам набор лучших практик. Фортран допускает различные способы программирования - в конце концов, он совместим с другими версиями. Приведенные здесь лучшие практики помогут вам разработать последовательный современный стиль Фортрана. Также найденный там FAQ будет вам интересен.

AlexE
источник
2
Голосование за страницу с рекомендациями F90, это было очень полезно для меня.
Даниэль Шаперо
2

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

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

В Linux у вас есть несколько бесплатных компиляторов Фортрана (GNU, Solaris Studio, Open64 и т. Д.) В дополнение к более богатому набору инструментов, например, valgrind, gdb, gnuplot, (для быстрого просмотра), svn / hg и т. Д. Кроме того, установка Предварительно скомпилированные пакеты, включая числовые библиотеки (blas / lapack / netcdf / fftw и т. д.), находятся под рукой (по крайней мере, в Debian с apt-get).

В Windows вам может быть лучше с Cygwin, так как он дает вам простой и быстрый доступ к некоторым из вышеперечисленных инструментов / библиотек в дополнение к компилятору GNU Fortran. Так что да, зайдите на cygwin.com и установите основной пакет вместе с gfortran и выбранным редактором (vim хорош). Это должно быть хорошим началом. Позже, если вы что-нибудь еще, я бы предложил использовать пакет apt-cyg для установки вещей.

Stali
источник
1
Я не рекомендую vim (или, в этом отношении, emacs) в качестве первого текстового редактора. Слишком много важных функций (вырезать, копировать, вставить, найти, найти / заменить), которые включают неинтуитивные комбинации клавиш, чтобы использовать его в качестве первого текстового редактора, и все эти дополнительные, незнакомые шаги, которые должен сделать новый учащийся, чтобы сделать что-нибудь простое и обескураживает, и отвлекает от всего, что они пытаются сделать (что, если вы рекомендуете текстовый редактор, вероятно, является некоторой формой разработки программного обеспечения).
Джефф Оксберри
1
В качестве первого редактора я рекомендую инструмент, способный быть единственным редактором, который вам когда-либо нужен, а не тот, который вы перерастете через 3 недели, 3 месяца или даже 3 года. По этой причине Emacs и Vim являются подходящими первыми редакторами. Конечно, у них может быть изначально более крутая кривая обучения, чем у других, но огромное количество программистов заплатили эту цену и нашли вознаграждение стоящим.
Высокая производительность Марк
Ваш комментарий устанавливает неверный выбор: изучите vim / emacs и получите редактор, который вы можете использовать на всю жизнь, несмотря на крутой курс обучения, или используйте какой-то другой простой в освоении инструмент, который вы перерастете. Многие профессиональные программисты используют другие инструменты с менее крутыми кривыми обучения, такие как gedit, Sublime Text, TextMate, TextWrangler и другие, и прекрасно ладят. Vim и emacs - отличные редакторы - я использую оба - но они не единственные, явно превосходящие возможности для программирования (WolfgangBangerth также подходит для IDE).
Джефф Оксберри