Навчання Фортран


9

Мені було цікаво, який найкращий спосіб навчитися програмувати у Fortran?

Я шукав книги, приклади, які мені здалися нормальними, - це "пояснено Fortran 95/2003" та "Fortran для вчених та інженерів" .

Я не знаю, що ви думаєте про це?

Ще одна річ, яку мені цікаво - це який компілятор я повинен використовувати? Я працюю на машині Windows 7 (64-розрядна).

Сподіваюся, ви, хлопці, зможете мені допомогти в цьому!

Тож для мого досвіду програмування:

  1. Матлаб і клен були добрі від моїх перших вступів у світ програмування. Matlab - це програма, в якій я насправді дуже гарна, я зрозумів роботу з петлями і як їх поєднувати, щоб зробити більш ефективними програми. Клен більше в базовій фазі (я знаю, як шукати рішення у простих інтегралах тощо).
  2. Через рік ми отримали вступ до C ++ у візуальній базі. Професор насправді поспішив на це, через 2 місяці ми вже обговорювали покажчики та спадщину. Я вмію писати простими програмами цією мовою, тільки робота з класами - це щось, що залишається складною, але я вважаю, що це лише питання практики.
  3. І через рік мені потрібно було вивчити Mathematica 8, в якій я теж справді добре отримую.

Тож у мене є трохи програмування, але я не скажу, що це неймовірна кількість!

Причина, чому я хочу навчитися Фортран, головним чином полягає в тому, що ви не можете самостійно займатися теоретичною фізикою, вам потрібно перевірити свої теорії, і для цього вам потрібно буде вміти писати програми, які можуть бути в змозі перевірити ці теорії чисельно. Я чув, що Фортран знаходить мову, якою користуватися, коли мова йде про числову математику, тому я думаю, що було б корисно знати цю мову.

ps: яка різниця між Fortran95 та Fortran 2003?


3
Чи можете ви бути трохи більш конкретними щодо того, звідки ви приїжджаєте і куди хочете поїхати? Ви вже знаєте, як програмувати, тобто які інші мови програмування ви знаєте? А що ви хочете зробити у Фортран?
Педро

Так, можливо, я мав би згадати це у своєму питанні, дозвольте мені редагувати :) @Pedro
Nick,

1
Я знаю, що це не відповідає на питання, але я настійно рекомендую вам використовувати Python над Fortran, якщо у вас немає початкових потреб у якості продуктивності. У вас буде менше головних болів, що стосуються фактичної математики та теорії, оскільки Python буде менше кричати на вас. У ньому також є неймовірні пакети, які роблять багато математичної математики дуже простим (пошук SciPy, Numpy, Matplotlib). Ці інструменти роблять Python дуже схожим на MATLAB за своїм використанням, але у вас також є ціла мова, щоб створити гарний фрагмент програмного забезпечення навколо ewll. Не кажучи вже про це з відкритим кодом.
відбувся

1
Fortran 95 також схожий на Matlab та стандарт ISO. Багато людей, що використовують Python, пишуть обчислювально важкі ядра в C / C ++ (навіть у Fortran), а це означає, що тепер вам доведеться вивчати не одну, а дві мови. Один для продуктивності, а другий для зручності / простоти використання.
stali

Відповіді:


4

Я переглядаю другу рекомендацію книги Чапмена. Я дізнався з книги «Часман Фортран 90», і це було дуже корисно. Це навчить вас фортранської мови. Це не навчить вас про хороші робочі процеси для програмування, і для цього вам слід шукати в іншому місці після того, як ви дізнаєтесь якийсь Fortran і запрограмували трохи.

