Jadilah Penasaran dan Belajar: Singkatnya Fortran Modern

Kemajuan dalam sains dan teknik masih mengandalkan Fortran lebih dari bahasa lain dengan banyak ukuran penting. Terkejut? Anda tidak boleh begitu, meskipun banyak orang yang menyebut diri mereka programmer tidak pernah benar-benar mempelajari Fortran. Saya akan mengajari Anda Fortran dalam lima menit atau kurang. Tidak ada ruginya, dan Anda akan tahu apa yang mungkin merupakan bahasa pemrograman paling penting dan berpengaruh yang pernah ada.

Ilmuwan komputer mungkin berperilaku seperti Fortran tidak ada, tetapi budaya populer ( The Simpsons , Musim 26, Episode 10) melakukannya lebih baik dengan pengamatan yang bijaksana: "Fortran, bahasa pemrograman terhebat!" Faktanya, lebih dari setengah perhitungan dilakukan oleh komputer paling kuat di dunia berasal dari Fortran. Dalam beberapa sistem besar, kode Fortran dapat bertanggung jawab atas 80-100% komputasi.

Ini juga sangat mudah dipelajari, seperti yang akan Anda lihat dengan pengantar singkat untuk pemrograman Fortran ini. Saya berasumsi Anda sudah tahu bagaimana memprogram sesuatu selain Fortran (jika Anda benar-benar baru dalam pemrograman, saya sangat merekomendasikan belajar Fortran dengan “A Fortran Coloring Book”).

 Mari kita mulai

 program halo

    print *, "Halo, Dunia!"

akhiri program halo

Ketik (gunakan ekstensi .f95 atau .f90 untuk file Anda), kompilasi, jalankan ini, dan akan muncul tulisan “Hello, World!”. "*," Dalam pernyataan cetak pada dasarnya berarti format secara otomatis .

Contoh kedua saya melakukan beberapa matematika dan diakhiri dengan pernyataan 'if / then / else':

program mymath

  tidak ada yang tersirat

  real :: answer, x, y, sum, prod, cubedx, cubedy

  print *, 'Ketik dua angka (x dan y)'

  baca *, x                                          

  baca *, y                                          

  jumlah = x + y  

  prod = x * y                                       

  kubik x = x ** 3;

  kubus = y ** 3;

  print *, 'Jumlah x + y adalah', jumlah

  print *, 'Produk x * y adalah', prod

  cetak *, 'kubik x dan y', kubik x, kubus

  print *, 'sinus dari x dan y', sin (x), sin (y)

  jika (x> y) lalu

    print *, 'Saya perhatikan bahwa x lebih besar dari y'

  lain

    print *, 'Sepertinya y tidak lebih kecil dari x'

  berakhir jika

akhiri program mymath  

Anda mungkin memperhatikan bahwa saya menyelipkan "tidak ada yang tersirat". Itu normal di Fortran modern - ini memberi tahu kompiler untuk meminta variabel dideklarasikan secara eksplisit sehingga variabel yang tidak dikenal ditandai sebagai kesalahan. Tanpanya, Fortran mengasumsikan variabel yang dimulai dengan 'i' hingga 'n' (dua huruf pertama dari bilangan bulat) adalah bilangan bulat, dan lainnya adalah bilangan floating point ('real'). Itu mengurangi berapa banyak kartu yang harus kita pukul beberapa dekade yang lalu, tetapi umumnya tidak disukai di zaman modern ini.

 Menjalankan program ini (dan mengetik 3.14 dan 1.57) menghasilkan yang berikut:

Ketik dua angka (x dan y)

3.14

1.57

 Jumlah x + y adalah 4,71000004   

 Produk x * y adalah 4.92980051   

 Potong kubus x dan y 30.9591484 3.86989355   

 sinus dari x dan y 1.59254798E-03 0.999999702

 Saya perhatikan bahwa x lebih besar dari y   

Fortran dirancang untuk matematika (FORmula TRANslation), perhatikan bahwa "sin (...)" sudah ada di dalamnya tanpa perlu menyertakan header atau paket apa pun. Tentu saja, Fortran mendukung bilangan titik mengambang dan bilangan bulat, tetapi juga mendukung bilangan kompleks. Tidak perlu aditif.

Contoh ketiga saya melibatkan loop (disebut "lakukan" di Fortran):

 loop program

  tidak ada yang tersirat    

  integer :: i, j, pertahankan (100,2), w

  w = 0

  lakukan i = 10, 50, 5

    lakukan j = i, 20, 5

       cetak *, i, j

       w = w + 1

       simpan (w, 1) = i

       simpan (w, 2) = j

    akhir lakukan

  akhir lakukan

  melakukan i = 1, w

    cetak *, 'simpan:', simpan (i, 1), simpan (i, 2)

  akhir lakukan

mengakhiri putaran program

