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.
language-features
fortran
Stefano Borini
źródło
źródło
Odpowiedzi:
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.
źródło
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ć.
źródło
cernlib zrobił wiele z tego, o co prosisz, dla osób pracujących w fizyce wysokoenergetycznej i nadal jest to przydatne.
źródło
BLAS i LAPACK są de facto standardowymi bibliotekami Fortrana.
źródło
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