Frage

Ich habe 77 mit vieler Fortran gearbeitet in letzter Zeit, und obwohl ich Vorbehalte auf dem ersten hatte ich jetzt einige großen Qualitäten der Sprache sehen. Es ist:

  • Einfach zu erlernen (keine objektorientierte oder Funktions-Programmierung Komplikationen)
  • Leicht zu lesen
  • Blazing schnell an Zahl-Knirschen

sind solche Qualitäten natürlich attraktiv für Nicht-Programmierer Ingenieure und Wissenschaftler, die nur eine Art und Weise wollen eine Computer geben Antworten schnell zu machen. Aber es hat eine Menge von Einschränkungen basierend auf sein Alter und einige ihrer Grundannahmen. Ich bin skeptisch, wie leicht Nicht-Programmierer einige der zusätzlichen Funktionen von späteren Versionen von Fortran verstehen kann, wie gut.

Gibt es eine moderne Sprache, die so einfach wie Fortran ist, genauso schnell für mathematische Anwendungen und weniger beschränkt? Oder ist die Antwort Fortran 90, 95, 2003. . . ?

War es hilfreich?

Lösung

  

Oder ist die Antwort Fortran 90, 95, 2003   . . . ?

Ja. Fortran 95 von den meisten Compilern unterstützt wird, ist die Sprache, die Sie suchen. Allerdings Fortran 2003 hat einige wichtige Verbesserungen (außer unnötig aus Ihrer Sicht Unterstützung von OOP), die nützlich sein könnten. Compiler Unterstützung für die Fortran 2003 Standard .

Andere Tipps

Nun, ich bin ein Nicht-Programmierer Ingenieur (was immer das bedeutet, entnehme ich, es bedeutet nicht viel Kontakt mit Informatik Studien haben) und ...

partically in Fortsetzung JasonFruit Kommentar auf S. Lott Antwort:

Ja, der Standard hinzugefügt schon einige Merkmale von F90 bis 2003. Aber das „Problem“, wenn man das so nennen kann es so (ich nicht zu einem passenderes Wort denkt oder Pflege kann) sind, dass viele Menschen, die Fortran verwenden nicht wissen es, speichern sie die grundlegenden Funktionen, die sie benötigen. Es ist ein Segen und ein Fluch alles in einem, in einer Art und Weise. Sie haben es nie gelernt, nie ein Buch darüber lesen - sie irgendwie nahm sie nur auf, als sie gingen zusammen. Auf diese Weise kann sicherlich eine Zeit lang arbeiten (wenn Sie Ihre Programme strukturieren einfach, so viele Jahrhunderte lang getan hat, und haben eine Art geistiger Disziplin, dieser Ansatz kann ein Leben lang / Ihre gesamte Karriere dauern), aber nach einer Weile beginnt um zu zeigen, seine disadvanages. Versuchen Sie zum Beispiel folgend einige der Diskussionen über die jüngsten Features auf comp.lang.fortran Ihr Wissen zu testen.

Also, nehmen Sie ein gutes Buch (viele einen der drei empfehlen für Anfänger; a) Chapman J. Stephens b) Maine, oder c) Metcalf, Reid und Cohen (bekannt als das "MRC Buch") - nach dem einem viele der „Unbekannten“ Funktionen, die nicht nur klarer, sondern auch „offensichtlich“ (wie in einer Art und Weise,? das ist wirklich die bessere Weg - warum habe ich es so tat ... vor ).

Das kümmert sich um diese Frage. Nun ist die andere Frage - die certanly entstehen - ist Fortran wert Lernen heutzutage? ( es immer tut, vertrauen Sie mir auf diesem:) . Dies wurde mehrfach abgedeckt, so dass ich nur auf meine eigene Post die oben in Bezug auf, und

Ich bin überrascht, dass der Konsens hier für moderne Fortran ist, und ich stimme zähneknirschend.

Was auch immer seine Schwächen, ist Fortran die einzige Sprache, da draußen für wissenschaftliche Programmierung explizit ausgeführt ist. Wissenschaftliche Programmierung ist sowohl subtiler (pro Zeile) und weniger kompliziert (im Aufbau) als, sagen wir, einem Web-Server, und es braucht nur verschiedene Werkzeuge. Garbage Collection, zum Beispiel, ist so gut wie nie nützlich für die Lösung groß 2D / 3D PDEs wo Ihre primären Datenstrukturen festgelegt.