Garis cetak dalam program contoh saya hanya dijalankan jika j do-loop berjalan. Loop j tidak berjalan sama sekali ketika i melebihi 20. Contoh ini juga memperkenalkan array dengan penggunaan array bernama 'keep.' Fortran memulai penomoran array pada '1' bukan nol, yang sama dengan cara Amerika menomori lantai bangunan (lantai # 2 mengacu pada lantai dasar yang diasumsikan sebagai '1'). Tempat lain di dunia menggunakan penomoran berbasis nol untuk bangunan mereka ("lantai pertama" adalah apa yang oleh orang Amerika disebut "lantai dua") seperti yang dilakukan C dan C ++ untuk larik. Output dari contoh 'program loop' itu ditunjukkan di bawah ini:

           10 10

          10 15

          10 20

          15 15

          15 20

          20 20

 simpan: 10 10

 simpan: 10 15

 simpan: 10 20

 simpan: 15 15

 simpan: 15 20

 simpan: 20 20

 Dalam contoh terakhir saya, saya akan mendefinisikan subrutin (fungsi) yang disebut 'ave' untuk mengambil rata-rata dari tiga angka yang saya definisikan secara statis. Anda akan melihat bahwa saya malas dan hanya menulis 'end' setelah program dan fungsi. Tidak apa-apa, tetapi jika Anda menggunakan nama, seperti yang saya lakukan sebelumnya, kompilator akan membantu memeriksa apakah akhirnya cocok dengan yang Anda inginkan.

Informasi program

  tidak ada yang tersirat

  nyata a, b, c

  av nyata, avsq1, avsq2

  ave nyata

  data a, b, c / 5.0,2.0,3.0 /

  av = ave (a, b, c)

  print *, 'Rata-rata dari', a, b, c, 'adalah:', AV

akhir

fungsi nyata ave (x, y, z)

  x nyata, y, z, jumlah

  jumlah = x + y + z

  ave = jumlah / 3.0

  kembali

akhir

 Ini mencetak:

 Rata-rata dari 5.00000000 2.00000000 3.00000000 adalah: 3.33333325 

 Ya, Fortran dapat memformat keluaran. Jika kita mengganti "print" di atas sebagai berikut:

  print 8, 'Rata-rata dari', a, b, c, 'is', AV

8 format (a, 2 (f4.2, ','), f4.2, a, f7.5)

Outputnya akan menjadi:

Rata-rata dari 5.00, 2.00, 3.00 adalah 3.33333

Pemformatan Fortran juga dapat dilakukan dalam satu baris dan memiliki keluaran cantik yang sama:

print "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Average of', a, b, c, 'is', AV

Jika Anda telah dituntun untuk percaya bahwa Fortran itu aneh, Anda telah disesatkan. Saya menulis semua contoh ini dalam apa yang oleh pemrogram Fortran disebut 'bentuk bebas'. Itu secara resmi menjadi bagian dari Fortran dengan standar 'Fortran 90' (karena itu instruksi saya untuk menggunakan .f90 atau .f95 sebagai ekstensi file; ini memberi tahu kompiler, tanpa sakelar opsi khusus, bahwa kami menggunakan bentuk bebas). Perlu diingat, pada tahun 1956 pengguna menginginkan sesuatu yang ditujukan untuk pukulan kartu. Saya bisa terus selama berjam-jam tentang bagaimana Fortran mengakomodasi itu dengan format berorientasi kolom dan karakter lanjutan, dll. Tapi, seperti yang saya tunjukkan, Anda benar-benar tidak perlu mempelajarinya untuk menulis atau membaca kode Fortran.

Jadi mengapa Fortran dijauhi oleh para ilmuwan komputer? Pertanyaan bagus. Fortran adalah bahasa tertua (c. 1956). Ini dimulai di era kaset, kartu berlubang, dan menggantikan komputer manusia. Ini mendahului pemrograman terstruktur blok, teori parsing, dan grafik. Dalam perjalanannya, ilmuwan komputer mengeksplorasi kemajuan dalam komputasi sambil memperkenalkan ribuan bahasa pemrograman, yang sebagian besar gagal dipahami. Namun demikian, dalam setiap bidang usaha manusia, “keluar dengan yang lama, dengan yang baru” adalah mode. Ilmu komputer tidak berbeda. 

Tetapi ketika menghitung angka itu penting, tidak ada yang lebih baik atau lebih mudah dari Fortran. Saya menyarankan kita semua harus mengetahui banyak alat, dan menggunakan alat terbaik untuk pekerjaan itu. Hanya karena palu tepercaya saya sudah lama ada di kotak peralatan, bukan berarti saya tidak membutuhkannya untuk pekerjaan yang benar. Fortran tidak berbeda.

Fortran bukan hanya bahasa pemrograman tingkat tinggi asli, ia hidup, penting, dan banyak digunakan. Siapa yang memulai rumor dengan mengatakan sebaliknya?

 Sumber daya

  • Intel Fortran - banyak digunakan untuk x86 (Intel / AMD), kinerja tinggi
    • Anda mungkin memenuhi syarat untuk mendapatkan kompiler gratis (dan alat lainnya)
    • Salinan percobaan tersedia dengan opsi untuk dibeli nanti
    •  Beta 2018 berjalan hingga Juli 2018: coba beta fungsional terbaru dan terhebat ini, termasuk Fortran dan alat terkait, hingga saat itu gratis: Intel Parallel Studio XE 2018 Beta - Gabung Sekarang
  • GNU Fortran - dukungan yang lebih luas (banyak prosesor, banyak sistem), kinerja lebih rendah
    • open source dan gratis
    • di MacBook Air saya… Saya hanya perlu mengatakan "brew install gcc" dan saya mendapatkan gfortran secara gratis

Klik di sini untuk mengunduh uji coba gratis 30 hari Intel Parallel Studio XE Anda