Belajar Fortran

9

Saya bertanya-tanya apa cara terbaik untuk belajar bagaimana memprogram di Fortran?

Saya telah mencari buku-buku, contoh-contoh yang tampak oke bagi saya adalah "Fortran 95/2003 Dijelaskan" dan "Fortran Untuk Ilmuwan Dan Insinyur" .

Saya tidak tahu apa yang kalian pikirkan tentang ini?

Hal lain yang saya ingin tahu adalah kompiler mana yang harus saya gunakan? Saya bekerja pada mesin Windows 7 (64-bit).

Saya harap kalian dapat membantu saya dalam hal ini!

Jadi untuk pengalaman saya dengan pemrograman:

  1. Matlab dan maple adalah jenis perkenalan pertama saya ke dunia pemrograman. Matlab adalah sebuah program di mana saya sebenarnya cukup bagus, saya memahami bekerja dengan loop dan bagaimana menggabungkan ini untuk membuat program yang lebih efisien. Maple lebih pada fase dasar (saya tahu bagaimana mencari solusi untuk integral sederhana dll).
  2. Setahun setelah itu kami mendapat pengantar C ++ dalam visual basic. Profesor benar-benar pergi cepat untuk yang satu ini, setelah 2 bulan kami sudah membahas petunjuk dan warisan. Saya dapat menulis program sederhana dalam bahasa ini, hanya bekerja dengan kelas adalah sesuatu yang tetap menjadi kesulitan, tetapi saya percaya itu hanya masalah praktik.
  3. Dan setahun kemudian saya perlu belajar Mathematica 8 yang saya juga sangat bagus saat ini.

Jadi saya punya sedikit pemrograman-expierince, tapi saya tidak akan mengatakan itu jumlah yang luar biasa!

Alasan saya ingin belajar Fortran adalah terutama karena Anda tidak dapat melakukan fisika teoretis sendiri, Anda perlu menguji teori Anda dan untuk itu Anda harus dapat menulis program yang mungkin dapat menguji teori-teori itu secara numerik. Saya mendengar bahwa Fortran adalah kindoff bahasa untuk digunakan ketika datang ke matematika numerik, jadi saya pikir akan berguna untuk mengetahui bahasa ini.

ps: apa perbedaan antara Fortran95 dan Fortran 2003?

Nick
sumber
3
Bisakah Anda sedikit lebih spesifik dari mana Anda berasal dan ke mana Anda ingin pergi? Apakah Anda sudah tahu cara memprogram, yaitu bahasa pemrograman apa yang Anda ketahui? Dan apa yang ingin Anda lakukan di Fortran?
Pedro
Ya mungkin saya seharusnya menyebutkannya di pertanyaan saya, izinkan saya untuk mengedit :) @Pedro
Nick
1
Saya tahu itu tidak menjawab pertanyaan, tetapi saya harus sangat menyarankan Anda menggunakan Python di atas Fortran jika Anda tidak memiliki kebutuhan kinerja khusus sebagai pemula. Anda akan memiliki lebih sedikit sakit kepala berurusan dengan matematika dan teori yang sebenarnya karena Python akan lebih sedikit berteriak pada Anda. Ini juga memiliki paket luar biasa yang membuat banyak matematika numerik sangat sederhana (pencarian SciPy, Numpy, Matplotlib). Alat-alat itu membuat Python sangat mirip dengan MATLAB dalam penggunaannya, tetapi Anda juga memiliki seluruh bahasa untuk membangun perangkat lunak yang baik di sekitar sebagai ewll. Belum lagi itu open source.
Hadsed
1
Fortran 95 juga seperti Matlab dan standar ISO. Banyak orang yang menggunakan Python menulis kernel yang berat secara komputasional dalam C / C ++ (bahkan Fortran) yang berarti sekarang Anda harus belajar bukan hanya satu tetapi dua bahasa. Satu untuk kinerja dan yang lainnya untuk kenyamanan / kemudahan penggunaan.
stali

Jawaban:

4

