Uczenie się Fortran

9

Zastanawiałem się, jaki jest najlepszy sposób na naukę programowania w Fortran?

Szukałem książek, przykłady, które wydawały mi się w porządku, to „Wyjaśnienie Fortran 95/2003” i „Fortran dla naukowców i inżynierów” .

Nie wiem, co o tym myślicie?

Zastanawiam się też, jakiego kompilatora powinienem użyć? Pracuję na komputerze z systemem Windows 7 (64-bitowym).

Mam nadzieję, że pomożecie mi w tym!

Tak więc według mojego doświadczenia z programowaniem:

  1. Matlab i klon były miłe z moich pierwszych przedstawień w świecie programowania. Matlab to program, w którym właściwie jestem całkiem niezły, mam dość pracy z pętlami i jak je łączyć, aby tworzyć bardziej wydajne programy. Klon jest bardziej w fazie podstawowej (wiem, jak szukać rozwiązania prostych całek itp.).
  2. Rok później otrzymaliśmy wprowadzenie do C ++ w Visual Basic. Profesor tak naprawdę zajął się tym, po 2 miesiącach rozmawialiśmy już o wskazówkach i dziedzictwie. Potrafię pisać proste programy w tym języku, tylko praca z klasami pozostaje problemem, ale uważam, że to tylko kwestia praktyki.
  3. A rok później musiałem nauczyć się Mathematica 8, w której też naprawdę dobrze sobie radzę.

Mam więc trochę doświadczenia programistycznego, ale nie powiem, że to niesamowita ilość!

Powodem, dla którego chcę się uczyć Fortran, jest głównie to, że nie jesteś w stanie samodzielnie zajmować się fizyką teoretyczną, musisz przetestować swoje teorie, a do tego musisz umieć pisać programy, które mogą być w stanie przetestować te teorie numerycznie. Słyszałem, że Fortran jest uprzejmym językiem, jeśli chodzi o matematykę numeryczną, więc myślę, że przydałoby się znać ten język.

ps: jaka jest różnica między Fortran95 a Fortran 2003?

Nacięcie
źródło
3
Czy możesz być bardziej konkretny, skąd pochodzisz i dokąd chcesz się udać? Czy wiesz już, jak programować, czyli jakie inne języki programowania znasz? A co chcesz robić w Fortran?
Pedro
Tak, może powinienem wspomnieć o tym w moim pytaniu, pozwól mi edytować :) @Pedro
Nick
1
Wiem, że to nie odpowiada na pytanie, ale zdecydowanie zalecam używanie Pythona w porównaniu z Fortranem, jeśli nie masz szczególnych wymagań dotyczących wydajności jako początkujący. Będziesz miał mniej problemów z faktyczną matematyką i teorią, ponieważ Python będzie mniej krzyczał na ciebie. Ma także niesamowite pakiety, które sprawiają, że wiele matematyki numerycznej jest bardzo proste (szukaj SciPy, Numpy, Matplotlib). Narzędzia te sprawiają, że Python jest bardzo podobny do MATLAB-a, ale masz także cały język do zbudowania dobrego oprogramowania jako ewll. Nie wspominając o tym, że jest to oprogramowanie typu open source.
miał
1
Fortran 95 jest również podobny do Matlaba i jest standardem ISO. Wiele osób korzystających z Pythona pisze ciężkie obliczeniowo jądra w C / C ++ (nawet Fortran), co oznacza, że ​​teraz musisz nauczyć się nie jednego, ale dwóch języków. Jeden dla wydajności, a drugi dla wygody / łatwości użytkowania.
stali

Odpowiedzi:

4

Idę do rekomendacji drugiej stali książki Chapmana. Nauczyłem się z książki Chapmana Fortran 90 i było to bardzo pomocne. Nauczy Cię języka Fortran. Nie nauczy Cię o dobrej organizacji pracy do programowania, a do tego należy szukać gdzie indziej po nauczyłem niektóre Fortran i zaprogramowany na trochę.

Większość zasobów online, które pomogą ci w programowaniu Fortran, będzie oparta na systemie Linux. Podobnie w informatyce większość materiałów pisanych będzie skierowana do użytkowników Linuksa. Z tego powodu zdecydowanie zalecam zainstalowanie VirtualBox (lub innego oprogramowania, które umożliwia uruchamianie wirtualnych systemów operacyjnych), a następnie zainstalowanie tam dystrybucji Linuksa. Jeśli nigdy wcześniej nie korzystałeś z Linuksa, prawdopodobnie najlepszym rozwiązaniem będzie przyjazna dla użytkownika dystrybucja, taka jak Ubuntu, Mint lub Fedora. Te dystrybucje wymagają minimalnej ilości konfiguracji, jeśli są uruchamiane w środowisku wirtualnym i mają dobry interfejs GUI, który pomaga nawigować po systemie operacyjnym. Każda z tych dystrybucji ma menedżera pakietów, którego można użyć do zainstalowania dodatkowego oprogramowania. Za pomocą menedżera pakietów możesz zainstalować gfortran.

