Ich fange an, Fortran zu lernen, ausgehend von einem C++/Matlab/Java-Hintergrund. Mir ist klar, dass einige Fortran-Programmierer immer noch an F77 festhalten, vielleicht weil sie Objektorientierung, Namensräume und ähnliches nicht mögen und an die alte Syntax gewöhnt sind.Wie können Fortran 77-Programmierer ohne dynamische Speicherzuweisung auskommen?
Ich verstehe, dass Sie ein Programm ohne OOP schreiben können. Was ich nicht verstehe, ist, wie Sie ohne dynamisches Speichermanagement auskommen. Es gibt tausend Beispiele für Fälle, in denen Sie die Array-Größen nicht im Voraus kennen - zum Beispiel wenn Sie eine vollständige Matrix in eine spärliche Matrix konvertieren.
Natürlich bietet der moderne Fortran sowohl "automatische Arrays" als auch "zuweisbare Arrays". Aber diese waren 1977 nicht vorhanden. Wie kommen die F77-Leute ohne diese Konstrukte zurecht?
FORTRAN 77 wurde/wird vorwiegend für das wissenschaftliche Rechnen verwendet, bei dem einige ausgewählte Ausgangsbedingungen (z. B. ein Feld fester Größe) über einen längeren Zeitraum entwickelt werden, Daten ausschreibend. Es gibt keine Benutzereingabe während des Laufs und Sie wissen genau, wie groß Ihre Arrays sein müssen. Teil des Grundes, warum Fortran-Code oft als effizienter bezeichnet wird. –
Ein Ansatz besteht darin, ein einzelnes großes Array (Arbeitsbereich) zu deklarieren und dann ganzzahlige Indizes zu verwenden, um dieses in Abschnitte unterschiedlicher Größe zu unterteilen. (Ich habe nicht mit f77 gearbeitet, also bin ich mir nicht sicher, wie häufig dieser Ansatz in Wirklichkeit wäre). –
@Ed Smith Nun, es gibt sicherlich viele Anwendungen im wissenschaftlichen Rechnen mit festen Größen (z. B. numerische lineare Algebra), aber auch viele mit unbekannter Größe (unstrukturierte Vernetzung, Zeitintegration mit variabler Schrittlänge, dünn besetzte Matrizen usw.) – akvilas