Більшість інтернет-ресурсів, які допоможуть вам у програмуванні Fortran, збираються на базі Linux. Так само в обчислювальній науці більшість письмових матеріалів буде спрямована на користувачів Linux. З цієї причини настійно рекомендую встановити VirtualBox (або якесь програмне забезпечення, яке дозволяє запускати віртуальні операційні системи), а потім встановити там якийсь дистрибутив Linux. Якщо ви ніколи раніше не використовували Linux, зручна дистрибутива, наприклад Ubuntu, Mint або Fedora, буде, мабуть, найкращою ставкою. Ці дистрибутиви потребують мінімальної кількості конфігурації, якщо вони запускаються у віртуальному середовищі, і мають хороший графічний інтерфейс, який допоможе вам орієнтуватися в операційній системі. Кожен з цих дистрибутивів має менеджер пакунків, який можна використовувати для встановлення деякого додаткового програмного забезпечення. За допомогою менеджера пакунків ви можете встановити gfortran.

Ви хочете розробити програмне забезпечення в текстовому редакторі (або IDE), тому, напевно, варто вивчити основи командного рядка. Столярне програмне забезпечення має хороші ресурси для цього завдання. (Відмова: Я викладав частину семінару для програмування столярної програми.) Тоді ви повинні мати можливість рухатися вперед, навчаючись писати прості програми та компілювати їх у командному рядку, а потім навчитися використовувати Makefile.

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


Дякую за пораду! Але мені цікаво, що замість віртуальної машини я не міг створити якийсь механізм подвійного завантаження, в якому я можу вибирати, як я запускаю спочатку Windows7 або Linux Ubuntu? Я вірю, що це дійсно може зекономити мені багато часу! І якщо мені потрібно було перейти до Windows, то у мене буде досвід програмування Linux-версії, яка дозволяє мені швидше пройти кроки на Windows!
Нік

Ви могли, якщо хочете. Я думаю, що налаштування подвійного завантаження є менш гнучким і вимагає більше технічних знань та часу (можливо, доведеться змінити розмір розділів, правильно встановити завантажувач і т. Д.). Я також думаю, що віртуальні машини легше перенести на нову машину, що може бути корисно, якщо ви хочете поділитися своєю роботою з колегою, або якщо ви придбаєте новий комп’ютер і хочете перенести туди всю свою роботу.
Джефф Оксберрі

Нарешті я знайшов деякий час, щоб пройти всі необхідні кроки. У мене встановлено VirtualBox і встановлено Linux (Ubuntu). Тепер мені було цікаво, що може бути найкращим компілятором? Я не можу знайти багато в Інтернеті про цю частину: s. Я чув, як хтось говорить gfortran?
Нік

2
gfortran - вільний, і, мабуть, шлях найменшого опору. Більшість інших компіляторів вимагають придбати ліцензію, з можливими винятками для особистого чи академічного використання. (Я знаю, що компілятор Intel може бути завантажений і використаний для особистого користування лише на безоплатній основі; наприклад, вам доведеться читати ліцензії для детальної інформації.) HighPerformanceMark, пов’язаний із веб-сайтом, який має порівняння продуктивності для компіляторів.
Джефф Оксберрі

6

Я думаю, що книга Metcalfe - це хороший анотований посібник із сучасних особливостей Fortran, дуже корисний, якщо ви вже знаєте більш ранню версію мови, але не є хорошим вступом до програмування на мові.

На мої гроші книжка «Чивер і Слейтхолм» та « Брейнерд» є достатньо хорошою, хоча я не вважаю, що це так добре, як книга Елліса та ін., Яка, на жаль, не була оновлена ​​для Фортран 2003 чи пізнішої версії.

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

Але одна книга, яку я рекомендую без вагань, - це книга Аржена Маркуса . Це, мабуть, не ідеальне введення для того, хто все ще намагається з'ясувати основні особливості мови, але, як тільки ти засвоїв їх, варто набрати вагу в якійсь цінній речовині.

Що стосується того, який компілятор використовувати, я використовую компілятор Intel і я в цілому задоволений цим. Він інтегрується з Visual Studio, що може бути важливим для вас. Компілятор NAG має кращі повідомлення про помилки та попередження, але створює повільніші файли (як правило, і ваш досвід може відрізнятися). Компілятор gfortran безкоштовний і отримує досить хороші відгуки, але це не один, який я використовую. Якщо ви хочете знати більше багатогранника , вам скажу.


