Warum keine fortran Standardbibliothek?


10

Um eine Sprache zu sein, die sich auf Mathematik und wissenschaftliches Rechnen konzentriert, bin ich immer wieder verblüfft über den völligen Mangel an nützlichen mathematischen Routinen in der Fortran-Standardbibliothek. Man würde erwarten, dass es zumindest mit einer Routine zur Berechnung der Standardabweichung und des Mittelwerts ausgeliefert wird, aber dies ist nicht der Fall. Insbesondere mit der Einführung von Fortran 90 und der Hinzufügung von Modulen (wodurch die Verschmutzung des Namespace verringert wird) sehe ich keinen Grund für diesen kritischen Mangel an Diensten.

Ich würde gerne Ihr Wissen darüber hören, warum dies der Fall ist.


Es ist 20 Jahre her, seit ich fortran verwendet habe, und in jenen Tagen habe ich nicht so sehr darauf geachtet, was die Standards besagten, dass ich nur das verwendet habe, was zufällig auf den Maschinen war. Ich stellte fest, dass die Anzahl der verfügbaren mathematischen Bibliotheken auf den von mir verwendeten Maschinen sehr groß und konsistent war. Ich frage mich, ob dies daran liegt, dass die Bibliotheken zwar nicht Standard sind, aber allgegenwärtig sind. (Ich habe keine Ahnung, dass das eine Frage ist).
Martin York

Antworten:


17

Als FORTRAN entwickelt wurde, gab es keine Portabilität von Code. Es war absolut Routine für den FORTRAN-Compiler auf einem Computer, eine etwas andere Sprache zu akzeptieren als der Compiler auf einem anderen Computer. Die häufigste Variante war die Namenslänge. Der IBM 1130 FORTRAN erlaubte fünf Zeichen, der DEC-10 sechs, der CDC 6600 (meine erste Maschine, meine erste echte Assemblersprache) sieben. Die Sprache erforderte dreidimensionale Arrays. Mindestens ein Minicomputer (Varian 76?) FORTRAN erlaubte siebendimensionale Arrays.

Unternehmen haben ihre FORTRAN-Sprachen routinemäßig erweitert, um ihre Maschinen für Kunden attraktiver zu machen, und obwohl die Erweiterungen ähnliche Funktionen bieten könnten, waren sie nie identisch. Viele Compiler stellten Erweiterungen für die Datei-E / A- und Overlay-Verwaltung bereit und waren nie identisch. Manchmal waren sie nicht einmal in der Nähe.

FORTRAN-FORTRAN-Konvertierungen, bei denen ein Programm von einer Maschine auf eine andere portiert wurde, waren eine sehr geschäftige Heimindustrie, und die Leute, die das konnten, konnten immer Arbeit finden. (Ich habe zwei solcher Konvertierungen durchgeführt: Ich habe geholfen, das ursprüngliche "Star Trek" -Spiel von Matuszek-Reynolds-McGehearty-Cohen vom CDC 6600 auf den DEC-10 zu portieren, und ich habe ein EKG-Analyseprogramm von Varian 76 auf TI 990 portiert. Nr. Zwei solche Projekte waren identisch.)

Diese Art von Dingen machte es sehr, sehr schwierig, "Standard" -Bibliotheken bereitzustellen, obwohl einige Leute es versuchten. Die IMSL-Bibliothek war die größte, wurde jedoch in Quellcodeform ausgeliefert, und der Kunde musste sie auf seinem System zum Laufen bringen.

Außerdem: Von FORTRAN-Programmierern wurde ein angemessener Hintergrund in numerischen Methoden erwartet. Nahezu jeder FORTRAN-Programmierer auf dem Planeten lernte damals, wie man als Hausaufgabe Mittelwert und Standardabweichung für sich selbst macht. Jeder FORTRAN-Programmierer lernte in der Schule Halbierung und Newton-Raphson-Iteration (heutzutage als "Newton-Methode" bezeichnet). Runge-Kutta-Methoden wurden normalerweise auswendig gelehrt, und zu dieser Zeit waren Runge-Kutta-Integratoren 6. Ordnung Lehrbuchbeispiele. (Es war viel später, als die Leute herausfanden, dass Runge-Kutta 4. Ordnung der "Sweet Spot" auf der Kosten-Nutzen-Kurve war.)

Und: Programmierer haben selten Computer gewechselt, ohne auch Jobs zu wechseln. Von den Programmierern, die sich bewegten, wurde erwartet UND ERFORDERLICH, dass sie sehr gut lernen, wie die neuen Systeme funktionieren, und die Unterschiede aufgreifen.

In dieser Umgebung wird es kaum einen "Standard" -STDDEV-Code geben, wenn es etwas war, das jeder kompetente FORTRAN-Einsteigerprogrammierer im Schlaf schreiben konnte.


> Außerdem: Von FORTRAN-Programmierern wurde erwartet, dass sie einen vernünftigen Hintergrund in numerischen Methoden haben - im Gegensatz zu heute, wo es den Anschein hat, als
ob

3
Jeder benutzte sowieso NAG
Martin Beckett

1
@ MartinBeckett: Das war lange vor NAG.
John R. Strohm

1
@Rook, ich fürchte, Sie sind dazu bestimmt, schrecklich enttäuscht zu sein.
John R. Strohm

1
@Rook Ich kann sie definitiv machen, aber ich habe keine Ahnung, dass ich sie beim ersten Versuch effizient und numerisch stabil machen würde.
Ixrec

2

Persönlich denke ich, dass diese Tatsache auf die MKL- Bibliothek zurückzuführen ist. Wenn Sie nach einer leistungsstarken Mathematikbibliothek suchen, ist MKL genau das Richtige für Sie. Es ist nicht so teuer, und ein Labor, das in seinen Projekten mathematische Berechnungen durchführt, kann es sich leisten.


Würde es Ihnen etwas ausmachen, dies genauer zu erklären - wie und warum beantwortet es die gestellte Frage? "Nur-Link-Antworten" sind bei Stack Exchange
Mücke

1

cernlib hat viel getan, was Sie für Leute verlangen, die in der Hochenergiephysik arbeiten, und es ist immer noch nützlich.


0

BLAS und LAPACK sind de facto Standard-Fortran-Bibliotheken.


-1

Die FORmulaTRANslation-Sprache wurde entwickelt, um Ihnen das Schreiben eigener Formeln zu erleichtern. Warum sollte Fortran eine mittlere Funktion definieren, wenn Sie ab Fortran 90 schreiben können?

xmean = Summe (x) / max (Größe (x), 1)?


3
Sie gehen davon aus, dass das Array x voller Werte ist. Dies ist normalerweise eine sehr schlechte Annahme.
John R. Strohm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.