Pourquoi pas de bibliothèque standard fortran?


10

Pour être un langage axé sur les mathématiques et l'informatique scientifique, je suis toujours déconcerté par le manque total de routines mathématiques utiles dans la bibliothèque standard de Fortran. On pourrait s'attendre à ce qu'il soit expédié au moins avec une routine pour calculer l'écart type et la moyenne, mais ce n'est pas le cas. En particulier avec l'introduction de Fortran 90 et l'ajout de modules (réduisant ainsi la pollution de l'espace de noms), je ne vois aucune raison à ce manque critique de services.

J'aimerais savoir ce que vous en pensez.


Cela fait 20 ans que je n'utilise pas fortran et à cette époque, je ne prêtais pas autant d'attention à ce que les normes disaient, je viens d'utiliser ce qui se trouvait sur les machines. J'ai trouvé que la quantité de bibliothèques mathématiques disponibles était énorme et cohérente sur toutes les machines que j'utilisais. Je me demande si c'est parce que même si les bibliothèques ne sont pas standard, sont-elles omniprésentes? (Je n'ai aucune idée que c'est une question).
Martin York

Réponses:


17

À l'époque où FORTRAN a été développé, la portabilité du code n'existait pas. Il était absolument routinier que le compilateur FORTRAN sur une machine accepte un langage légèrement différent de celui du compilateur sur une autre machine. La variation la plus courante était la longueur du nom. L'IBM 1130 FORTRAN autorisait cinq caractères, le DEC-10 six, le CDC 6600 (ma première machine, mon premier véritable langage d'assemblage) sept. Les tableaux tridimensionnels étaient requis par le langage; au moins un mini-ordinateur (Varian 76?) FORTRAN a permis des tableaux à sept dimensions.

Les entreprises ont régulièrement étendu leurs langues FORTRAN pour rendre leurs machines plus attrayantes pour les clients et, bien que les extensions puissent fournir des fonctionnalités similaires, elles n'ont jamais été identiques. De nombreux compilateurs ont fourni des extensions pour effectuer les E / S de fichiers et la gestion des superpositions, et ils n'ont jamais été identiques. Parfois, ils n'étaient même pas proches.

Les conversions FORTRAN-FORTRAN, le transfert d'un programme d'une machine à une autre, étaient une industrie artisanale très occupée, et les gars qui pouvaient le faire pouvaient toujours trouver du travail. (J'ai travaillé deux de ces conversions: j'ai aidé à porter le jeu original "Star Trek" Matuszek-Reynolds-McGehearty-Cohen du CDC 6600 au DEC-10, et j'ai porté un programme d'analyse d'ECG de Varian 76 à TI 990. Pas deux ces projets étaient identiques.)

Ce genre de chose a rendu très, très difficile la fourniture de bibliothèques "standard", bien que quelques personnes aient essayé. La bibliothèque IMSL était la plus grande, mais elle était expédiée sous forme de code source, et le client devait la faire fonctionner sur son système.

Aussi: les programmeurs FORTRAN devaient avoir une formation raisonnable en méthodes numériques. À peu près tous les programmeurs FORTRAN de la planète à cette époque ont appris à faire pour eux-mêmes la moyenne et l'écart-type, comme devoir. Chaque programmeur FORTRAN a appris la bissection et l'itération de Newton-Raphson (aujourd'hui appelée "méthode de Newton") à l'école. Les méthodes Runge-Kutta ont été enseignées, généralement par cœur, et, à cette époque, les intégrateurs Runge-Kutta de 6e ordre étaient des exemples de manuels. (C'est bien plus tard que les gens ont compris que le Runge-Kutta de 4e ordre était le "point idéal" sur la courbe de rentabilité.)

Et: les programmeurs ont RAREMENT changé d'ordinateurs sans changer les tâches. Les programmeurs qui se sont déplacés étaient censés ET OBLIGATOIRES être très bons pour apprendre comment les nouveaux systèmes fonctionnaient et pour saisir les différences.

Dans cet environnement, il y aura très peu d'appel pour un code STDDEV "standard", alors que quelque chose que n'importe quel programmeur FORTRAN d'entrée de gamme compétent pourrait écrire pendant son sommeil.


> Aussi: les programmeurs FORTRAN devaient avoir une formation raisonnable en méthodes numériques - contrairement à aujourd'hui quand il semble que la première compétence des programmeurs est d'apprendre à utiliser google :-)
AndersK

3
Tout le monde a utilisé NAG quand même
Martin Beckett

1
@MartinBeckett: C'était bien avant NAG.
John R. Strohm

1
@Rook, je crains que vous ne deviez être horriblement déçu.
John R. Strohm

1
@Rook Je peux certainement les faire, mais je n'ai aucune idée que je les ferais de manière efficace et numériquement stable du premier coup.
Ixrec

2

Personnellement, je pense que ce fait est dû à la bibliothèque MKL . Si vous recherchez une bibliothèque de mathématiques hautes performances, MKL est ce dont vous avez besoin. Ce n'est pas si cher, et un laboratoire qui effectue des calculs mathématiques dans ses projets peut se le permettre.


Pourriez-vous expliquer cela plus en détail - comment et pourquoi répond-il à la question posée? Les «réponses de lien uniquement» ne sont pas tout à fait les bienvenues à Stack Exchange
gnat

1

cernlib a fait beaucoup de ce que vous demandez pour les personnes travaillant en physique des hautes énergies et c'est toujours utile.


0

BLAS et LAPACK sont des bibliothèques Fortran standard de facto.


-1

Le langage FORmulaTRANslation a été conçu pour vous permettre d'écrire facilement vos propres formules. Pourquoi Fortran devrait-il définir une fonction moyenne lorsque vous pouvez écrire dans Fortran 90 et après

xmean = somme (x) / max (taille (x), 1)?


3
Vous supposez que le tableau x est plein de valeurs. Il s'agit généralement d'une très mauvaise hypothèse.
John R. Strohm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.