Neden fortran standart kütüphanesi yok?


10

Matematik ve bilimsel hesaplamaya odaklanan bir dil olmak için, her zaman Fortran standart kütüphanesindeki yararlı matematiksel rutinlerin eksikliğinden şaşkına dönüyorum. Standart sapmayı ve ortalamayı hesaplamak için en azından bir rutinle gönderilmesi beklenebilir, ancak durum böyle değildir. Özellikle Fortran 90'ın piyasaya sürülmesi ve modüllerin eklenmesi (böylece ad alanı kirliliğinin azaltılması) ile, bu kritik hizmet eksikliğinin nedenini göremiyorum.

Bunun neden böyle olduğu hakkında bilginizi duymak isterim.


Fortran kullandığımdan bu yana 20 yıl geçti ve o günlerde standartların sadece makinelerde ne olduğunu kullandığımı söylediklerine çok dikkat etmedim. Mevcut olan matematiksel kütüphane miktarının kullandığım makineler arasında çok büyük ve tutarlı olduğunu gördüm. Bunun kütüphaneler standart olmasa da her yerde bulunmalarından mı kaynaklandığını merak ediyorum. (Bunun bir soru olduğu hakkında hiçbir fikrim yok).
Martin York

Yanıtlar:


17

FORTRAN geliştirildiğinde, kodun taşınabilirliği diye bir şey yoktu. Bir makinedeki FORTRAN derleyicisinin başka bir makinedeki derleyiciden biraz farklı bir dili kabul etmesi kesinlikle rutin bir işlemdi. En yaygın varyasyon isim uzunluğudur. IBM 1130 FORTRAN beş karaktere izin verdi, DEC-10 altıya izin verdi, CDC 6600 (ilk makinem, ilk gerçek montaj dilim) yedi izin verdi. Dil için üç boyutlu diziler gerekliydi; en az bir mini bilgisayar (Varian 76?) FORTRAN yedi boyutlu dizilere izin verdi.

Şirketler, makinelerini müşterileri için daha çekici hale getirmek için rutin olarak FORTRAN dillerini genişletti ve uzantılar benzer işlevsellik sağlayabilirken, asla aynı değildi. Birçok derleyici, dosya G / Ç ve yer paylaşımı yönetimi için uzantılar sağladı ve hiçbir zaman aynı değildi. Bazen yakın bile değildiler.

Bir programı bir makineden diğerine taşıyan FORTRAN-FORTRAN dönüşümleri çok yoğun bir yazlık endüstrisiydi ve bunu yapabilen çocuklar her zaman iş bulabilirler. (Bu tür iki dönüşüm çalıştım: CDC 6600'den DEC-10'a orijinal Matuszek-Reynolds-McGehearty-Cohen "Star Trek" oyununun taşınmasına yardımcı oldum ve Varian 76'dan TI 990'a bir EKG analiz programı taşıdım. bu tür projeler aynıydı.)

Bu tür şeyler, birkaç kişi denemesine rağmen "standart" kitaplıklar sağlamayı çok, çok zorlaştırdı. IMSL kütüphanesi en büyüğüdür, ancak kaynak kodu biçiminde gönderilmiştir ve müşterinin kendi sistemi üzerinde çalışmasını istemiştir.

Ayrıca: FORTRAN programcılarının sayısal yöntemlerde makul bir geçmişe sahip olması bekleniyordu. O günlerde gezegendeki hemen hemen her FORTRAN programcısı, bir ev ödevi olarak kendisi için ortalama ve standart sapmanın nasıl yapılacağını öğrendi. Her FORTRAN programcısı okulda ikiye ayırmayı ve Newton-Raphson yinelemesini (günümüzde "Newton'un Yöntemi" olarak adlandırılır) öğrendi. Runge-Kutta yöntemleri genellikle rote ile öğretildi ve o sırada 6. sıra Runge-Kutta entegratörleri ders kitabı örnekleriydi. (Daha sonra insanlar 4. derece Runge-Kutta'nın maliyet-etkinlik eğrisindeki "tatlı nokta" olduğunu anladılar.)

Ve: Programcılar nadiren iş değiştirmeden bilgisayarları değiştirdiler. Hareket eden programcıların, yeni sistemlerin nasıl çalıştığını öğrenme ve farklılıkları yakalama konusunda çok iyi olması GEREKİR.

Bu ortamda, herhangi bir yetkin giriş seviyesi FORTRAN programcısının uykusunda yazabileceği bir şey olduğunda "standart" STDDEV kodu için çok az çağrı olacaktır.


> Ayrıca: FORTRAN programcılarının sayısal yöntemlerde makul bir arka plana sahip olmaları bekleniyordu - bugün programcıların göründüğü gibi, ilk yetenek google'ın nasıl kullanılacağını öğrenmektir :-)
AndersK

3
Herkes zaten NAG kullandı
Martin Beckett

1
@MartinBeckett: Bu NAG'den çok önceydi.
John R. Strohm

1
@Rook, korkarım ki hayal kırıklığına uğrayacaksınız.
John R. Strohm

1
@Rook Kesinlikle onları yapabilirim, ama ilk denemede verimli ve sayısal olarak istikrarlı bir şekilde yapacağımı bilmiyorum.
Ixrec

2

Şahsen ben bu gerçeği MKL kütüphanesi nedeniyle düşünüyorum . Yüksek performanslı bir matematik kütüphanesi arıyorsanız, ihtiyacınız olan şey MKL'dir. O kadar pahalı değil ve projelerinde matematik hesaplamasını yapan bir laboratuvar bunu karşılayabilir.


bunu daha ayrıntılı olarak açıklar mısınız - sorulan soruya nasıl ve neden cevap veriyor? "Yalnızca bağlantı yanıtları" Stack Exchange'de pek hoş karşılanmıyor
gnat



-1

FORmulaTRANslation dili kendi formüllerinizi yazmanızı kolaylaştırmak için tasarlanmıştır. Fortran 90'dan itibaren yazabildiğinizde Fortran neden ortalama bir işlev tanımlamalıdır?

xmean = toplam (x) / maks (boyut (x), 1)?


3
X dizisinin değerlerle dolu olduğunu varsayıyorsunuz. Bu genellikle çok kötü bir varsayımdır.
John R. Strohm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.