Jede Programmiersprache, die nicht einmal Multi-d-Arrays als First-Class-Objekte hat für wissenschaftliche Programmierung entlassen sofort. und das ist alles, die C-basierten Sprachen. Alle, die Programmiersprache ist von Natur aus Gott schrecklich langsam - Java, ich bin, das Sie - können sofort entlassen werden. Jede Programmiersprache, die proprietären und erfordert Tausende von Dollar an Lizenzgebühren - Matlab -. Sofort entlassen werden kann

Python und verwandte Sprachen sind gut für das Prototyping und Plotten ist einfach, und wenn man einmal arbeiten bekommt Dinge können die numerischen Kerne in kompilierten Sprachen für Geschwindigkeit schreiben; aber es leidet wieder aus dem Mangel an echten Arrays (Numpy ist gut, aber nicht gut) und es ist s..l..o..w.

Übrigens - nicht immer von den Numerical Recipes Bücher. Sie sind Mist, die Algorithmen sind sie aktuell aufschlagen und die Codebereiche von den Armen zu Unrecht. Nehmen Sie eine echte numerische Algorithmen Kurs - dort auf der Linie gute ist - oder eine echte numerische Algorithmen Buch kaufen - und für die Liebe Gottes Geben Sie nicht aus einem Buch in Code der linearen Algebra zu tun, oder was auch immer; verwenden, um die Myriaden von real, professioneller Qualität Bibliotheken da draußen.

Für die direkte Antwort auf Ihre Frage, ich denke, dass die kemiisto 's Antwort ist richtig, mit Fotos von Idigas .

Das heißt, ich habe mehr meiner numerischen Code in Kontakt zu kommen mit Dingen wie FTP, Web, und näher an Grafiken gefunden. Ich habe gesehen, MATLAB in einer anderen Antwort vorgeschlagen, aber ich habe immer mehr Python (mit NumPy) und rufe zu Fortran zu schreiben, als ich die Geschwindigkeit benötigen. Ich würde mit ziemlicher Sicherheit nicht ein ganzes System (zum Beispiel eines ganzes numerischen Wettervorhersagemodell) auf diese Weise schreiben, aber es erlaubt ich, das Beste aus beiden Welten zu haben in vielerlei Hinsicht.

Oder ist die Antwort Fortran 90, 95, 2003. . . ? Ja. Für Scientific Computing, Fortran> = 90 beseitigt die Beschränkungen von Fortran 77. Erfahren Sie, wie zuweisbaren Arrays verwenden dynamisch ansehnliche Arrays zu haben. Erfahren Sie, wie Module verwenden, um Ihre Verfahren und Variablen zu organisieren - und einfach automatische Konsistenz sorgt zwischen dem tatsächlichen und Dummy-Argumenten zu prüfen. Ausgehend von Fortran 77, können Sie nach und nach lernen, Fortran 90/95/2003, mit je nachdem, welche Funktionen für Sie nützlich zu sein scheinen. Sie müssen nicht die OO-Features erfahren und den Teil der Sprache ignorieren kann, bis vielleicht eines Tages es Dienstprogramm bietet.

Ich empfehle die Metcalf, Reid und Cohen Buch.

Sie können in MATLAB suchen. Viele Ingenieure Studenten lernen, dass so ich denke, es ist einfach für Nicht-Programmierer zu grok.

Wenn Sie hardcore erhalten möchten, werfen Sie einen Blick auf J .

Ich denke 95 Fortran sollte Ihre Wahl sein es moderner aussieht und sich Fortran 77 ganz erheblich. Der Fortran 2003-Standard nicht vollständig von den meisten Compilern unterstützt. Der große Vorteil von Fortran ist, dass es eine optimierte Unterprogramm für jedes mathematische Problem ist (wie Wurzelfindung, Matrixmultiplikation, Eigenwertprobleme, etc.). Andere Leute erwähnten Legacy-Bibliotheken und lapack ist nur ein sehr eindrucksvolles Beispiel. Ein wesentlicher Nachteil von Fortran ist, dass niemand sie in der realen Welt verwendet.

Das beste Buch, um ist, ist meiner Meinung nach „Fortran 90/95 für Wissenschaftler und Ingenieure“.

Natürlich sind alle anderen Vorschläge sind gültig, aber Matlab ist nicht frei, während Fortran ist.

Python ist kostenlos und hat Unterstützung für viele wissenschaftliche Anwendungen durch zusätzliche Pakete wie Numpy und Scipy. Python ist jedoch recht langsam, wenn es um numerische Leistung kommt. Es ist wahrscheinlich eine gute Option für kleine Projekte, die nicht viel Rechenleistung erfordern. Die Syntax ist sehr einfach zu verstehen.