У книзі Маркуса є чудова TOC.
AlexE

Так, книга Маркуса справді здається чудовою книгою, так що я точно визначу! Для компілятора мені просто потрібно щось із швидкими виконуваними файлами (не потрібна інтеграція з візуальною студією).
Нік

Я думаю, що компілятор Intel, як правило, вважається швидким.
AlexE

3

Для книг я рекомендую "Сучасний пояснений Фортран" від Metcalf / Reid / Cohen. Це скоріше довідник, ніж підручник, але він буде корисним вам, якщо ви вже мали деякий вплив на програмування взагалі (скажімо С).

Крім цієї книги, я настійно рекомендую веб-сайт Ондржея Чертіка http://fortran90.org/ . Це не навчить вас Фортрансу в першу чергу, але він надасть вам набір найкращих практик. Fortran дозволяє застосовувати різні способи програмування - це все-таки сумісніше вниз. Найкращі практики, що надаються там, допоможуть вам розробити послідовний сучасний стиль Фортран. Також FAQ, знайдені там, зацікавлять вас.


2
Захищений на сторінці найкращих практик F90, що мені теж було дуже корисно.
Даніель Шаперо

2

Книга Чемпманса, я думаю, є більш привітним для новачків і хорошим довідником. Автори другого - всі експерти, але я думаю, що книга буде гарним доповненням до вашої бібліотеки на більш пізньому етапі.

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

У Linux у вас є ряд безкоштовних компіляторів Fortran (GNU, Solaris Studio, Open64 і т.д.), крім більш багатого набору інструментів, наприклад, valgrind, gdb, gnuplot, (для швидкого прогляду), svn / hg і т.д. Додатково встановлення попередньо складені пакети, включаючи числові libs (blas / lapack / netcdf / fftw тощо) - це команда away (принаймні, на Debian з apt-get).

У Windows вам може бути краще, ніж cygwin, оскільки він надає вам легкий і швидкий доступ до деяких з перерахованих вище інструментів / libs на додаток до компілятора GNU Fortran. Тож так, перейдіть на cygwin.com та встановіть основний пакет разом із gfortran та редактором за вибором (vim - це добре). Це має бути гарним початком. Пізніше, якщо ви ще щось, то я б запропонував використовувати пакет apt-cyg для встановлення матеріалів.


1
Я не рекомендую vim (або, натомість, emacs) як перший редактор тексту. Занадто багато важливих функцій (вирізати, скопіювати, вставити, знайти, знайти / замінити), які передбачають неінтуїтивні комбінації клавіш, щоб використовувати його як перший редактор тексту, і всі ці додаткові, незнайомі кроки, які повинен зробити новий учень, щоб зробити що-небудь просте це і відлякує, і відволікає від того, що вони намагаються зробити (що, якщо ви рекомендуєте текстовий редактор, мабуть, є якоюсь формою розробки програмного забезпечення).
Джефф Оксберрі

1
Як перший редактор я рекомендую інструмент, який може бути єдиним редактором, який вам коли-небудь знадобиться, а не тим, який ви переросте через 3 тижні, 3 місяці чи навіть 3 роки. З цієї причини і Emacs, і Vim є першими редакторами. Впевнені, що вони можуть мати початково більш круту криву навчання, ніж інші, але дуже багато програмістів заплатили цю ціну і вважали, що винагорода вартує.
Марка високої продуктивності

Ваш коментар встановлює помилковий вибір: вивчайте vim / emacs і мати редактора, який ви можете використовувати все життя, незважаючи на круту криву навчання, або використовувати інший простий у навчанні неповноцінний інструмент, який ви переросте. Багато професійних програмістів використовують інші інструменти з менш крутими кривими навчання, наприклад, gedit, Sublime Text, TextMate, TextWrangler та ін., І добре ладять. Vim та emacs - чудові редактори - я використовую і те, і інше, але вони не єдиний, явно чудовий вибір для програмування (WolfgangBangerth теж добре справляється з IDE).
Джефф Оксберрі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.