Welche Vorteile hat der moderne Fortran verfügen über moderne C++?
Ich versuche zu entscheiden, zwischen Fortran und C++ für eine Anwendung im wissenschaftlichen rechnen. Es ist mir nicht klar, ob Fortran hat immer noch Vorteile gegenüber anderen Sprachen, wenn es zur Leistung kommt. Zum Beispiel, ich glaube, da Fortran erzwingt strenge aliasing, bessere Optimierungen vorgenommen werden konnten, durch den compiler, wenn im Vergleich zu C vor C99. Ich bin mir nicht sicher, wie C++ passt hier rein.
Führung?
InformationsquelleAutor der Frage royco | 2011-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich warf einen Blick auf einige der Sachen in der neueste Fortran-standardsund ehrlich gesagt, ich bin beeindruckt. Eine Menge von dem, was ich hasste es, über die Sprache von vor 20 Jahren ist nun Weg. Keine Zeile mehr zahlen und spezielle Spalten (möge Sie in der Hölle schmoren).
Fortran wurde Massiv in engineering-Kreisen seit nunmehr 50 Jahren. Das bietet Ihnen zwei Vorteile, wenn Sie die Arbeit in den Kreisen. First off, sind diese Leute kümmern viel über-Optimierung. Das bedeutet, dass Fortran-Compiler neigen dazu, die besten Optimierer herum. Die Sprache selber ist eine Menge mehr als optimierbare Cish Sprachen zu haben, Dank der fehlenden aliasing.
Der zweite Vorteil ist, dass Fortran-Bibliothek Unterstützung für number crunching einfach nicht zu schlagen. Der beste code ist fast immer gut ausgetestet code, den Sie nicht haben, um zu schreiben.
Wenn Ihr Antrag fällt nicht unter wissenschaftlichen, engineering, oder der Anzahl Knirschen im Allgemeinen, dann ist keiner der oben genannten wird eine große Sache für Sie, so dass Sie vielleicht besser an anderer Stelle suchen.
InformationsquelleAutor der Antwort T.E.D.
Das andere große Problem ist die Lernkurve, die ist sehr groß für C++ und außergewöhnlich klein für Fortran (90 und höher). Fortran ist wie MATLAB mit Operationen wie ...
matmul( matmul(transpose(B), D), B )
norm2(x)
call gesvd(A,S,u,vt)
Fortran auch Zeiger, dynamischer Speicher -, Benutzer-definierte Datentypen etc.
Es ist gut unterstützt durch die großen Hersteller (Intel/Sun/IBM/Cray/PGI/NAG usw.), open source (gfortan/g95) Gemeinden und Entwickler von numerischen Bibliothek/APIs wie PETSc, MPI usw.
Heck-der neue standard (Fortran 2008) hat sogar co-arrays für die parallele Programmierung ohne die Notwendigkeit für MPI/OpenMP und einige Fortran-Compiler bereits unterstützen (g95 und Cray).
Im Grunde hat es alle guten Qualitäten für die numerische computing, ist einfacher als MATLAB, standardisiert, kostenlos, skalierbar (mit MPI/OpenMP und co-arrays), produziert blazing fast/parallel-code.
Für Numerik nichts Fortran-aber leider nicht für alles, was sonst noch alles beats Fortan. Also, wenn Sie ein Wissenschaftler mit einem sicheren job und nur numerische/HPC-computing, dann bleiben mit Fortran anders lernen und der Einsatz von C++, wie es ist weit verbreitet für nicht numerische software.
InformationsquelleAutor der Antwort user4562
Fortran können ganze Reihe Operationen und weitere Operationen auf array-Abschnitte. Es sind C++ - Klassen für arrays, aber ich glaube nicht, dass Sie können beziehen sich auf eine Scheibe, wie x(:,2:,1:N3:2) so leicht wie in Fortran. Dies ermöglicht eine express einige algorithmen, die ziemlich prägnant.
Den Komfort von Fortran ' s array-Operationen erweitert, um arrays von abgeleiteten Typen. Angenommen, Sie haben ein array von Datumsangaben:
Typ Datum
integer :: Tag,Monat,Jahr
Ende geben Sie das Datum
type(Datum) :: x(1000)
Dann x bezieht sich auf das array der Daten, x%Monat bezieht sich auf die Reihe von Monaten, und pack(x,x%im Monat==1) bezieht sich auf alle Termine im Januar. Wie viele andere Programmiersprachen bieten diesen Komfort?
Einige der früheren Kommentare über Fortran -- "alt und ekelhaft" -- voreingenommen und sollte nicht diskontiert werden entsprechend. Lassen Sie mich behaupten das Gegenteil. Meiner Meinung nach sind die freien format von Fortran 90-sieht besser aus als die syntax von C und C++, mit den geschweiften Klammern und Semikolons. Verlassen Sie sich oder falsch, indem man Sie in kann die Ursache für Fehler in C und C++, die keine Entsprechung in Fortran.
InformationsquelleAutor der Antwort Fortranner
Fortran wurde hoch optimiert für mathematische (insbesondere matrix), wie Operationen.
C++ wurde hoch optimiert für die objektnutzung.
Was Ihnen wichtiger ist.
Wie bereits unter C++ hat eine optimierte matrix-Bibliothek.
Aber Fortran ist der ganze Zweck ist die Optimierung von mathematischen Verfahren (insbesondere matrix-Operationen). Die Tatsache, dass diese Optimierungen eingebaut sind das Fundament der Sprache "(statt "Bibliothek") und haben über zwei Jahrzehnt Vorsprung auf die Forschung über C++ bezweifle ich (aber nicht wissen, für eine Tatsache), dass in diesem Bereich Fortran ist zu gewinnen, Hände nach unten.
InformationsquelleAutor der Antwort Martin York
Vorteile von fortran95 und oben über c++(2003):
kurz gesagt, wenn Ihr Programm oder die Anwendung, ist die rein wissenschaftliche Berechnung verwenden fortran 95 und höher, wenn die Berechnung einige Nummern ist nur Teil der Geschichte mit C++ (oder was auch immer u das Gefühl ist besser)
InformationsquelleAutor der Antwort fedvasu
Meine Erfahrung mit Fortran ist, dass es leicht zu erlernen, sauber (wird stark modularisiert), und somit gut geeignet, um einen nicht-Programmierer, dessen Hauptanliegen ist dabei hochoptimierte numerische Berechnungen. Obwohl gleich-Optimierung durchgeführt werden können, in c++ (vielleicht sogar in einem größeren Ausmaß), dauert es eine Menge des instrinsic-Verständnis, um diese Ebene von Optimierungen. Wenn es um matrix-Berechnungen, out-of-the-box-einen Fortran-compiler normalerweise aus-führen Sie ein c++ - compiler. Ich würde auch hinzufügen, dass die Fortran-keywords sind speziell entwickelt, um die Programmierer zu quetschen mehr Leistung aus einer numerischen routine. C++ hat das auch, aber nicht in dem Ausmaß Fortran tut.
Ein weiterer Vorteil ist, dass Fortran ist nicht Betriebssystem-oder Architektur-spezifisch. In anderen Worten: der Fortran-code, den Sie schreiben, auf ein Betriebssystem oder Architektur sollte leicht Anschluss zu anderen, wo es einen Fortran-compiler.
Ein weiterer Vorteil ist, dass die moderne Programmiersprache Fortran ist normalerweise abwärtskompatibel mit älteren code-Grundlagen von Fortran. Und die code-Basis, die gebaut wurde, im Laufe der Jahre in Fortran ist die sehr große und sehr anspruchsvolle (meist Wissenschaftler und Mathematiker).
Auch persönlich, ich wirklich genossen die integrierte Datei-handling-Funktionen, die es ermöglichen, eine zu Lesen, eine Datei mit Daten und Operationen auf es fast sofort. Viele der integrierten Funktionen in Fortran sind so konzipiert, dass diese Bequemlichkeit. C++ bietet die wesentlichen Bausteine, um dies zu tun, und dies erfordert ein wenig Schwitzen, nur zum Lesen einer Datendatei b/c, die Sie benötigen, zu wissen, etwas über Trennzeichen (wo Fortran ermöglicht Ihnen die Angabe der Trennzeichen).
Über diese kann ich keine Vorteile. Die meisten alles andere wäre string-Manipulationen oder Algorithmische Vorgänge, die c++ als Sprache, und im Allgemeinen ist es am Compiler, die besser geeignet sind und meistens besser. Einen guten kompetenten Programmierer wird wahrscheinlich lieber c++, wie Sie/er möchte verstehen, wie zu optimieren, eine numerische routine in einer Weise, die könnten wahrscheinlich eine bessere Leistung als ein Fortran kompiliert routine. Außerdem werden gute zuverlässige Fortran Compiler sind nicht so leicht zu bekommen, als gute zuverlässige C++ - Compiler.
InformationsquelleAutor der Antwort
Ich bin neu in der Programmierung.Ich programmiere im Bereich der finite-Elemente-für etwa ein Jahr. Nach einiger recherche im Netz entschied ich mich für fortran 2003.Ich lernte Programmieren in der modularen Stil in etwa zehn Tagen durch das Studium der Chapman-Buch. Es ist ein Jahr und ich geschrieben haben über vier Tausende von code-Zeilen in modularer Form(wartbar,wiederverwendbar und ordentlich codes) und nicht jeder Charakter-variable an alle. Ich glaube nicht, dass durch das Studium C++,matlab,python,java, ... für zehn Tage würden Sie in der Lage sein, zu schreiben, die numerische codes, die so effizient wie in fortran. fortran 2003 hat auch alle notwendigen OOP-Fähigkeiten, die ich lernen jetzt.
So in Bezug auf Sprache, Stärke in der numerischen Aspekt fortan kein Mangel an irgendetwas(modular-Stil,OOP-Stil,leistungsstarke array-Funktionen,leistungsstarken Bibliotheken, freien und kommerziellen bis zu datiert Compiler,sehr einfach zu erlernen, sehr effizient ...). Sprachen wie python/numpy hat die meisten dieser Fähigkeiten, aber die mangelnde Effizienz. Sprachen wie C++ hat auch die meisten der Funktionen von fortran(obwohl der array-Berechnung, die den Kern der numerischen Berechnung müssen Sie den import von Bibliotheken!!), aber vielleicht ein Programm, geschrieben von jemanden wie mich, der in fortran effizienter wäre, als eine schriftliche, die durch einige c++ - Programmierer mit 10+ Jahren Erfahrung.
Endlich, ich kann meine schweren numerische Berechnungen in fortran(modular oder OOP-format), und die Verwendung von python\numpy für kleine Berechnungen(z.B. zur Erstellung von plots,klein-array-Berechnungen,... ).
InformationsquelleAutor der Antwort user1591744
Angesichts der Existenz des scientific computing-Pakete wie LAPACK++, die sind stark optimiert, schon, modern Fortran nicht einmal einen performance-Vorteil. C++ kann seine Fehler, aber die Leistung ist nicht einer von Ihnen.
InformationsquelleAutor der Antwort Daniel Gallagher
IMHO der einzige Vorteil, der wirklich zählt, ist, dass FORTRAN Programmierung erlaubt eine einfachere Wiederverwendung einer Menge von bestehenden FORTRAN-code und-Bibliotheken. Und wenn Sie über 50 FORTRAN-Programmierer bei der hand für ein Projekt und einen begrenzten Zeitraum, gehen Sie zuerst zu lehren Sie alle C++ -, oder Sie akzeptieren, lassen Sie Sie verwenden Ihre Lieblings Sprache?
InformationsquelleAutor der Antwort Doc Brown
Mit der Entstehung der template-meta-Programmierung (vor allem expression templates), C++ und FORTRAN erreicht die Liga in numerischen Berechnungen, so Geschwindigkeit sollte nicht das Thema sein mehr. Es gibt jedoch noch einige Dinge zu sagen über andere Themen:
Pro FORTRAN: Die älteren Leute vielleicht wissen es besser als C++.
Contra FORTRAN: Es ist ekelhaft, alt und meist aufgegeben, die Sprache, das ist schon veraltet der Augenblick, in dem Ihr starten Ihr Projekt. Wer lernt Programmieren jetzt ist sehr unwahrscheinlich, zu lernen, FORTRAN, so dass Sie vielleicht in Probleme bei der Suche nach Programmierern für das Projekt später.
Pro C++: Es ist relativ modern, mit Compilern noch zu verbessern, erhebliche Fortschritte. Es ermöglicht Ihnen zu schreiben sehr ausdrucksstark code.
Contra C++: Einige Vorlage Fehlermeldungen wird machen Sie Weinen.
InformationsquelleAutor der Antwort sbi