Fortran Programmierung



  • Hallo,

    ich bin vor kurzem von Java zu C/C++ gewechselt, da ich neben normalen Desktopanwendungen für den täglichen Gebrauch mehr in die Richtung mathematischer Berechnungen (chemische Berechnungen für Molecular Modeling, Design, Mechanics) gehen möchte. Ich komme aus dem naturwissenschaftlichen Bereich, programmiere sehr gerne und möchte den Beruf auch mit dem Hobby verbinden.

    Daher stellt sich mir die Frage, ob es sich lohnt Fortran zu lernen. Hab zwar oft gelesen, dass man guten Fortran-Code relativ einfach geschrieben bekommt im Gegensatz zu C++ und man so Arbeit spart. Problem ist natürlich auch, dass ich es nicht hauptberuflich mache und somit auch nicht die Zeit habe, mich nebenbei noch mit vielen weiteren Sprachen zu beschäftigen. Deswegen weiß ich nicht so recht, ob mir Fortran so viele Vorteile bringt, dass ich dafür Zeit für das Lernen von C++ opfern sollte.

    Bisher beschäftige ich mich erst einmal mit C und C++, außerdem kann ich noch so einiges mit Lua. Später soll noch OpenCL dazu kommen.

    Ich hoffe ihr habt ein paar Meinungen bzw. Anregungen ob es sich lohnt oder nicht.



  • SLx64 schrieb:

    Molecular Modeling, Design, Mechanics

    Hä, was willst du von mir?

    Ich mag Fortran nicht. Wenn du es nicht unbedingt brauchst, vergiss es einfach. Braucht man überhaupt nicht.



  • Mechanics schrieb:

    SLx64 schrieb:

    Molecular Modeling, Design, Mechanics

    Hä, was willst du von mir?

    http://en.wikipedia.org/wiki/Molecular_mechanics
    http://en.wikipedia.org/wiki/Molecular_dynamics
    http://en.wikipedia.org/wiki/Molecular_modeling



  • War nur ein Witz, wegen meinem Nick 😉


  • Mod

    Uraltfortran bietet dir nichts wesentliches gegenüber C, modernes Fortran bietet dir nichts wesentliches gegenüber C++. Mag sein, dass Fortran etwas einfacher ist als C, glaube ich aber nicht. Kann aber sehr gut sein, dass Fortran einfacher ist als C++. Dafür ist es mittlerweile weniger verbreitet als sowohl C, als auch C++. Das heißt, du findest weniger gute Lehrbücher, weniger Hilfe im Internet und weniger Unterstützung durch Fremdbibliotheken.

    Test: Such mal im Netz nach einer deutschen Fortran Community. Schwierig, oder? Such mal nach einer englischen (d.h. internationalen) Fortran Community. Immer noch recht mager, oder? Jetzt vergleiche das mal mit C oder C++.

    Daher kann ich, wie Mechanics, nur davon abraten, außer es gibt einen Grund, weshalb du unbedingt Fortran machen musst.

    Ob C oder C++ für dich die bessere Wahl ist, ist eine andere Frage. C++ braucht, anders als C, erst einmal mehrere Monate(!) Einarbeitung, wie dir sicher schon selber aufgefallen ist, bis man es so spricht, wie die Sprache gedacht ist (und das bedeutet was anderes als C mit Klassen). Wenn man so weit ist, ist es aber deutlich angenehmer und schneller in Sachen Entwicklung und Wartung.



  • Warum C/C++ lernen wenn es D gibt? 🙂



  • Ethon schrieb:

    Warum C/C++ lernen wenn es D gibt? 🙂

    Warum D lernen, wenn es E gibt?



  • Ich denke es hängt davon ab, was Du machst. Wenn Du mit Uni Codes zu tun hast oder mit gewachsenen Industriecodes, kann Fortran sehr nützlich sein. Im numerischen Bereich wird auch heute noch mit Fortran gearbeitet.
    Wenn Du nur privat was machen möchtest, ist es sicher weniger "notwendig", da stellt sich nur die Frage, von welchen Bibliotheken Du abhängig bis / sein willst.
    Allgmein bin ich der Meinung, das der Lernuafwand für Fortran vergleichsweise gering ist. Das kann man durchaus im vorbeigehen machen (zumindest Fortran 77).

    Gruß Andreas Georg



  • Es sind natürlich viele numerische Berechnungen dabei aber die kann ich doch genauso gut in C++ machen oder?

    Meine Projekte werden (zumindestens im genannten Bereich) hauptsächlich für private Zwecke oder normale Anwender sein und sich höchstens auf den akademischen Bereich ausbreiten.

    Ich lerne hauptsächlich C++ und gucke nur nebenbei auf C um es parallel mitzulernen.

    Die Entscheidung für die richtige Programmiersprache ist mir ziemlich schwer gefallen und war mit Java super zufrieden. Mein Hauptproblem ist, dass eine Sprache brauche die sich sehr gut für mathematische Berechnungen einsetzen lässt aber auch für alle anderen Anwendungen gut eingesetzt werden kann, also in Richtung Desktopanwendungen, Grafikprogrammierung, usw... C++ ist natürlich nicht für alles das optimale aber es kann alles recht gut und ist (in Verbindung mit C) gut mit anderen Sachen kompatibel.

    Ein ähnliches Problem hatte ich auch mit der Wahl der Skriptsprache. Ich finde Lua echt super und es ist auch schnell und bietet viele Vorteile. Es ist eigentlich genau das, was ich von einer Skriptsprache erwarte und es lässt sich auch eigenständig nutzen. Wie aber schon erwähnt worden ist, spielt die Community und die Unterstützung (Bücher, Internet) eine wichtige Rolle und die ist bei Python z.B. bedeutend besser.



  • Mit C++ sind alle Deine Ansprüche umsetzbar.

    Für numerische Anwendungen ist der Weg mit C++ nur bisweilen etwas härter. Viele etablierte numerische Bibliotheken sind nur in Fortran verfügbar, dann heißt es übersetzen oder neu schreiben. Alles machbar wenn man Zeit hat. Auch wird die Auswahl der C/C++ Biblitheken mit der Zeit immer besser.

    Also geh den Weg - er kommt mir sehr bekannt vor 😃 .

    Gruß Andreas Georg



  • Fortran soll ja teilweise schneller als C sein.



  • volkard schrieb:

    Ethon schrieb:

    Warum C/C++ lernen wenn es D gibt? 🙂

    Warum D lernen, wenn es E gibt?

    Warum E lernen, wenn es F# gibt?



  • E ist toll! Zumindestens wenn die Droge gemeint ist. 🙂

    Ansonsten ist D ein besseres und einfacheres C++, wenn man sich nicht mit Altlasten herumschlagen muss doch die bessere Wahl.



  • Ethon schrieb:

    E ist toll! Zumindestens wenn die Droge gemeint ist. 🙂

    die programmiersprache ist gemeint.

    Ethon schrieb:

    Ansonsten ist D ein besseres und einfacheres C++, wenn man sich nicht mit Altlasten herumschlagen muss doch die bessere Wahl.

    ach? was macht D denn besser als C++? ich kann dir aber sagen was für C++ spricht:
    - jahrzehnte alte community
    - tausende libs
    - dutzende compiler, debugging tools
    - unzähliche fachliteratur

    D ist afaik nur syntactical sugar ohne jegliche tatsächliche verbesserungen. auch ist mir das mit diesen angetönten altlasten nicht ganz schlüssig. was ist gemeint?

    edit: tippfehler.



  • asfdlol schrieb:

    Ethon schrieb:

    Ansonsten ist D ein besseres und einfacheres C++, wenn man sich nicht mit Altlasten herumschlagen muss doch die bessere Wahl.

    ach? was macht D denn besser als C++?

    D hat einige interessante Ansätze und verbessert vieles, was in C++ umständlich ist.
    Beispiele dafür sind Contract Programming, ein Modul-System und Concepts in Form von Template Constraints. Besonders die letzten beiden Punkte sind Dinge, die C++ noch nicht hingekriegt hat.
    Ich behalte D im Auge, die Sprache wird höchstwahrscheinlich noch eine wichtige Rolle spielen.

    ich kann dir aber sagen was für C++ spricht:
    - jahrzehnte alte community
    - tausende libs
    - dutzende compiler, debugging tools
    - unzähliche fachliteratur

    Du kannst jetzt nicht einer neuen Sprache vorwerfen, dass die Community noch klein und jung ist. C++ ist alt, D ist neu.
    Und was die Libs angeht: D hat eine Schnittstelle sowohl zu C als auch zu C++, so dass man alles verwenden kann.

    D ist afaik nur syntactical sugar ohne jegliche tatsächliche verbesserungen.

    Auch sowas sind Verbesserungen.

    auch ist mir das mit diesen angetönten altlasten nicht ganz schlüssig. was ist gemeint?

    D hat die C-Kompatiblität aufgegeben. Die Sprache kann zwar C-Funktionen aufrufen, aber keinen C-Code mehr kompilieren.
    Die C-Kompatiblität ist C++ größtes Hindernis bei einem weiteren Wachstum. D hat die aufgegeben und konnte somit auch teilweise die Syntax verschönern und vereinfachen. Außerdem wird man so gezwungen, zumindest teilweise modern und angemessen zu programmieren, weil die C-Hacks illegal sind.


  • Mod

    fwbp34 schrieb:

    Für numerische Anwendungen ist der Weg mit C++ nur bisweilen etwas härter. Viele etablierte numerische Bibliotheken sind nur in Fortran verfügbar, dann heißt es übersetzen oder neu schreiben. Alles machbar wenn man Zeit hat. Auch wird die Auswahl der C/C++ Biblitheken mit der Zeit immer besser.

    Hast du irgendwie eine Zeitreise gemacht? Das war das typische Argument für Fortran als C noch im Kommen war, also vor 20-30 Jahren. Mittlerweile ist es ziemlich umgekehrt und viele Bibliotheken bieten gar keine Fortran-Bindings mehr an*, während sich niemand erlauben kann, C (und damit auch C++; teilweise sogar exklusiv C++) außen vor zu lassen, selbst wenn sie historisch aus alten Fortranbibliotheken hervor gegangen sind.

    *: Da Fortran auch mit C-Bindings umgehen kann, sollte das aber kein großes Problem sein. Bloß Arbeit.



  • @SeppJ

    Mag sein das ich ein wenig hinter dem Mond lebe 😉 .

    Aber für z.B. LAPACK finde ich bis heute keine C Version. FTN2C zählt in meinen Augen nicht der dabei generierte Code ist praktisch nicht mehr lesbar.

    Und das Fortran in C/C++ Programme eingebunden werden kann ist mir schon klar. Aber für mich der unter Windows arbeiten muß, ist der extra Fortran Compiler eine Kostenquelle und auf der anderen Seite ist es ein ziemlicher Krampf das so einzubinden. Ich mache das hin und wieder aber bei Leibe nicht gerne.

    Ich weiß nicht ob Du mich falsch verstanden hast. Aber ich bin der Meinung man kann Fortran schon können (zumindest lesen) aber ich programmiere heute eigentlich nur noch in C++. Dazu stehe ich dann auch.

    Gruß Andreas Georg


  • Mod

    fwbp34 schrieb:

    Aber für z.B. LAPACK finde ich bis heute keine C Version. FTN2C zählt in meinen Augen nicht der dabei generierte Code ist praktisch nicht mehr lesbar.

    Ich glaube, du verstehst die Problematik nicht. Was interessiert, wo drin der Quellcode einer Bibliothek geschrieben ist? Selbst die in Fortran geschriebene Referenzimplementierung von LAPACK bietet C-Bindings, das ist das Entscheidende! Sonst würde niemand mehr LAPACK nutzen…

    Ich weiß nicht ob Du mich falsch verstanden hast. Aber ich bin der Meinung man kann Fortran schon können (zumindest lesen) aber ich programmiere heute eigentlich nur noch in C++. Dazu stehe ich dann auch.

    Das klang sehr stark so, als würde man ohne Fortran wichtige Numerikbibliotheken nicht nutzen können. Das ist absolut nicht der Fall. Eher schon im Gegenteil. Eine Bibliothek, die nur Fortran-Bindings bietet, würde schlicht kaum benutzt, wodurch sie kaum Verbreitung fände, wodurch sie noch weniger benutzt würde, usw.



  • Okay das ist natürlich super, dass ich einfach die Bibliotheken in C++ nutzen kann und mir das nicht selbst ausdenken muss.

    Ich hoffe die Entscheidung zu C++ zu wechseln ist ne gute Entscheidung.



  • Ich hoffe die Entscheidung zu C++ zu wechseln ist ne gute Entscheidung.

    Welche Empfehlung erwartest du in einem C++ Forum?


Log in to reply