C ist natürlich auch eine kostenlose Option und hat eine Menge (ständig aktualisiert) wissenschaftlichen Bibliotheken zur Verfügung. Wenn es jedoch um die Lesbarkeit kommt, kann es nicht Fortran schlagen. Fortran ist gut aufgestellt, um die Arbeit mit Vektoren und Matrizen.

C ++ ist eine Obermenge von C, so dass es auf jeden Fall auch eine mögliche Wahl. Es ist jedoch eine Sprache, die für die Probleme zu komplex sein könnte, dass Sie gerade sehen. Die Anzahl der wissenschaftlichen C ++ Bibliotheken ist eher begrenzt. Es gibt einige um, aber sie können nicht die Fortran-Versionen schlagen (oder sind nur Wrapper von denen). Es ist wahrscheinlich eine sehr gute Option für sehr große Projekte, aber einige sehr große Programme, die in Fortran geschrieben werden auf der weltweit schnellsten Computer laufen. C ++ ist auf jeden Fall lohnt Lernen, da es für eine große Anzahl von realen Anwendungen verwendet wird.

Es gibt natürlich auch andere Sprachen oder Werkzeuge, aber ich denke, diese über wissenschaftliche Disziplinen die am häufigsten verwendet werden.

Wenn Sie wirklich begeistert sind über Fortran verwenden, könnte man prüfen, mit Fortran für Microsoft.NET . Die Idee hinter diesem Projekt ist, dass es die Fortran Sprache verwenden können, während die Vorteile einer mangaged Code-Umgebung über die Common Language Runtime unter (CLR).

@ S.Lott: Kann nicht Fortran Benutzer vorstellen, wie Wissenschaftler, mit wechseln und Dump alle ihre Fortran Arbeit .....: S Das OP sucht Eingang auf, was neu ist ...

Zum OP: Haben Sie lesen Sie auf Wikipedia , welche die Änderungen an Fortran gearbeitete Details, für 2003-Version, ermöglicht die Interoperabilität mit C, vielleicht tut S.Lott einen Punkt hat, vielleicht, Stück für Stück, sanft Port ein paar Sachen über oder einen Wrapper in C schreiben, um die Fortran-Module zu nennen? Ich werde zitiert aus, dass Wikipedia-Seite ...

  

Die Interoperabilität mit der Programmiersprache C.

Ich habe vor kurzem mit vielen Matlab gearbeitet, und ich kann es die Vorteile von heute sehe. Ja ist, ist langsam, weil es eine interpretierte Sprache ist, aber es ist Matrix-Algorithmen sind schnell. Und Ich mag es genau wegen dieses Verhaltens. Die Langsamkeit der for-Schleifen und die Leistung der Matrix-Operationen fördern Sie in einer mathematischen Weise zu denken, anstatt zu Schleife orientierten Programmierung kleben. Aber ich kann bestätigen, dass Matlab entlassen werden kann, weil es nicht offen ist.

Zur Zeit freue ich mich auf die Julia Sprache. Es ist stark von Matlab inspiriert, außer dass es schnell sein will. Auch sie hat statische Typen, die auch ein sehr großer Vorteil. Aber Julia ist noch sehr jung, also nicht erwarten, dass bereits alle Ihre Anforderungen nicht erfüllt.

  

Einfach zu erlernen (keine objektorientierte oder Funktions-Programmierung Komplikationen)

     

Leicht zu lesen

     

Blazing schnell an Zahl-Knirschen

Sounds wie C.

Kaufen Numerical Recipes in C Dass so ziemlich deckt alle Basen in einem klaren, lesbaren Stil.

http://www.amazon.com/Numerical-Recipes-Art-Scientific -Computing / dp / 0521431085

Ich nehme an, Sie erwägen, kleine, geschrieben spezielle Programme spezifische Probleme zu lösen. In diesem Fall, wenn die Komplexität des OO Dich wirklich gestört würde ich nur eine C # oder Java-Anwendung schreiben und nicht OO verwenden. Visual Basic sollte verdammt schnell sein in diesen Tagen auch.

Fast alle kompilierten Sprachen werden in diesen Tagen mathematisch schnell sein, alle Operationen auf dem mathematischen Co-Prozessor durchgeführt werden - so, wenn Sie einige Sprache gefunden haben, besonders zu fehlen würde ich keine Sprachen lassen „math speed“ stört mich viel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top