Versi Fortran mana yang harus saya pelajari?

17

Saya seorang mahasiswa Teknik Mesin yang tertarik pada bidang teknik aerospace di mana, saya diberitahu, Fortran masih umum digunakan.

Versi Fortran mana yang harus saya investasikan waktu saya untuk belajar?

pengguna26358
sumber
Tidak layak jawaban lengkap, tetapi perlu dicatat bahwa dukungan kompiler untuk fitur Fortran terbaru sangat kurang. Lihat fortranwiki.org/fortran/show/Fortran+2003+status dan fortranwiki.org/fortran/show/Fortran+2008+status Saya akan mulai dengan 90/95 dan bekerja maju sesuai kebutuhan.
Doug Lipinski
Setelah menulis beberapa pemikiran tentang masalah ini, silakan lihat stackoverflow.com/questions/953869/... stackoverflow.com/questions/3549702/… jika dapat bermanfaat. Terlepas dari hal di atas, saya akan merekomendasikan F90 kemudian mempelajari fitur karena Anda akan membutuhkannya.
Benteng
1
Perhatikan bahwa Matlab berasal dari Fortran. Berdasarkan komentar Anda, saya akan merekomendasikan Anda untuk mengevaluasi opsi ini.
Dennis Jaheruddin
2
Haruskah Anda belajar berhenti sepenuhnya Fortran ? Ini mungkin ditentukan oleh jumlah kode lama yang perlu Anda gunakan - yang juga akan menentukan versi Fortran yang harus Anda pelajari.
Damien

Jawaban:

27

Agak keliru populer bahwa ada "versi" dari Fortran yang perlu diketahui. Dengan pengecualian yang jarang, standar Fortran terbaru (dan kompiler) mempertahankan kompatibilitas mundur yang sangat baik dengan standar yang lebih lama. Ini dengan alasan yang bagus: tidak banyak orang akan menggunakan Fortran hari ini jika bukan karena kode legacy dalam jumlah besar masih digunakan. Dengan kata lain, kode Fortran77 yang memenuhi standar hampir selalu akan bekerja dengan kompiler terbaru.

Anda harus belajar menggunakan versi bahasa paling modern yang tersedia. F2008 mungkin tidak menambahkan sesuatu yang mengerikan yang berguna bagi pemula, tetapi pengenalan konsep berorientasi objek F2003 jelas merupakan masalah besar. "Modern Fortran Explained" adalah tempat yang layak untuk memulai, dan "Desain Perangkat Lunak Ilmiah: Arah Berorientasi Objek" juga cukup bagus untuk benar-benar belajar mempraktikkannya.

Secara pragmatis, jika Anda akan mengerjakan kode legacy (katakanlah F77 atau sebelumnya), pada titik tertentu Anda harus mempelajari beberapa hal yang mereka lakukan karena kurangnya fitur F90 +. Misalnya, jika Anda menulis kode Fortran untuk sesuatu, Anda tidak boleh menggunakan apa yang disebut "blok UMUM", tetapi Anda akan selalu melihat kode itu muncul dalam kode F77 yang mungkin harus Anda gunakan.

Saya tidak akan merekomendasikan seseorang mulai bekerja di Fortran tanpa setidaknya set fitur F90 / 95.

Yang mengatakan, jika Anda tidak berpengalaman dalam pemrograman dalam beberapa bahasa lain, Anda mungkin akan menemukan konsensus bahwa Fortran bukan bahasa terbaik untuk dipelajari sebagai bahasa pertama Anda, bahkan jika Anda mengejar aerospace. (Dan saya katakan itu sebagai seseorang di ruang angkasa yang menggunakan Fortran secara teratur dan menjadikannya sebagai bahasa pertama saya).

Aurelius
sumber
2
+1 "Saya tidak akan merekomendasikan seseorang untuk mulai bekerja di Fortran tanpa set fitur F90 / 95." . Saya yang kedua itu. Mulailah dengan F90, pelajari semua fitur dasar, latih beberapa program, kemudian lanjutkan ke rilis yang lebih baru
Tymric
JIKA tidak Fortran bahasa apa yang layak dipelajari dan akan praktis untuk digunakan dalam rekayasa? Bagaimana dengan Matlab? Saya membutuhkannya untuk kursus yang saya ambil semester depan.
user26358
@ user26358 Python untuk pemrograman tujuan umum, ia memiliki banyak daya tarik dalam komunitas sains. R untuk analisis statistik. MATLAB, Mathematica atau Maple (apa pun yang kelas Anda gunakan) untuk komputasi numerik. SQL untuk database relasional. Javascript untuk hal-hal web dan karena itu menjadi bahasa pergaulan. Saya tidak akan repot-repot dengan Fortran sampai salah satu dari mereka tidak bisa menyelesaikan pekerjaan, itu bukan bahasa yang menyenangkan untuk dipelajari sebagai yang pertama.
Schwern
@ Aurelius, saya setuju dengan paragraf terakhir Anda. Saya percaya bahwa cara yang tepat untuk belajar pemrograman ilmiah adalah kebalikan dari yang saya alami: python-> C ++ dan jika Anda membutuhkannya Fortran.
Nicola Cavallini
@ user26358 Matlab bagus dan Anda mungkin akan sering menggunakannya di sekolah. Python adalah tempat yang baik untuk memulai dengan pemrograman tujuan umum, dan modul numpy / scipy dapat melakukan sebagian besar hal yang mungkin Anda akan lakukan di Matlab, dan itu adalah tempat yang baik untuk mempelajari dasar-dasar penulisan perangkat lunak. Anda pasti harus memiliki setidaknya satu bahasa yang dikompilasi di bawah ikat pinggang Anda juga; C ++ akan menjadi pilihan paling populer.
Aurelius
1

Saya tidak setuju dengan Anda berdua. C ++ dan Python masih belum dioptimalkan seperti FORTRAN. Saya pasti setuju bahwa FORTRAN 90/95 adalah minimum. Namun, selalu berguna untuk menggunakan versi lain yang lebih modern. Tantangan dengan FORTRAN adalah bahwa jika Anda mempelajarinya sebelum Anda belajar bahasa berorientasi objek, mudah dipahami. Adalah jauh lebih sulit untuk belajar jika Anda terbiasa berpikir dengan objek. Saya mengajar kelas superkomputer di sini dan saya memaksa siswa saya untuk menggunakan FORTRAN. Ini memaksa mereka untuk menggunakan berbagai jenis logika dalam pemrograman. Mereka tidak menyukainya karena tidak "berpikir" seperti Python atau C ++. Itu semua benar-benar bermuara pada apa yang ingin Anda lakukan dan seberapa besar paralisasi dan kinerja.

tmwitten
sumber
Selamat datang di SciComp.SE. Ini terlihat lebih sebagai pendapat daripada pertanyaan untuk situs. Jika Anda menganggap bahwa Fortran "[...] memaksa mereka untuk menggunakan jenis logika yang berbeda dalam pemrograman" Anda harus menguraikan argumen, dan memberi tahu kami mengapa ini terjadi. Dan juga, apa ini "semacam logika" yang Anda sebutkan.
nicoguaro
2
@tmwitten: Apakah jawaban ini seharusnya menjadi komentar? Mungkin terlalu lama untuk menjadi komentar, dan di luar konteks, terlihat seperti non sequitur (misalnya, C ++ dan Python tidak disebutkan dalam pertanyaan, "kalian berdua" tampaknya merujuk pada Nicola dan Aurelius).
Geoff Oxberry