Mengapa tidak ada perpustakaan standar fortran?


10

Untuk menjadi bahasa yang berfokus pada matematika dan komputasi ilmiah, saya selalu bingung dengan kurangnya rutinitas matematika yang berguna di perpustakaan standar Fortran. Orang akan berharap itu dikirim setidaknya dengan rutin untuk menghitung standar deviasi dan rata-rata, tetapi ini tidak terjadi. Khususnya dengan diperkenalkannya Fortran 90 dan penambahan modul (sehingga mengurangi polusi namespace), saya tidak melihat alasan mengapa kurangnya layanan yang kritis ini.

Saya ingin mendengar pengetahuan Anda tentang alasannya.


Sudah 20 tahun sejak saya menggunakan fortran dan pada masa itu saya tidak terlalu memperhatikan apa yang dikatakan standar saya hanya menggunakan apa yang terjadi pada mesin. Saya menemukan bahwa jumlah perpustakaan matematika yang tersedia sangat besar dan konsisten di seluruh mesin yang saya gunakan. Saya bertanya-tanya apakah ini karena meskipun perpustakaan tidak standar apakah mereka ada di mana-mana? (Saya tidak tahu itu pertanyaan).
Martin York

Jawaban:


17

Kembali ketika FORTRAN dikembangkan, tidak ada yang namanya portabilitas kode. Itu benar-benar rutin untuk kompiler FORTRAN pada satu mesin untuk menerima bahasa yang sedikit berbeda dari kompiler pada mesin lain. Variasi yang paling umum adalah panjang nama. IBM 1130 FORTRAN mengizinkan lima karakter, DEC-10 mengizinkan enam karakter, CDC 6600 (mesin pertama saya, bahasa assembly saya yang sebenarnya) mengizinkan tujuh karakter. Array tiga dimensi diperlukan oleh bahasa; setidaknya satu komputer mini (Varian 76?) FORTRAN memungkinkan array tujuh dimensi.

Perusahaan secara rutin memperluas bahasa FORTRAN mereka, untuk membuat mesin mereka lebih menarik bagi pelanggan, dan, sementara ekstensi mungkin menyediakan fungsionalitas yang serupa, mereka tidak pernah identik. Banyak kompiler menyediakan ekstensi untuk melakukan manajemen I / O file dan overlay, dan mereka tidak pernah identik. Kadang-kadang mereka bahkan tidak dekat.

Konversi FORTRAN-ke-FORTRAN, memindahkan program dari satu komputer ke komputer lain, adalah industri rumahan yang sangat sibuk, dan orang-orang yang dapat melakukannya selalu dapat menemukan pekerjaan. (Saya mengerjakan dua konversi seperti itu: Saya membantu memport game "Star Trek" Matuszek-Reynolds-McGehearty-Cohen yang asli dari CDC 6600 ke DEC-10, dan saya mem-porting program analisis EKG dari Varian 76 ke TI 990. Tidak ada dua proyek-proyek seperti itu identik.)

Hal semacam ini membuatnya sangat, sangat sulit untuk menyediakan perpustakaan "standar", meskipun beberapa orang mencoba. Perpustakaan IMSL adalah yang terbesar, tetapi dikirim dalam bentuk kode sumber, dan pelanggan diminta untuk membuatnya bekerja di sistemnya.

Juga: programmer FORTRAN diharapkan memiliki latar belakang yang masuk akal dalam metode numerik. Hampir setiap programmer FORTRAN di planet ini pada masa itu belajar bagaimana melakukan mean dan standar deviasi untuk dirinya sendiri, sebagai tugas pekerjaan rumah. Setiap programmer FORTRAN belajar membagi dua dan pengulangan Newton-Raphson (sekarang disebut "Metode Newton") di sekolah. Metode Runge-Kutta diajarkan, biasanya dengan menghafal, dan, pada waktu itu, integrator Runge-Kutta urutan ke-6 adalah contoh buku teks. (Baru kemudian orang-orang tahu bahwa urutan ke-4 Runge-Kutta adalah "sweet spot" pada kurva efektivitas biaya.)

Dan: Pemrogram Jarang mengubah komputer tanpa juga mengubah pekerjaan. Para programmer yang memang berpindah-pindah diharapkan DAN DIPERLUKAN untuk menjadi sangat pandai mempelajari bagaimana sistem baru bekerja, dan mengambil perbedaan.

Dalam lingkungan itu, akan ada sedikit panggilan untuk kode STDDEV "standar", ketika itu adalah sesuatu yang bisa ditulis oleh programmer FORTRAN entry-level yang kompeten dalam tidurnya.


> Juga: programmer FORTRAN diharapkan memiliki latar belakang yang masuk akal dalam metode numerik - berbeda dengan hari ini ketika tampaknya programmer keterampilan pertama adalah belajar bagaimana menggunakan google :-)
AndersK

3
Toh semua orang menggunakan NAG
Martin Beckett

1
@ MartinBeckett: Ini jauh sebelum NAG.
John R. Strohm

1
@Rook, saya khawatir Anda ditakdirkan untuk menjadi sangat kecewa.
John R. Strohm

1
@Rook Saya pasti bisa melakukannya, tapi saya tidak tahu saya akan melakukannya dengan cara yang efisien dan stabil secara numerik pada percobaan pertama.
Ixrec

2

Secara pribadi saya pikir fakta ini karena perpustakaan MKL . Jika Anda mencari perpustakaan matematika berkinerja tinggi, maka MKL adalah yang Anda butuhkan. Tidak semahal itu, dan sebuah laboratorium yang melakukan komputasi matematika dalam proyek-proyeknya mampu membelinya.


maukah Anda menjelaskan hal ini secara lebih rinci - bagaimana dan mengapa itu menjawab pertanyaan yang diajukan? "Jawaban khusus tautan" tidak diterima di Stack Exchange
agas


0

BLAS dan LAPACK adalah perpustakaan Fortran standar de-facto.


-1

Bahasa FORmulaTRANslation dirancang untuk memudahkan Anda menulis rumus Anda sendiri. Mengapa Fortran harus mendefinisikan fungsi yang berarti ketika Anda dapat menulis di Fortran 90 dan seterusnya

xmean = jumlah (x) / maks (ukuran (x), 1)?


3
Anda mengasumsikan bahwa array x penuh dengan nilai. Ini biasanya merupakan asumsi yang sangat buruk.
John R. Strohm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.