Jakiej wersji Fortran powinienem się nauczyć?

17

Jestem studentem inżynierii mechanicznej zainteresowanym inżynierią lotniczą, gdzie, jak mi powiedziano, Fortran jest nadal powszechnie używany.

Którą wersję Fortran powinienem poświęcić na naukę?

użytkownik26358
źródło
Nie warta pełnej odpowiedzi, ale warto zauważyć, że obsługa kompilatora dla najnowszych funkcji Fortran jest poważnie brakuje. Zobacz fortranwiki.org/fortran/show/Fortran+2003+status i fortranwiki.org/fortran/show/Fortran+2008+status Zacznę od 90/95 i będę pracować w miarę potrzeb.
Doug Lipiński
Po napisaniu przemyśleń na ten temat, zobacz stackoverflow.com/questions/953869/... stackoverflow.com/questions/3549702/…, jeśli może się przydać. Oprócz powyższego polecam F90, a następnie uczę się funkcji, które będą potrzebne.
Rook
1
Zauważ, że Matlab pochodzi z Fortran. Na podstawie twoich komentarzy polecam ci ocenić tę opcję.
Dennis Jaheruddin
2
Czy powinieneś w ogóle nauczyć się Fortranu ? Może to być podyktowane ilością starszego kodu, który musisz użyć - co również dyktuje wersję Fortran, której powinieneś się nauczyć.
Damien

Odpowiedzi:

27

To trochę popularne mylące określenie, że istnieje „wersja” Fortrana. Z rzadkimi wyjątkami najnowsze standardy Fortran (i kompilatory) zachowują doskonałą zgodność wsteczną ze starszymi standardami. Ma to dobry powód: niewiele osób użyłoby dziś Fortrana, gdyby nie duża ilość wciąż używanego kodu. Innymi słowy, zgodny z normami kod Fortran77 prawie zawsze będzie działał z najnowszymi kompilatorami.

Powinieneś nauczyć się korzystać z najnowocześniejszej dostępnej wersji języka. F2008 może nie dodał nic strasznego użytecznego dla początkującego, ale wprowadzenie koncepcji obiektowych w F2003 jest zdecydowanie dużą sprawą. „Modern Fortran Explained” to dobre miejsce do rozpoczęcia, a „Scientific Software Design: The Object Oriented Way” jest również całkiem dobre do nauki praktycznego zastosowania.

Pragmatycznie, jeśli zamierzasz pracować nad starszym kodem (powiedzmy F77 lub wcześniejszym), w pewnym momencie będziesz musiał nauczyć się niektórych rzeczy, które zrobili z powodu braku funkcji F90 +. Na przykład, jeśli piszesz dla czegoś kod Fortran, nigdy nie powinieneś używać tak zwanego „WSPÓLNEGO bloku”, ale niezmiennie zobaczysz, że pojawiają się w kodzie F77, którego możesz użyć.

Nigdy nie polecałbym, żeby ktoś zaczął pracować w Fortranie bez przynajmniej zestawów funkcji F90 / 95.

To powiedziawszy, jeśli nie znasz się dobrze na programowaniu w innym języku, prawdopodobnie uznasz, że Fortran nie jest najlepszym językiem do nauki jako pierwszym, nawet jeśli wybierasz się w kosmos. (I mówię to jako ktoś w kosmosie, który regularnie używa Fortranu i miał go jako mój pierwszy język).

Aureliusz
źródło
2
+1 „Nigdy nie polecałbym, żeby ktoś zaczął pracować w Fortranie bez przynajmniej zestawów funkcji F90 / 95”. . Popieram to. Zacznij od F90, poznaj wszystkie podstawowe funkcje, przećwicz kilka programów, a następnie przejdź do nowszych wersji
Tymric
JEŚLI nie Fortran, jakiego języka warto się nauczyć i będzie on praktyczny w inżynierii? Jak tam Matlab? Potrzebuję tego na kurs, który biorę w następnym semestrze.
user26358,
@ user26358 Python do programowania ogólnego zastosowania, ma dużą przyczepność w społeczności naukowej. R do analizy statystycznej. MATLAB, Mathematica lub Maple (cokolwiek używa twoja klasa) do obliczeń numerycznych. SQL dla relacyjnych baz danych. JavaScript dla treści internetowych i dlatego, że staje się lingua franca. Nie zawracałbym sobie głowy Fortranem, dopóki jeden z nich nie będzie w stanie wykonać pracy, nie jest to przyjemny język do nauki jako pierwszy.
Schwern,
@Aurelius, zgadzam się z twoim ostatnim akapitem. Uważam, że właściwy sposób uczenia się programowania naukowego jest dokładnie odwrotny, jakiego doświadczyłem: python-> C ++, a jeśli go potrzebujesz, Fortran.
Nicola Cavallini,
@ user26358 Matlab jest dobry i prawdopodobnie będziesz go używać w szkole. Python jest dobrym miejscem do rozpoczęcia od programowania ogólnego, a jego moduły numpy / scipy potrafią wykonywać większość rzeczy, które prawdopodobnie będziesz robić w Matlab, i jest to dobre miejsce do nauki podstaw pisania oprogramowania. Zdecydowanie powinieneś mieć też przynajmniej jeden skompilowany język; C ++ byłby najpopularniejszym wyborem.
Aurelius
1

Nie zgadzam się z obojgiem. C ++ i Python wciąż nie są tak zoptymalizowane jak FORTRAN. Zdecydowanie zgodziłbym się, że FORTRAN 90/95 jest minimum. Jednak zawsze przydatne jest użycie innych, bardziej nowoczesnych wersji. Wyzwanie związane z FORTRAN polega na tym, że jeśli nauczysz się go przed nauką języków obiektowych, łatwo to zrozumieć. O wiele trudniej jest się nauczyć, jeśli przyzwyczaiłeś się do myślenia za pomocą przedmiotów. Uczę tutaj klasy superkomputerowej i zmuszam moich uczniów do korzystania z FORTRAN. Zmusza ich do korzystania z innego rodzaju logiki w programowaniu. Nie podoba im się to, ponieważ nie „myśli” jak Python lub C ++. Wszystko sprowadza się do tego, co zamierzasz zrobić i ile ma znaczenia paraliżacja i wydajność.

tmwitten
źródło
Witamy w SciComp.SE. Wygląda to bardziej na opinię niż pytanie na stronę. Jeśli uważasz, że Fortran „[...] zmusza ich do użycia innego rodzaju logiki w programowaniu”, powinieneś rozwinąć argument i powiedzieć nam, dlaczego tak jest. A także, o czym jest ta „logika”, o której wspominasz.
nicoguaro
2
@tmwitten: Czy ta odpowiedź ma być komentarzem? Prawdopodobnie jest to zbyt długo, aby być komentarzem i poza kontekstem wygląda jak non sequitur (np. C ++ i Python nie są wymienione w pytaniu, „oboje” wydaje się odnosić do Nicoli i Aureliusza).
Geoff Oxberry