Saya akan merekomendasikan stali kedua buku Chapman. Saya belajar dari buku Chapman Fortran 90, dan itu sangat membantu. Ini akan mengajarkan Anda bahasa Fortran. Itu tidak akan mengajarkan Anda tentang alur kerja yang baik untuk pemrograman, dan untuk itu, Anda harus mencari di tempat lain setelah Anda mempelajari beberapa Fortran dan diprogram untuk sedikit.

Sebagian besar sumber daya online untuk membantu Anda dengan pemrograman Fortran akan berbasis Linux. Demikian pula, dalam ilmu komputasi, sebagian besar materi tertulis akan diarahkan untuk pengguna Linux. Untuk alasan itu, saya sangat menyarankan Anda menginstal VirtualBox (atau semacam perangkat lunak yang memungkinkan Anda untuk menjalankan sistem operasi virtual) dan kemudian menginstal beberapa distribusi Linux di sana. Jika Anda belum pernah menggunakan Linux sebelumnya, distribusi yang ramah pengguna seperti Ubuntu, Mint, atau Fedora mungkin akan menjadi taruhan terbaik Anda. Distribusi ini memerlukan jumlah konfigurasi minimum jika dijalankan dalam lingkungan virtual, dan memiliki GUI yang baik untuk membantu Anda menavigasi sistem operasi. Setiap distribusi ini memiliki manajer paket yang dapat Anda gunakan untuk menginstal beberapa perangkat lunak tambahan. Menggunakan manajer paket, Anda dapat menginstal gfortran.

Anda akan ingin mengembangkan perangkat lunak dalam editor teks (atau IDE), jadi mungkin perlu mempelajari dasar-dasar baris perintah. Software Carpentry memiliki sumber daya yang baik untuk tugas ini. (Penafian: Saya telah mengajarkan bagian dari sebuah lokakarya untuk Software Carpentry.) Maka Anda harus dapat bergerak maju dengan belajar menulis program sederhana dan mengompilasinya di baris perintah, dan kemudian belajar cara menggunakan Makefile.

Masalah dengan melakukan apa pun berbasis Windows adalah bahwa sebagian besar materi online yang akan Anda lihat ketika melakukan ilmu komputasi akan menganggap Anda menggunakan Linux, dan sarannya (jika ada gunanya untuk memulai) akan hancur turun, dan menghabiskan waktu Anda. Cygwin adalah lapisan API yang menambahkan lebih banyak fungsi mirip Linux, tetapi korespondensi dengan Linux tidak sempurna, dan perangkat lunak yang dikompilasi untuk Linux tidak akan berfungsi pada mesin Anda; Anda masih perlu mendapatkan versi Windows asli atau mengkompilasi ulang perangkat lunak untuk Windows. Kompiler Fortran Windows asli seperti Visual Fortran akan membutuhkan biaya, dan Anda masih akan mengalami masalah yang sebagian besar pengguna Fortran dan ilmuwan komputasi menggunakan Linux untuk pengembangan perangkat lunak mereka, yang berarti Anda harus terus maju pada Anda sendiri. Namun, jika Anda benar-benar perlumendistribusikan perangkat lunak berbasis Windows untuk beberapa alasan, maka masuk akal untuk melalui semua upaya untuk mencari tahu bagaimana menggunakan sesuatu seperti Visual Fortran.