Będziesz chciał opracować oprogramowanie w edytorze tekstu (lub IDE), więc prawdopodobnie warto poznać podstawy wiersza poleceń. Oprogramowanie Stolarstwo ma dobre zasoby do tego zadania. (Zastrzeżenie: Prowadziłem część warsztatów dla oprogramowania Stolarstwo). Następnie powinieneś być w stanie posunąć się naprzód, ucząc się pisać proste programy i kompilować je w wierszu poleceń, a następnie nauczyć się korzystać z Makefile.

Problem z robieniem czegokolwiek opartego na systemie Windows polega na tym, że większość materiałów online, które zobaczysz podczas wykonywania obliczeń, zakłada, że ​​używasz Linuksa, a rada (jeśli na początek warto), się załamie w dół i kosztuje cię czas. Cygwin to warstwa API, która dodaje więcej funkcjonalności podobnych do Linuksa, ale korespondencja z Linuksem nie jest idealna, a oprogramowanie skompilowane dla Linuksa nie będzie działać na twoim komputerze; nadal musisz pobrać wersje natywne dla systemu Windows lub ponownie skompilować oprogramowanie dla systemu Windows. Pochodzący z Windows kompilator Fortran, taki jak Visual Fortran, będzie kosztował, a nadal będziesz mieć problem, że większość użytkowników Fortran i naukowcy zajmujący się obliczeniami używają Linuksa do tworzenia oprogramowania, co oznacza, że ​​będziesz musiał iść naprzód posiadać. Jednak jeśli naprawdę musiszz jakiegoś powodu dystrybuuj oprogramowanie oparte na systemie Windows, wtedy warto przejść wszystkie wysiłki, aby dowiedzieć się, jak używać czegoś takiego jak Visual Fortran.

Geoff Oxberry
źródło
Dzięki za radę! Zastanawiam się, ale zamiast maszyny wirtualnej nie mogłem stworzyć mechanizmu podwójnego rozruchu, w którym mogę wybrać, czy najpierw uruchomię Windows7 lub Linux Ubuntu? Wierzę, że rzeczywiście może mi to zaoszczędzić dużo czasu! A jeśli będę musiał przejść do systemu Windows, będę miał doświadczenie w programowaniu w wersji dla systemu Linux, co pozwoli mi szybciej przejść przez kroki w systemie Windows!
Nick
Możesz, jeśli chcesz. Myślę, że konfiguracja podwójnego rozruchu jest mniej elastyczna i wymaga większej wiedzy technicznej i czasu (być może trzeba będzie zmienić rozmiar partycji, odpowiednio ustawić moduł ładujący itp.). Myślę również, że migracja maszyn wirtualnych na nową maszynę jest łatwiejsza, co może być pomocne, jeśli chcesz udostępnić swoją pracę współpracownikowi lub nabyć nowy komputer i chcesz przenieść tam całą swoją pracę.
Geoff Oxberry
W końcu znalazłem trochę czasu, aby przejść wszystkie niezbędne kroki. Mam VirtualBox i mam zainstalowany system Linux (Ubuntu). Teraz zastanawiałem się, który może być najlepszym kompilatorem? Nie mogę znaleźć dużo w Internecie na temat tej części: s. Słyszałem, jak ktoś powiedział gfortran?
Nick
2
gfortran jest wolny i prawdopodobnie ścieżka najmniejszego oporu. Większość innych kompilatorów wymaga zakupu licencji, z możliwymi wyjątkami do użytku osobistego lub akademickiego. (Wiem, że kompilator Intela można pobrać i używać go na własny użytek tylko na zasadzie bezpłatnej; na przykład musisz przeczytać licencje). HighPerformanceMark połączony ze stroną internetową, która ma porównania wydajności dla kompilatorów.
Geoff Oxberry
6

Myślę, że książka Metcalfe jest dobrym przewodnikiem po nowoczesnych funkcjach Fortrana, bardzo przydatnym, jeśli znasz już wcześniejszą wersję języka, ale nie jest to dobre wprowadzenie do programowania w tym języku.

Dla mojego pieniędzy książka Chiver i Sleightholme a książka Brainerd są zarówno wystarczająco dobre, chociaż nie sądzę, albo jest tak dobry jak książka Ellis et al , które, niestety, nie został zaktualizowany do Fortran 2003 roku lub później.

Mam silną niechęć do książki Chapmana. Nie pamiętam, dlaczego tak bardzo nie lubiłem wersji 90/95, więc nie mogę już dłużej uzasadniać tej niechęci, można ją zlekceważyć.

Ale jedyną książką, którą polecam bez wahania, jest książka Arjena Markusa . Prawdopodobnie nie jest to idealne wprowadzenie dla kogoś, kto wciąż próbuje zrozumieć podstawowe cechy języka, ale gdy już je opanujesz, warto ważyć jakąś cenną substancję.

Jeśli chodzi o to, którego kompilatora użyć, używam kompilatora Intela i ogólnie jestem z niego zadowolony. Integruje się z Visual Studio, co może być dla Ciebie ważne. Kompilator NAG ma lepsze komunikaty o błędach i ostrzeżeniach, ale generuje wolniejsze (generalnie i inne wrażenia) pliki wykonywalne. Kompilator gfortran jest bezpłatny i dostaje wystarczająco dobre recenzje, ale nie używam go. Jeśli chcesz wiedzieć więcej , powie Ci Wielościan .

