Dlaczego nie ma standardowej biblioteki fortran?

10

Aby być językiem skoncentrowanym na matematyce i obliczeniach naukowych, zawsze zaskakuje mnie całkowity brak przydatnych procedur matematycznych w standardowej bibliotece Fortrana. Można by się spodziewać, że zostanie on wysłany przynajmniej z procedurą rutynową do obliczenia odchylenia standardowego i średniej, ale tak nie jest. W szczególności wraz z wprowadzeniem Fortran 90 i dodaniem modułów (zmniejszając w ten sposób zanieczyszczenie przestrzeni nazw), nie widzę powodu, dla którego ten krytyczny brak usług.

Chciałbym usłyszeć twoją wiedzę na temat tego, dlaczego tak jest.

Stefano Borini
źródło
Minęło 20 lat, odkąd korzystałem z fortranu. W tamtych czasach nie przywiązywałem zbytniej wagi do tego, co mówią standardy, że użyłem tego, co się stało na maszynach. Odkryłem, że ilość bibliotek matematycznych, które były dostępne, była ogromna i spójna na wszystkich używanych przeze mnie maszynach. Zastanawiam się, czy to dlatego, że choć biblioteki nie są standardowe, czy są wszechobecne? (Nie mam pojęcia, że ​​to pytanie).
Martin York

Odpowiedzi:

17

Kiedy opracowywano FORTRAN, nie było czegoś takiego jak przenośność kodu. Kompilator FORTRAN na jednym komputerze był absolutnie rutyną, aby zaakceptować nieco inny język niż kompilator na innym komputerze. Najczęstszą odmianą była długość nazwy. IBM 1130 FORTRAN dopuszczał pięć znaków, DEC-10 dopuszczał sześć, CDC 6600 (moja pierwsza maszyna, mój pierwszy prawdziwy język asemblera) pozwalał na siedem. Język wymagał trójwymiarowych tablic; co najmniej jeden minikomputer (Varian 76?) FORTRAN dopuszczał tablice siedmiowymiarowe.

Firmy rutynowo rozszerzały swoje języki FORTRAN, aby ich maszyny były bardziej atrakcyjne dla klientów, i chociaż rozszerzenia mogły zapewniać podobną funkcjonalność, nigdy nie były identyczne. Wiele kompilatorów zapewniało rozszerzenia do wykonywania operacji we / wy plików i zarządzania nakładkami i nigdy nie były one identyczne. Czasami nawet nie byli blisko.

Konwersje FORTRAN-na-FORTRAN, przenoszące program z jednej maszyny na drugą, były bardzo pracowitym przemysłem chałupniczym, a ludzie, którzy mogli to zrobić, zawsze mogli znaleźć pracę. (Przeprowadziłem dwie takie konwersje: pomogłem przenieść oryginalną grę Matuszek-Reynolds-McGehearty-Cohen „Star Trek” z CDC 6600 na DEC-10 i przeniosłem program do analizy EKG z Varian 76 na TI 990. Brak dwóch takie projekty były identyczne).

To sprawiło, że bardzo, bardzo trudno było zapewnić „standardowe” biblioteki, chociaż kilka osób próbowało. Biblioteka IMSL była największa, ale została dostarczona w formie kodu źródłowego, a klient musiał uruchomić ją w swoim systemie.

Ponadto: oczekiwano, że programiści FORTRAN będą mieli odpowiednie podstawy w zakresie metod numerycznych. Prawie każdy programista FORTRAN na świecie w tamtych czasach nauczył się robić dla siebie średnie i standardowe odchylenie jako zadanie domowe. Każdy programista FORTRAN nauczył się bisekcji i iteracji Newtona-Raphsona (obecnie nazywanej „Metodą Newtona”) w szkole. Metody Runge-Kutta były nauczane, zwykle przez rote, a wówczas integratory Runge-Kutta 6. rzędu były podręcznikowymi przykładami. (Było znacznie później, gdy ludzie zorientowali się, że Runge-Kutta czwartego rzędu było „ulubionym miejscem” na krzywej efektywności kosztów).

I: programiści RZADKO zmieniali komputery, nie zmieniając również zadań. Od programistów, którzy się poruszali, oczekiwano I WYMAGANO, że będą bardzo dobrzy w nauce działania nowych systemów i dostrzeganiu różnic.

W tym środowisku będzie bardzo mało wezwania do „standardowego” kodu STDDEV, gdy będzie to coś, co każdy kompetentny programista FORTRAN na poziomie podstawowym mógłby napisać we śnie.

John R. Strohm
źródło
> Ponadto: od programistów FORTRAN oczekiwano odpowiedniego doświadczenia w zakresie metod numerycznych - w przeciwieństwie do dzisiejszych
czasów,
3
W każdym razie wszyscy używali NAG
Martin Beckett,
1
@MartinBeckett: To było na długo przed NAG.
John R. Strohm,
1
@Rook, obawiam się, że jesteś strasznie rozczarowany.
John R. Strohm,
1
@Rook Zdecydowanie mogę to zrobić, ale nie mam pojęcia, że ​​wykonam je w sposób wydajny i stabilny numerycznie przy pierwszej próbie.
Ixrec,
2

Osobiście uważam ten fakt ze względu na bibliotekę MKL . Jeśli szukasz wysokowydajnej biblioteki matematycznej, to MKL jest tym, czego potrzebujesz. To nie jest tak drogie, a laboratorium, które wykonuje obliczenia matematyczne w swoich projektach, może sobie na to pozwolić.

Sorantis
źródło
czy mógłbyś wyjaśnić to bardziej szczegółowo - jak i dlaczego odpowiada na zadane pytanie? „Tylko odpowiedzi” nie są mile widziane na Stack Exchange
gnat
1

cernlib zrobił wiele z tego, o co prosisz, dla osób pracujących w fizyce wysokoenergetycznej i nadal jest to przydatne.

Benjamin Bannier
źródło
0

BLAS i LAPACK są de facto standardowymi bibliotekami Fortrana.

quant_dev
źródło
-1

Język FORmulaTRANslation został zaprojektowany, aby ułatwić pisanie własnych formuł. Dlaczego Fortran powinien definiować średnią funkcję, skoro można pisać w Fortran 90 i nowszych

xmean = suma (x) / max (rozmiar (x), 1)?


źródło
3
Zakładasz, że tablica x jest pełna wartości. Jest to zazwyczaj bardzo złe założenie.
John R. Strohm,