Geoff Oxberry
sumber
Terima kasih atas sarannya! Tapi saya bertanya-tanya, sebagai pengganti mesin virtual, tidak bisakah saya membuat semacam mekanisme dual-boot di mana saya bisa memilih apakah saya memulai windows7 atau Linux Ubuntu terlebih dahulu? Saya percaya ini memang menghemat banyak waktu! Dan jika saya perlu pergi ke windows, maka saya akan memiliki pengalaman pemrograman versi Linux yang memungkinkan saya untuk melalui langkah-langkah di windows lebih cepat!
Nick
Anda bisa, jika Anda menginginkannya. Saya pikir pengaturan dual-boot kurang fleksibel, dan membutuhkan lebih banyak pengetahuan teknis dan waktu (Anda mungkin harus mengubah ukuran partisi, mengatur boot loader dengan cara yang benar, dll.). Saya juga berpikir mesin virtual lebih mudah untuk bermigrasi ke mesin baru, yang dapat membantu jika Anda ingin berbagi pekerjaan Anda dengan seorang kolega, atau jika Anda memperoleh komputer baru dan ingin memigrasi semua pekerjaan Anda di sana.
Geoff Oxberry
Saya akhirnya menemukan waktu untuk melewati semua langkah yang diperlukan. Saya sudah menginstal VirtualBox dan menginstal Linux (Ubuntu). Sekarang saya bertanya-tanya mana yang mungkin menjadi kompiler terbaik? Sepertinya saya tidak dapat menemukan banyak online tentang bagian itu: s. Saya mendengar seseorang berkata gfortran?
Nick
2
gfortran gratis, dan mungkin jalan dengan resistensi paling rendah. Sebagian besar kompiler lain memerlukan pembelian lisensi, dengan kemungkinan pengecualian untuk penggunaan pribadi atau akademik. (Saya tahu kompiler Intel dapat diunduh dan digunakan untuk penggunaan pribadi hanya secara gratis, misalnya; Anda harus membaca lisensi untuk perinciannya.) HighPerformanceMark ditautkan ke situs web yang memiliki perbandingan kinerja untuk kompiler.
Geoff Oxberry
6

Saya pikir buku Metcalfe adalah panduan beranotasi yang bagus untuk fitur-fitur modern dari Fortran, sangat berguna jika Anda sudah tahu versi bahasa sebelumnya tetapi bukan pengantar pemrograman yang baik dalam bahasa tersebut.

Untuk uang saya buku Chiver dan Sleightholme dan buku Brainerd keduanya cukup baik, meskipun saya tidak berpikir baik adalah sebagai baik sebagai buku oleh Ellis et al yang, sayangnya, belum diperbarui untuk Fortran 2003 atau nanti.

Saya sangat tidak menyukai buku Chapman. Saya tidak ingat mengapa saya sangat tidak menyukai edisi 90/95 sehingga tidak bisa membenarkan keengganan ini lagi, Anda dapat mendiskonnya sebagai prasangka.

Tetapi satu buku yang saya rekomendasikan tanpa ragu-ragu adalah buku Arjen Markus . Ini mungkin bukan pengantar yang ideal untuk seseorang yang masih mencoba mencari fitur dasar dari bahasa tersebut, tetapi begitu Anda sudah menguasainya, ada baiknya menggunakan beberapa substansi berharga.

Adapun kompiler yang akan digunakan, saya menggunakan kompiler Intel dan saya senang dengan itu. Ini terintegrasi dengan Visual Studio, yang mungkin penting bagi Anda. Kompiler NAG memiliki pesan kesalahan dan peringatan yang lebih baik tetapi menghasilkan executable yang lebih lambat (umumnya dan pengalaman Anda mungkin berbeda). Kompiler gfortran gratis dan mendapat ulasan yang cukup baik tetapi bukan yang saya gunakan. Jika Anda ingin tahu lebih banyak, Polyhedron akan memberi tahu Anda.

Tanda Kinerja Tinggi
sumber
Buku Markus memiliki TOC yang bagus.
AlexE
Ya buku Markus memang tampak buku yang hebat, jadi itu yang akan saya pertimbangkan! Untuk kompiler saya hanya perlu sesuatu dengan executable cepat (tidak diperlukan integrasi dengan visual studio).
Nick
Saya pikir kompiler Intel umumnya dianggap cepat.
AlexE
3

Untuk buku, saya merekomendasikan "Modern Fortran Dijelaskan" oleh Metcalf / Reid / Cohen. Ini lebih merupakan referensi daripada buku teks, tetapi itu akan melayani Anda dengan baik jika Anda sudah memiliki beberapa paparan pemrograman secara umum (dengan mengatakan C).

