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.
language-features
fortran
Stefano Borini
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
cernlib melakukan banyak hal yang Anda minta untuk orang yang bekerja dalam fisika energi tinggi dan itu masih berguna.
sumber
BLAS dan LAPACK adalah perpustakaan Fortran standar de-facto.
sumber
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)?
sumber