Znak wysokiej wydajności
źródło
Książka Markusa ma świetny spis treści.
AlexE
Tak, książka Markusa rzeczywiście wydaje się świetną książką, więc zdecydowanie ją rozważę! Do kompilatora potrzebuję tylko czegoś z szybkimi plikami wykonywalnymi (nie wymaga integracji z Visual Studio).
Nick
Myślę, że kompilator Intela jest ogólnie uważany za szybki.
AlexE,
3

W przypadku książek polecam „Modern Fortran Explained” autorstwa Metcalf / Reid / Cohen. Jest to raczej odniesienie niż podręcznik, ale będzie ci dobrze służyć, jeśli już wcześniej miałeś trochę kontaktu z programowaniem (powiedzmy C).

Oprócz tej książki gorąco polecam stronę internetową Ondřej Čertík http://fortran90.org/ . Nie nauczy Cię przede wszystkim Fortranu, ale zapewni Ci zestaw najlepszych praktyk. Fortran pozwala na różne sposoby programowania - jest w końcu kompatybilny w dół. Podane tam najlepsze praktyki pomogą ci wypracować spójny, nowoczesny styl Fortran. Często zadawane pytania mogą Cię zainteresować.

AlexE
źródło
2
Głosowałem na stronę najlepszych praktyk w F90, co również bardzo mi pomogło.
Daniel Shapero,
2

Myślę, że książka Chapmansa jest bardziej przyjazna dla początkujących i stanowi dobre odniesienie. Autorzy drugiego z nich są ekspertami, ale myślę, że książka będzie dobrym dodatkiem do twojej biblioteki na późniejszym etapie.

Na początek sugeruję trzymać się Fortran 95, a następnie (w razie potrzeby) przejść do Fortran 2003. Fortran 95 jest łatwy do nauczenia się (prawie jak Matlab), a będziesz bardzo produktywny.

W systemie Linux masz wiele darmowych kompilatorów Fortran (GNU, Solaris Studio, Open64 itp.) Oprócz bogatszego zestawu narzędzi, np. Valgrind, gdb, gnuplot, (dla szybkiego viz), svn / hg itp. Dodatkowo instalacja wstępnie skompilowane pakiety, w tym biblioteki numeryczne (blas / lapack / netcdf / fftw itp.), są poleceniami dostępnymi (przynajmniej na Debianie z apt-get).

W systemie Windows lepiej być może z cygwinem, ponieważ zapewnia on łatwy i szybki dostęp do niektórych z powyższych narzędzi / bibliotek oprócz kompilatora GNU Fortran. Więc tak, przejdź do cygwin.com i zainstaluj pakiet podstawowy wraz z gfortranem i wybranym edytorem (vim jest dobry). To powinien być dobry początek. Później, jeśli coś jeszcze, to sugeruję użycie pakietu apt-cyg do instalowania rzeczy.

stali
źródło
1
Nie polecam vima (lub, w tym przypadku, emacsa) jako pierwszego edytora tekstu. Istnieje zbyt wiele niezbędnych funkcji (wycinanie, kopiowanie, wklejanie, znajdowanie, znajdowanie / zastępowanie), które obejmują nieintuicyjne kombinacje klawiszy, aby można go było używać jako pierwszego edytora tekstu, oraz wszystkie te dodatkowe, nieznane kroki, które musi podjąć nowy uczeń, aby zrobić coś prostego zniechęca i odwraca uwagę od wszystkiego, co próbują zrobić (co, jeśli polecasz edytor tekstu, to prawdopodobnie jakaś forma tworzenia oprogramowania).
Geoff Oxberry
1
Jako pierwszy redaktor polecam narzędzie, które może być jedynym edytorem, jakiego potrzebujesz, a nie narzędziem, które przerośnie za 3 tygodnie, 3 miesiące, a nawet 3 lata. Z tego powodu zarówno Emacs, jak i Vim są odpowiednimi pierwszymi redaktorami. Na pewno mogą mieć bardziej początkową krzywą uczenia się niż inni, ale okropna liczba programistów zapłaciła tę cenę i uznała nagrody za warte czasu.
High Performance Mark
Twój komentarz wprowadza fałszywy wybór: naucz się vim / emacs i posiadaj edytor, którego możesz używać do końca życia, pomimo stromej krzywej uczenia się, lub użyj innego łatwego do nauczenia gorszego narzędzia, które przerosniesz. Wielu profesjonalnych programistów korzysta z innych narzędzi o mniej stromych krzywych uczenia się, takich jak gedit, Sublime Text, TextMate, TextWrangler i inne, i dobrze się dogaduje. Vim i emacs są świetnymi edytorami - używam obu - ale nie są to jedyne, wyraźnie lepsze wybory do programowania (WolfgangBangerth również stanowi dobry argument dla IDE).
Geoff Oxberry