Selain buku itu, saya sangat merekomendasikan situs web Ondřej Čertík http://fortran90.org/ . Ini tidak akan mengajarkan Anda Fortran pada awalnya, tetapi itu akan memberi Anda serangkaian praktik terbaik. Fortran memungkinkan berbagai cara untuk pemrograman - bagaimanapun juga itu kompatibel ke bawah. Praktik terbaik yang diberikan di sana akan membantu Anda mengembangkan gaya Fortran yang konsisten dan modern. Juga, FAQ yang ditemukan akan menarik bagi Anda.

AlexE
sumber
2
Terpilih untuk halaman praktik terbaik F90, itu juga sangat membantu saya.
Daniel Shapero
2

Buku Chapmans menurut saya lebih ramah pemula dan referensi yang bagus. Penulis yang kedua semuanya ahli tapi saya pikir buku ini akan menjadi tambahan yang baik untuk perpustakaan Anda di tahap selanjutnya.

Sebagai permulaan, saya sarankan Anda tetap menggunakan Fortran 95 dan kemudian (jika perlu) pindah ke Fortran 2003. Fortran 95 mudah dipelajari (hampir seperti Matlab) dan Anda akan cepat produktif.

Di Linux Anda memiliki sejumlah kompiler Fortran gratis (GNU, Solaris Studio, Open64 dll.) Selain seperangkat alat yang lebih kaya misalnya, valgrind, gdb, gnuplot, (untuk viz cepat), svn / hg dll. Selain itu instalasi dari paket yang sudah dikompilasi termasuk lib numerik (blas / lapack / netcdf / fftw dll.) adalah perintah pergi (setidaknya pada Debian dengan apt-get).

Pada Windows Anda mungkin lebih baik menggunakan cygwin karena memberi Anda akses mudah dan cepat ke beberapa alat / lib di atas selain kompiler GNU Fortran. Jadi ya pergi ke cygwin.com dan instal paket inti bersama dengan gfortran dan editor pilihan (vim baik). Itu harus menjadi awal yang baik. Nanti kalau ada yang lain maka saya sarankan menggunakan paket apt-cyg untuk menginstal barang.

stali
sumber
1
Saya tidak merekomendasikan vim (atau, dalam hal ini, emacs) sebagai editor teks pertama. Ada terlalu banyak fitur penting (potong, salin, tempel, temukan, temukan / ganti) yang melibatkan kombinasi tombol non-intuitif untuk menggunakannya sebagai editor teks pertama, dan semua langkah ekstra dan asing yang harus dilakukan oleh pelajar baru untuk melakukan sesuatu yang sederhana keduanya mengecilkan hati dan mengalihkan perhatian dari apa pun yang mereka coba lakukan (yang, jika Anda merekomendasikan editor teks, mungkin beberapa bentuk pengembangan perangkat lunak).
Geoff Oxberry
1
Sebagai editor pertama saya merekomendasikan alat yang memiliki kemampuan untuk menjadi satu-satunya editor yang Anda butuhkan, bukan yang Anda akan tumbuh dalam 3 minggu, 3 bulan atau bahkan 3 tahun. Untuk alasan itu baik Emacs dan Vim adalah editor pertama yang cocok. Tentu saja mereka mungkin memiliki kurva belajar yang awalnya lebih curam daripada yang lain, tetapi banyak programmer yang telah membayar harga itu dan menemukan hasilnya layak.
Tanda Kinerja Tinggi
Komentar Anda menetapkan pilihan yang salah: pelajari vim / emacs dan miliki editor yang dapat Anda gunakan seumur hidup, terlepas dari kurva pembelajaran yang curam, atau gunakan alat inferior lain yang mudah dipelajari yang akan Anda kalahkan. Banyak programmer profesional menggunakan alat lain dengan kurva belajar yang kurang curam, seperti gedit, Sublime Text, TextMate, TextWrangler, dan lainnya, dan bergaul dengan baik. Vim dan emacs adalah editor yang hebat - saya menggunakan keduanya - tetapi mereka bukan satu-satunya, pilihan yang jelas unggul di luar sana untuk pemrograman (WolfgangBangerth juga membuat IDE yang bagus).
Geoff Oxberry