bahasa Fortran. The walking Dead. Fortran

  • gfortran
    • gfortran 4.5.0
  • Bahasa pengaturcaraan

    Fortran - bahasa pengaturcaraan pertama yang akan dilaksanakan tahap tinggi(selepas), bagaimanapun, dengan satu kaveat kecil - untuk kereta yang dibina mengikut skema klasik von Neumann. Dicipta antara 1954 dan 1957 oleh sekumpulan pengaturcara yang diketuai oleh John Backus di IBM. Beberapa tahun kemudian, penghantaran komersialnya bermula. Sebelum ini, pengaturcaraan dijalankan sama ada secara langsung dalam kod mesin atau dalam pemasang simbolik. Nama Fortran ialah singkatan untuk FORmula TRANslator, iaitu penterjemah formula.

    Fortran digunakan secara meluas terutamanya untuk pengkomputeran saintifik dan kejuruteraan. Salah satu kelebihan Fortran moden ialah sejumlah besar program dan perpustakaan subrutin yang tertulis di atasnya. Di kalangan saintis, sebagai contoh, terdapat pepatah bahawa sebarang masalah matematik sudah mempunyai penyelesaian di Fortran, dan, sememangnya, anda boleh menemui di antara ribuan pakej Fortran pakej untuk pendaraban matriks, pakej untuk menyelesaikan persamaan kamiran yang kompleks, dan banyak lagi, ramai lagi. Sebilangan pakej sedemikian telah dicipta selama beberapa dekad dan masih popular hari ini (terutamanya dalam komuniti saintifik).

    Kebanyakan perpustakaan ini sebenarnya adalah hak milik manusia: ia tersedia dalam kod sumber, didokumentasikan dengan baik, dinyahpepijat dan sangat berkesan. Oleh itu, adalah mahal untuk menukar, apatah lagi menulis semula mereka dalam bahasa pengaturcaraan lain, walaupun pada hakikatnya percubaan kerap dilakukan untuk menukar kod FORTRAN secara automatik ke dalam bahasa pengaturcaraan moden.

    Sejenis "kad panggilan" Fortran lama ialah sejumlah besar label yang digunakan dalam kedua-dua operator lompat tanpa syarat GOTO, dan dalam operator gelung, dan dalam format operator penerangan input/output FORMAT. Bilangan besar label dan kenyataan GOTO sering menyebabkan program Fortran sukar difahami.

    Pengalaman negatif inilah yang menjadi sebab mengapa dalam beberapa Bahasa moden label pengaturcaraan (contohnya, Java) dan pengendali lompat tanpa syarat yang berkaitan langsung tiada.

    Walau bagaimanapun, Fortran moden menyingkirkan lebihan label dengan memperkenalkan pengendali seperti DO ... END DO, DO WHILE, SELECT CASE. Selain itu, ciri positif Fortran moden termasuk sejumlah besar operasi terbina dalam dengan tatasusunan dan sokongan yang fleksibel tatasusunan dengan pengindeksan luar biasa.

    Interaksi dengan bahasa lain

    Banyak sistem pengaturcaraan membolehkan anda memautkan fail objek yang diperoleh hasil daripada terjemahan program Fortran dengan fail objek yang diperoleh daripada penyusun daripada bahasa lain, yang membolehkan anda mencipta aplikasi yang lebih fleksibel dan kaya dengan ciri. Sebilangan besar perpustakaan juga tersedia untuk bahasa Fortran, yang mengandungi kedua-dua rutin untuk menyelesaikan masalah pengkomputeran klasik (LAPACK, IMSL, BLAS), tugas untuk mengatur pengkomputeran teragih (MPI, pvm) dan tugas untuk membina antara muka grafik (Quickwin, FORTRAN /TK) atau mengakses DBMS (Oracle).

    Warisan Fortran

    Fortran telah digunakan selama lebih lima puluh tahun dan terdapat sebahagian besar daripadanya masih digunakan hari ini. Fortran ialah bahasa utama untuk beberapa masalah intensif pengiraan, seperti pemodelan cuaca dan iklim, dinamik bendalir, kimia pengiraan, kromodinamik kuantum, pemodelan dinamik sistem suria, pengiraan orbit satelit buatan dan banyak lagi tugasan lain.

    Mudah alih

    Pada mulanya, mudah alih untuk Fortran adalah isu yang sangat mendesak kerana tidak ada standard seragam dan juga maklumat rujukan daripada IBM. Dan syarikat komputer bersaing antara satu sama lain untuk memastikan ketidakserasian antara penyusun yang berbeza. Kemunculan piawaian membetulkan perkara itu. Piawaian 1966 menetapkan sintaks dan semantik, tetapi vendor terus memperkenalkan sambungan yang tidak serasi. Pengaturcara yang berhati-hati menyedari bahawa menggunakan sambungan yang tidak serasi akan menyebabkan masalah mudah alih dan sering menggunakan program seperti The PFORT Verifier untuk mengenal pasti sambungan yang tidak serasi.

    Sambungan yang tidak serasi bukanlah satu-satunya masalah. Terdapat beberapa masalah dengan pengiraan berangka. Kemudian, idea yang hampir universal telah dibangunkan dan diperkenalkan aritmetik binari titik terapung.

    Akses kepada persekitaran runtime(contohnya, kepada baris arahan, pembolehubah persekitaran) agak sukar sehingga ia ditangani dalam piawaian 2003.

    Kini agak mudah untuk melaksanakan program mudah alih sepenuhnya di Fortran.

    Elemen sintaks:

    Komen hingga hujung talian ! atau * dalam aksara pertama baris
    Sensitiviti kes Tidak
    Ungkapan Biasa ID Pembolehubah [_a-zA-Z0-9](0-n)
    Menetapkan nilai kepada pembolehubah =
    Pengisytiharan Pembolehubah jenis::pembolehubah
    Mengisytiharkan Pembolehubah dengan Penetapan Nilai type::variable = nilai
    Ungkapan Pengelompokan ()
    Sekat buat ... tamat buat
    Kesaksamaan = atau.EQ.
    Ketaksamaan /= atau.NE.
    Perbandingan == < > <= >= <>atau.LT. .GT. .LE. .GE.
    Memanggil fungsi HUBUNGI f(a,b...)
    Memanggil fungsi tanpa parameter PANGGILAN f
    Susulan hujung baris
    Jika-maka jika syarat maka ... tamat jika
    Jika - maka - sebaliknya jika syarat maka ... lain ... endif
    Gelung dengan postcondition LAKUKAN ... SEMENTARA (syarat)
    Untuk - gelung seterusnya untuk julat integer ditambah dengan 1 lakukan label i = 1, 10
    Untuk - gelung seterusnya untuk julat integer yang dikurangkan sebanyak 1 lakukan label i = 10, 1, -1

    Contoh:

    Hai dunia!:

    Contoh untuk versi Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Contoh ini ditulis dalam format percuma yang disokong oleh Fortran 90 dan piawaian seterusnya, serta .

    Program ulasan gaya 90 Fortran cetakan HelloWorld * , "Hello, World!" tamatkan program HelloWorld

    Faktorial:

    Contoh untuk versi Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Penentuan berulang bagi format program faktorial dan percuma digunakan. Spesifikasi format I dan A digunakan untuk mengeluarkan nombor perpuluhan dan rentetan, masing-masing. Apabila mengira faktorial 13-16, limpahan aritmetik berlaku, bukan menyebabkan ralat, jadi nilai yang salah adalah output:

    13! = 1932053504
    14! = 1278945280
    15! = 2004310016
    16! = 2004189184

    atur cara Integer faktorial :: f , n f = 1 n = 0 lakukan cetak "(I2, A, I10)" , n , "! = " , f n = n + 1 f = f * n jika (n == 17 ) maka keluar tamat jika tamat lakukan program Factorial

    Nombor Fibonacci:

    Contoh untuk versi Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Penentuan berulang nombor Fibonacci digunakan. Perkara yang paling sukar dalam contoh ini ialah mengeluarkan nilai yang dikira dalam dalam format yang diperlukan, dalam satu baris dan tanpa ruang tambahan. Spesifikasi format (I3, A, $) bermakna ia mula-mula mencetak integer dalam format perpuluhan, tepat tiga aksara lebar, kemudian mencetak rentetan, dan akhirnya $ menyekat suapan baris yang digunakan oleh arahan cetakan secara lalai, jadi semuanya dicetak pada satu baris. Ambil perhatian bahawa penentu format $ bukan standard dalam dialek; Program ini berfungsi, tetapi semasa penyusunan ia memaparkan amaran tentang perkara ini.

    atur cara integer Fibonacci :: f1 , f2 , f3 , i i = 1 f1 = 0 f2 = 1 do f3 = f2 + f1 f1 = f2 f2 = f3 i = i + 1 jika (f1< 10 ) then print "(I1, A, $)" , f1 , ", " elseif (f1 < 100 ) then print "(I2, A, $)" , f1 , ", " else print "(I3, A, $)" , f1 , ", " end if if (i == 17 ) then exit end if end do print * , "..." end program Fibonacci

    Persamaan kuadratik:

    Contoh untuk versi g95 0.93, gfortran 4.5.0

    Contoh menggunakan jenis data kompleks terbina dalam. // - pengendali penggabungan rentetan. Nombor sebelum kurungan dalam perihalan format menunjukkan bilangan kali format dalam kurungan diulang (dalam dalam kes ini dua kali - untuk akar pertama dan kedua).

    atur cara Kuadratik integer :: a , b , c real :: d , p1 , p2 complex :: cp2 read (* , * ), a if (a == 0 ) kemudian tulis (* , * ) "Bukan persamaan kuadratik" hentikan hujung jika dibaca (* , * ) b baca (* , * ) c d = b * b - 4 * a * c p1 = - b / 2.0 / a jika (abs (d )< 1.0e-9 ) then write (* , "(A, F8.3)" ) "x = " , p1 elseif (d >0 ) kemudian p2 = sqrt (d ) / 2.0 / a tulis (* , "(2(A, F8.3))" ) "x1 = " , p1 + p2 , char (13 ) // char (10 ) / / "x2 = " , p1 - p2 else cp2 = sqrt (cmplx (d )) / 2.0 / a tulis (* , "(2(A, F8.3, F8.3), A)" ) "x1 = ( " , p1 + cp2 , ")" // char (13 ) // char (10 ) // "x2 = (" , p1 - cp2 , ")" end if end

    Hai dunia!:

    Contoh untuk versi f2c 20090411, g95 0.93, gfortran 4.5.0

    FORTRAN 77); Enam aksara pertama setiap baris dikhaskan untuk maklumat perkhidmatan - menandakan bahawa baris itu adalah ulasan atau kesinambungan daripada yang sebelumnya, label dan nombor baris. Set standard simbol Fortran tidak mengandungi simbol huruf kecil, jadi semua program ditulis dalam huruf besar. Pengecualian kepada peraturan ini ialah pemalar watak- ia boleh mengandungi sebarang aksara yang disokong oleh sistem.

    Baris pertama memberikan sekeping kod ini nama HELLO dan menunjukkan bahawa ia adalah program utama. Nama program tertakluk kepada peraturan yang sama seperti mana-mana nama pengecam, i.e. mesti bermula dengan huruf dan mengandungi tidak lebih daripada 6 aksara.

    Perintah WRITE melaksanakan pencetakan. Senarai parameter kawalan yang mengkonfigurasi output diluluskan dalam kurungan: UNIT memilih fail output (konsol secara lalai), FMT memilih format output. Asterisk menunjukkan tetapan lalai. Ia tidak perlu untuk menghantar nama parameter; ringkasnya, arahan yang sama akan kelihatan seperti WRITE (*, *) ....

    Dalam kebanyakan pelaksanaan, pemalar rentetan boleh disertakan seperti dalam petikan tunggal, dan berganda.

    Hello yang mudah, Dunia! program PROGRAM HELLO WRITE (UNIT =* , FMT =* ) "Hello, World!" TAMAT

    Faktorial:

    Contoh untuk versi f2c 20090411, g95 0.93, gfortran 4.5.0

    Contoh ini ditulis dalam format tetap (gaya FOTRAN 77) dan menggunakan pengiraan faktorial berulang.

    Fortran membolehkan anda melangkau perisytiharan berubah; dalam kes ini, ia menyimpulkan jenis mereka sendiri, tetapi, tidak seperti bahasa kemudian, bukan dengan konteks penggunaan pembolehubah, tetapi dengan namanya - jika huruf pertama nama I..N dipilih taip INTEGER, jika tidak - NYATA. Dalam kes ini, kedua-dua pembolehubah adalah integer.

    Kitaran DO dalam kes ini sepadan dengan UNTUK gelung Dalam bahasa kemudian, pembilang gelung N berjalan secara berurutan melalui semua nilai dari 0 hingga 16. Badan gelung berakhir pada baris berlabel 1, yang ditunjukkan dalam pengepala gelung.

    Perintah PRINT menggunakan format output lalai, yang berbeza-beza bergantung pada pengkompil yang digunakan.

    PROGRAM) C . Oleh kerana itu, selepas mengisi baris CC yang mengandungi aksara hasil mengikut aksara, baris yang lain perlu diisi dengan ruang secara manual.

    Menyemak bahawa aksara seterusnya dalam rentetan sumber ialah huruf terlalu panjang untuk dimuatkan pada satu baris (semua aksara dalam baris program bermula dari kedudukan ke-73 diabaikan), jadi ia perlu dibahagikan kepada dua baris dan yang kedua ditandakan sebagai kesinambungan yang pertama (dengan mana-mana simbol dalam kedudukan 6).

    Operator perbandingan dalam FORTRAN 77 ditulis sebagai .LE. ,.GE. dan lain-lain. disebabkan oleh fakta bahawa simbol > dan< не входят в набор символов языка; они были добавлены только в Fortran 90.

    TEKS WATAK CAMELC PROGRAM * 30 , CC * 30 LSPACE LOGIK BACA (* , "(A)" TEKS NCC = 0 LSPACE = .BENAR. DO 1 , I = 1 , LEN (TEKS ) NC = ICHAR (TEKS (I : I )) IF (NC .GE. 65 .AND. NC .LE. 90 .OR. > NC .GE. 97 .AND. NC .LE. 122 ) MAKA JIKA (Lspace ) MAKA JIKA (NC .GE. 97 .DAN. NC .LE. 122 ) MAKA NC = NC - 32 TAMAT JIKA ELSE JIKA (NC .GE. 65 .DAN. NC .LE. 90 ) MAKA NC = NC + 32 TAMAT JIKA TAMAT JIKA NCC = NCC + 1 CC (NCC : NCC ) = CHAR (NC ) LSPACE = .SALAH. LSPACE LAIN = .BENAR. TAMAT JIKA 1 TERUS BUAT 2, I = NCC + 1, LEN (CC) 2 CC (I: I) = "" TULIS (*, *) CC TAMAT



    Di kalangan saintis, sebagai contoh, terdapat pepatah bahawa sebarang masalah matematik sudah mempunyai penyelesaian dalam Fortran, dan, sememangnya, di antara ribuan pakej Fortran anda boleh menemui pakej untuk pendaraban matriks, pakej untuk menyelesaikan persamaan kamiran yang kompleks, dan banyak lagi, ramai lagi. Sebilangan pakej sedemikian telah dicipta selama beberapa dekad dan masih popular dalam komuniti saintifik sehingga hari ini, contohnya - IMSL ( Inggeris).

    Kebanyakan perpustakaan ini sebenarnya adalah hak milik manusia: ia tersedia dalam kod sumber, didokumentasikan dengan baik, dinyahpepijat dan sangat berkesan. Oleh itu, adalah mahal untuk menukar, apatah lagi menulis semula mereka dalam bahasa pengaturcaraan lain, walaupun pada hakikatnya percubaan kerap dilakukan untuk menukar kod FORTRAN secara automatik ke dalam bahasa pengaturcaraan moden.

    Fortran Moden (Fortran 95 dan Fortran 2003) telah memperoleh ciri-ciri yang diperlukan untuk pengaturcaraan yang cekap untuk seni bina pengkomputeran baharu, membenarkan penggunaan teknologi pengaturcaraan moden, khususnya OOP.

    Evolusi standard bahasa

    Fortran ialah bahasa yang sangat standard, itulah sebabnya ia mudah dibawa ke mana-mana pelbagai platform. Piawaian bahasa baharu sebahagian besarnya mengekalkan kesinambungan dengan yang lebih lama, yang memungkinkan untuk menggunakan kod daripada program yang ditulis sebelum ini dan mengubah suainya.

    FORTRAN 66 (1972) Berdasarkan piawaian IBM FORTRAN IV FORTRAN 77 (1980) Banyak penambahbaikan telah diperkenalkan: Fortran 90 (1991) Standard bahasa telah disemak dengan ketara. Fortran 95 (1997) Pembetulan standard sebelumnya. Pengendali dan pembinaan FORALL telah diperkenalkan, membolehkan lebih fleksibiliti daripada operator dan pembinaan WHERE untuk menetapkan tatasusunan dan menggantikan gelung yang menyusahkan. FORALL membolehkan anda menggantikan mana-mana penugasan bahagian atau klausa WHERE, khususnya, ia menyediakan akses kepada pepenjuru matriks. pengendali ini dianggap menjanjikan dalam pengkomputeran selari, memudahkan paralelisasi dengan lebih cekap daripada gelung. Fortran 2003 (2004) Pembangunan lanjut sokongan OOP dalam bahasa. Interaksi sistem operasi. Ciri-ciri berikut juga telah ditambah: Fortran 2008 (2010) Standard menganggap sokongan melalui bahasa pengkomputeran selari (Co-Arrays Fortran). Ia juga dirancang untuk meningkatkan dimensi maksimum tatasusunan kepada 15, menambah fungsi matematik khas terbina dalam, dsb.

    Penyusun

    Sejak perkembangan awal bahasa, penyusun Fortran telah dihasilkan oleh IBM. IBM kini membekalkan pengkompil pengoptimuman VS Fortran untuk kerangka utama IBM System z, sejarah pembangunan versi berbeza yang bermula sejak tahun 1964, serta penyusun XL Fortran untuk platform berdasarkan seni bina PowerPC - AIX, Linux dan superkomputer Blue Gene (versi juga dikeluarkan untuk Mac OS X, apabila komputer Macintosh menggunakan pemproses PowerPC). Kedua-dua penyusun ini mengandungi pengoptimum yang sangat kompleks, hasil kerja saintifik berterusan oleh pakar IBM selama setengah abad. Berdasarkan pengkompil IBM Fortran XL, Absoft, rakan kongsi perniagaan IBM, telah mencipta dan membekalkan pengkompil Absoft Pro Fortran untuk sistem berdasarkan pemproses PowerPC (Linux, Mac OS X) dan Intel (Linux, Mac OS X, Windows).

    Yayasan Perisian Percuma GNU menghasilkan pengkompil Fortran-77 sumber terbuka, g77, tersedia untuk hampir mana-mana platform dan serasi sepenuhnya dengan GCC. Kini ia telah digantikan oleh pengkompil GFortran, yang melaksanakan hampir semua binaan standard Fortran 95 dan banyak binaan standard Fortran 2003 dan Fortran 2008. Ia juga serasi ke belakang sepenuhnya dengan Fortran 77. Terdapat juga projek bebas yang dipanggil g95 untuk mencipta pengkompil Fortran-95 berdasarkan GCC.

    Ciri dan struktur program

    Fortran mempunyai set fungsi matematik terbina dalam yang agak besar, menyokong kerja dengan integer, nyata dan nombor kompleks ketepatan tinggi. Cara ekspresif bahasa itu pada mulanya sangat lemah, kerana Fortran adalah salah satu bahasa peringkat tinggi yang pertama. Selepas itu, banyak struktur leksikal yang bercirikan pengaturcaraan berstruktur, berfungsi dan juga berorientasikan objek telah ditambahkan pada Fortran.

    Kad tebuk dengan tanda lajur untuk Fortran.

    Struktur program pada mulanya tertumpu pada input daripada kad tebuk dan mempunyai beberapa sifat yang sesuai untuk kes khusus ini. Oleh itu, lajur pertama berfungsi untuk menandakan teks sebagai ulasan (dengan simbol C), dari 1 hingga 5 kawasan label terletak, dan dari 7 hingga 72 teks sebenar pengendali atau ulasan telah ditemui. Lajur 73 hingga 80 boleh digunakan untuk menomborkan kad (untuk memulihkan dek yang berselerak secara rawak) atau untuk ulasan ringkas; ia diabaikan oleh penterjemah. Jika teks pengendali tidak sesuai dengan ruang yang diperuntukkan (dari lajur ke-7 hingga ke-72), tanda kesinambungan diletakkan di lajur ke-6 kad seterusnya, dan kemudian pengendali meneruskannya. Adalah mustahil untuk meletakkan dua atau lebih pernyataan pada satu baris (peta). Memandangkan kad tebuk menjadi satu sejarah, kelebihan ini bertukar menjadi kesulitan yang serius.

    Itulah sebabnya standard Fortran, bermula dengan Fortran 90, sebagai tambahan kepada format tetap teks sumber format percuma telah muncul yang tidak mengawal kedudukan baris, dan juga membolehkan anda menulis lebih daripada satu operator setiap baris. Pengenalan format percuma memungkinkan untuk mencipta kod yang kebolehbacaan dan kejelasannya tidak kalah dengan kod yang dibuat menggunakan bahasa pengaturcaraan moden yang lain, seperti Java.

    Sejenis "kad panggilan" Fortran lama ialah sejumlah besar label yang digunakan dalam kedua-dua operator lompat tanpa syarat GOTO dan dalam operator gelung, dan dalam format operator penerangan input/output FORMAT. Bilangan besar label dan kenyataan GOTO sering menyebabkan program Fortran sukar difahami.

    Pengalaman negatif inilah yang menjadi sebab mengapa dalam beberapa bahasa pengaturcaraan moden (contohnya, Java) label dan pengendali lompat tanpa syarat yang berkaitan banyak diubah suai.

    Walau bagaimanapun, Fortran moden menyingkirkan lebihan label kerana pengenalan pengendali seperti DO ... END DO, DO WHILE, SELECT CASE. Selain itu, piawaian bahasa moden hanya mengekalkan pengendali GOTO klasik, yang masih digunakan dalam banyak bahasa hari ini. Pernyataan GOTO yang dikira, serta konstruk ENTRY - kemasukan berbilang ke dalam prosedur, telah dihapuskan.

    Selain itu, ciri positif Fortran moden termasuk sejumlah besar operasi terbina dalam dengan tatasusunan dan sokongan fleksibel untuk tatasusunan dengan pengindeksan luar biasa. Contoh:

    Nyata ,dimensi (: ,: ) :: V ... peruntukkan (V(- 2 : 2 ,0 : 10 ) ) ! Peruntukkan memori untuk tatasusunan yang indeksnya boleh ! berbeza dari -2 hingga 2 (indeks pertama) ! dan dari 0 hingga 10 - saat... V (2 .2 : 3 ) = V (- 1 : 0.1 ) ! Putar sekeping tatasusunan tulis(* ,* ) V(1 ,: ) ! Cetak semua elemen tatasusunan V yang indeks pertamanya ialah 1. deallocation(V)

    Hai dunia!

    Format tetap (ruang dalam kedudukan baris 1 hingga 6 ditandakan dengan aksara “␣”):

    ␣␣␣␣␣␣PROGRAM hello ␣␣␣␣␣␣CETAKAN* , "Hello, Dunia!" ␣␣␣␣␣␣TAMAT

    Format percuma:

    Program hello print * , "Hello, World!" tamat

    Nota.

    • Pernyataan PROGRAM adalah pilihan. Tegasnya, satu-satunya pernyataan yang diperlukan dalam program Fortran ialah pernyataan END.
    • Pilihan huruf besar atau huruf kecil untuk menulis pernyataan program adalah sewenang-wenangnya. Dari sudut pandangan piawaian moden Bahasa Fortran, banyak huruf besar dan banyak huruf kecil bertepatan semasa menulis operator bahasa.

    Interaksi dengan bahasa lain

    Banyak sistem pengaturcaraan membolehkan anda menggabungkan fail objek yang diperoleh hasil daripada terjemahan program Fortran dengan fail objek yang diperoleh daripada penyusun daripada bahasa lain, yang membolehkan anda mencipta aplikasi yang lebih fleksibel dan kaya dengan ciri. Sebilangan besar perpustakaan juga tersedia untuk bahasa Fortran, yang mengandungi kedua-dua rutin untuk menyelesaikan masalah pengkomputeran klasik (LAPACK, IMSL, BLAS), masalah mengatur pengkomputeran teragih (MPI, pvm), dan tugas untuk membina antara muka grafik (Quickwin, FORTRAN/ TK) atau mengakses DBMS (Oracle).

    Fortran di USSR

    Nota

    1. Lihat, sebagai contoh: Repositori Netlib di UTK dan ORNL
    2. A. M. Gorelik. Evolusi bahasa pengaturcaraan Fortran (1957-2007) dan prospek pembangunannya // Kaedah dan pengaturcaraan pengiraan, 2008, Vol. 9, hlm. 53-71
    3. Bartenyev O.V. Fortran moden. - M.: Dialog MEPhI, 2005. - ISBN 5-86404-113-0
    4. A. M. Gorelik. pengaturcaraan berorientasikan objek dalam Fortran moden
    5. S. D. Algazin, V. V. Kondratiev. Pengaturcaraan dalam Visual Fortran. - M.: "Dialog MEPhI", 2008. - 448 p. - ISBN 5-8243-0759-8
    6. Gorelik A. M. News
    7. VS FORTRAN
    8. XL Fortran untuk Linux
    9. Absoft Pro Fortran Compiler Suites Gambaran Keseluruhan Umum
    10. Studio Sun - Penanda Aras
    11. Esei oleh Alexander Rastorguev tentang kemunculan Fortran di Dubna
    12. Sejarah grafik komputer di Rusia

    kesusasteraan

    • Fortran. Manual Rujukan Pengaturcara. Sistem Pengekodan Automatik Fortran untuk IBM 704 EDPM. - IBM Corp., 1956. - 51 p.
    • ISO/IEC 1539-2:2000 Teknologi maklumat - Bahasa pengaturcaraan - Fortran - Bahagian 2: Rentetan aksara panjang yang berbeza-beza
    • Robert W. Sebesta. 2.3. komputer IBM 704 dan bahasa Fortran // Konsep asas bahasa pengaturcaraan = Konsep Bahasa Pengaturcaraan / Terjemahan. dari bahasa Inggeris - ed ke-5. - M.: Williams, 2001. - ms 63-69. - 672 s. - 5000 salinan. - ISBN 5-8459-0192-8 (Rusia), ISBN 0-201-75295-6 (Bahasa Inggeris)

    Pautan

    • gfortran - Pengkompil Fortran 95/2003/2008, sebahagian daripada Koleksi Pengkompil GNU
    • dalam Progopedia - ensiklopedia bahasa pengaturcaraan (Rusia)

    Saya digesa untuk cuba menulis catatan pertama saya di sini, di mana ia mencadangkan menggunakan C++ untuk pembelajaran. Ya, pada topik ini banyak salinan telah dipecahkan.

    Saya, seperti mungkin kebanyakan pelajar sekolah di keluasan Tanah Air kita yang luas, mula memahami asas-asas melalui skrin biru, tetapi bukan kematian, tetapi Turbo Pascal 7.0. Terdapat, sudah tentu, Asas, yang pertama kali saya temui di prasekolah pada komputer Soviet Elektronika. Kemudian ia kelihatan seperti editor teks yang aneh, kerana komputer melalui mata kanak-kanak dicipta untuk permainan. Walau bagaimanapun, sudah di institut saya berkenalan dengan bahasa Fortran, setelah mengetahui tentangnya, saya masih tertanya-tanya mengapa ia tidak digunakan untuk mengajar.

    Ya, ramai yang akan mengatakan bahawa bahasa itu mati, tidak sesuai dengan realiti moden, dan buku teks dengan tajuk seperti dalam gambar hanya membuat anda tersenyum. Saya akan cuba menerangkan mengapa bahasa ini sangat indah dan mengapa saya mengesyorkannya sebagai bahasa pertama. Jika anda berminat, selamat datang ke kucing.

    Saya percaya bahawa asas untuk asas pengaturcaraan harus diletakkan semasa tahun-tahun sekolah, sekurang-kurangnya di sekolah menengah. Walaupun dalam kehidupan, komputer hanya akan digunakan untuk menaip teks dalam Word atau untuk berkomunikasi dalam rangkaian sosial, pengetahuan minimum tentang apa itu algoritma dan cara menyusun urutan tindakan untuk mendapatkan hasil yang diingini, Oleh sekurang-kurangnya tidak akan membahayakan orang muda pada masa dewasa, tetapi kemungkinan besar akan membantu membentuk pemikiran yang istimewa.

    Agar pelajaran sains komputer menjadi kegembiraan dan bukan mimpi ngeri, pelajar mesti memahami apa yang dia lakukan, bagaimana dia melakukannya dan mengapa ia menjadi seperti ini dan bukan sebaliknya. Lagipun, pada dasarnya, anda perlu menyampaikan maklumat dengan betul tentang kitaran dan pengendali bersyarat supaya seseorang boleh menulis program secara bebas. Pada masa yang sama, lebih mudah sintaks bahasa, lebih mudah untuk memahami logik penulisan kod. Jika seseorang itu belajar mengarang algoritma yang betul, kemudian untuk memprogramkan dalam bahasa lain, dia hanya perlu mempelajari sintaks bahasa ini, dan asasnya akan diletakkan.

    Apakah yang istimewa tentang Fortran?

    Mari kita beralih kepada sejarah penciptaan bahasa ini. Ia muncul pada 50-an jauh abad yang lalu, ketika komputer masih besar, terdapat sedikit pengaturcara, dan sains komputer tidak diajar di sekolah, dan secara umumnya dianggap sebagai pseudosains. Apa yang diperlukan ialah bahasa mudah yang akan membantu jurutera dan saintis "menyuap" formula yang ditulis di atas kertas ke komputer, walaupun melalui kad tebuk.

    Oleh itu nama bahasa itu sendiri: Untuk mula Tran slator atau "penterjemah formula". Itu. Pada mulanya, bahasa itu ditujukan kepada orang yang tidak mempunyai latihan khas, yang bermaksud ia harus semudah mungkin.

    Nah, pencipta berjaya dalam kesederhanaan. Program pertama klasik kelihatan seperti ini:

    Program hw write(*,*) "Hello, World!" tamat
    Sintaksnya walaupun sedikit lebih ringkas daripada Pascal, tidak perlu meletakkan " di hujung talian ; "atau" : " sebelum tanda sama. Lagipun orang yang minima ilmu dalam Bahasa Inggeris, memahami maksud program yang paling mudah tidak sukar.

    Di sini saya ingin ambil perhatian bahawa Fortran mempunyai beberapa semakan piawaian, yang utama ialah 77 dan 90 (sambil mengekalkan kesinambungan). 77 Fortran benar-benar kuno, terdapat had pada panjang baris, dan perlu untuk mengendenkan permulaan baris, yang boleh menyebabkan kejutan budaya untuk calon pengaturcara muda. Bukan tanpa alasan bahawa program yang ditulis dalam Fortran 77 menerima nama ringkas "Kod Brezhnev" dari bibir rakan saya. Oleh itu, semua teks saya merujuk kepada standard bahasa 90 dan lebih baru.

    Sebagai contoh, saya akan memberikan kod untuk mengira jumlah integer bukan negatif dari 1 hingga n, yang dimasukkan dari papan kekunci, yang ditulis oleh pelajar siswazah saya semasa mengajar pengaturcaraannya dari awal. Di situlah saya berpengalaman mengajar Fortran sebagai bahasa pertama. Saya berharap ini bermanfaat untuknya, dan percubaan saya berjaya. Dia belajar sekurang-kurangnya asas dalam beberapa kelas, yang pertama adalah kuliah tentang bahasa.

    Nombor program tidak tersirat! Pembolehubah integer n,i,s ! Badan chisla s=0 tulis (*,*) "Masukkan n" baca (*,*) n jika (n.le.0) kemudian tulis (*,*) "Negatif atau sifar" jika tidak lakukan i=1,n s =s+i end do write (*,*) "Sum=", s end if end
    Adalah mudah untuk melihat bahawa cara kita berfikir adalah cara kita menulis kod. Pada dasarnya, tiada kesulitan yang boleh timbul kepada pelajar. Pembaca yang penuh perhatian, sudah tentu, akan bertanya apa yang tidak tersirat dan dua tanda bintang dalam kurungan yang dipisahkan dengan koma. tiada yang tersirat memberitahu kami bahawa kami secara eksplisit menyatakan jenis pembolehubah, sedangkan tanpa entri ini pengkompil akan meneka jenis itu sendiri. Asterisk pertama bermakna input dan output berlaku pada skrin, dan yang kedua menunjukkan bahawa format input dan output dikesan secara automatik. Sebenarnya, program Fortran kelihatan tidak lebih rumit daripada sekeping kod yang ditulis di atas.

    Bagaimana dengan persekitaran perisian?

    Di sekolah, dan di mana-mana agensi kerajaan, persoalan sering timbul mengenai perisian, khususnya mengenai pelesenannya. Kerana wang tidak diperuntukkan secara khusus untuk keperluan ini. Sekurang-kurangnya pada zaman saya, ini adalah masalah, mungkin sekarang keadaan telah berubah menjadi lebih baik.

    Mana-mana editor teks sesuai untuk menulis program dalam Fortran. Jika anda mahukan penyerlahan sintaks, anda boleh menggunakan Notepad++ (hanya menyokong sintaks standard 77) atau SublimeText. Kami telah menulis program, bagaimana kami akan menyusunnya? Semuanya mudah di sini, anda boleh menggunakan GNU Fotran percuma. Jika anda bercadang untuk menggunakannya secara bukan komersial, maka anda juga boleh menggunakan pengkompil daripada Intel, yang dioptimumkan dengan baik untuk pemproses dengan nama yang sama dan disertakan dengan IDE minimum yang diperlukan. Itu. Ambang kemasukan adalah sangat diutamakan.

    Menurut ramai pengguna, persekitaran pembangunan terbaik untuk Fortran kekal Compaq Visual Fortran 6.6, versi terkini yang dikeluarkan pada awal 2000-an. Mengapakah ia berlaku bahawa persekitaran berasaskan Studio Visual 6.0, yang berjalan pada maksimum Windows XP 32 bit tanpa menari dengan tamborin, dan mempunyai had pada memori yang digunakan, telah mendapat populariti sedemikian dalam kalangan pengguna Fortran. Jawapannya ditunjukkan dalam rajah di bawah.

    Ini ialah Compaq Array Visualizer, yang merupakan alat yang sangat mudah untuk menggambarkan tatasusunan 1, 2 dan 3 dimensi semasa penyahpepijatan atur cara terus daripada penyahpepijat. Seperti yang mereka katakan, setelah mencuba sekali, saya makan sekarang. Hakikatnya Fortran kini digunakan terutamanya dalam sains (yang akan dibincangkan kemudian), khususnya dalam bidang yang saya hadapi, iaitu dalam fizik atmosfera. Apabila menyahpepijat atur cara, tatasusunan mewakili pelbagai medan meteorologi, seperti suhu, tekanan, kelajuan angin. Mencari ralat dalam medan grafik adalah lebih mudah daripada dalam set nombor, terutamanya kerana anda biasanya tahu rupa medan itu, jadi ralat yang jelas terputus serta-merta.

    Malangnya, semua perkembangan pada pengkompil telah dipindahkan dari Compaq ke Intel. Intel pada mulanya menyokong Array Visualizer, bagaimanapun, versi tersebut sudah menjadi gambaran pucat produk dari Compaq, bekerja dengan mereka tidak semudah dahulu, tetapi sekurang-kurangnya fungsi minimum dikekalkan. Malangnya, Intel berhenti membangunkan versi baharu Array Visualizer, menamatkannya alat yang paling mudah. Itulah sebabnya majoriti komuniti Fortran menulis program dan menyahpepijatnya di bawah Compaq Visual Fortran pada Windows, dan menjalankan pengiraan pertempuran pada pelayan Linux menggunakan penyusun Intel. Intel, sila dengar rayuan pengguna, kembalikan alat biasa untuk menggambarkan tatasusunan kepada penyahpepijat anda!

    Tempat Fortran dalam dunia moden

    Dan kini kita sampai kepada topik yang biasanya menyebabkan perbincangan hangat dengan rakan sekerja saya yang menggunakan Matlab, yang mendakwa bahawa bahasa jarang yang diterangkan dalam siaran ini tidak berguna. Di sini saya tidak bersetuju dengan mereka. Hakikatnya ialah Fortran digunakan secara sejarah dalam pengiraan kejuruteraan atau saintifik, dan oleh itu dari masa ke masa ia memperoleh banyak perpustakaan siap sedia dan kod program untuk menyelesaikan masalah tertentu.

    Kod ini secara literal diturunkan dari generasi ke generasi, dan juga didokumentasikan dengan baik. Anda boleh mencari banyak penyelesaian siap sedia persamaan fizik matematik, algebra linear (di sini perlu diperhatikan kejayaan pelaksanaan bekerja dengan matriks), kamiran dan persamaan pembezaan dan banyak lagi. Mungkin sukar untuk mencari masalah dalam bidang sains fizikal dan matematik yang mana algoritma dalam Fortran tidak akan dilaksanakan. Dan jika anda mengambil kira pengoptimuman yang sangat baik bagi penyusun Intel untuk pemproses Intel, sokongan untuk pengkomputeran selari pada kelompok berprestasi tinggi, maka menjadi jelas mengapa bahasa ini mengambil tempat pertama yang layak dalam komuniti saintifik. Saya fikir anda boleh mencari pengkompil Fortran yang dipasang pada mana-mana superkomputer.

    Kebanyakan model yang serius, sekurang-kurangnya dalam bidang fizik atmosfera, ditulis dalam Fortran. Ya, ya, ramalan cuaca, yang semua orang minati dari semasa ke semasa, diperoleh melalui pengiraan model yang ditulis dalam bahasa ini. Lebih-lebih lagi, bahasa tidak jumud, tetapi sentiasa bertambah baik. Oleh itu, selepas piawaian 77 dan 90 yang diterangkan sebelum ini, edisi baharu 95, 2003, 2008 muncul, sokongan yang telah diperkenalkan ke dalam penyusun semasa. Versi terkini Fortran telah sedikit sebanyak menyegarkan bahasa lama yang telah diuji, memberikan sokongan untuk gaya moden, menambah pengaturcaraan berorientasikan objek, yang ketiadaannya hampir merupakan kad truf paling penting bagi lawan bahasa ini. Selain itu, Kumpulan Portland telah mengeluarkan PGI CUDA Fortran Compiler, yang membolehkan pengiraan yang sangat selari pada kad video. Oleh itu, pesakit lebih daripada hidup, yang bermaksud pengaturcara Fortran masih dalam permintaan.

    Daripada kata belakang

    Dan sekarang saya ingin kembali kepada topik asal yang dibangkitkan tentang pembelajaran ke program, dan cuba merumuskan secara ringkas kelebihan utama Fortran apabila memilihnya sebagai bahasa pertama.
    • Fortran sangat mudah dipelajari, sintaksnya boleh difahami oleh orang yang tidak terlatih. Sebaik sahaja anda mengetahui asasnya, mudah untuk mempelajari semula bahasa lain.
    • Satu set alat percuma membolehkan anda tidak menerima soalan yang tidak perlu daripada pemegang hak cipta.
    • Bahasa ini biasa kepada guru, kerana ia telah wujud untuk masa yang lama, dan guru kami kebanyakannya mewakili generasi yang lebih tua.
    • Diedarkan secara meluas di seluruh dunia dan merupakan khazanah semua jenis perpustakaan.
    • Dipiawai, merentas platform dan serasi dengan semakan terdahulu.
    • Berguna untuk pelajar jurusan teknikal, terutamanya fizik dan matematik, kerana tumpuannya pada pengiraan saintifik dan kejuruteraan.
    • Relevan dan mendapat permintaan sehingga hari ini.
    Jadi mengapa tidak Fortran?

    Abjad - dalam pengaturcaraan - sistem simbol yang tidak boleh diurai, boleh dibezakan dengan yakin (huruf, nombor, tanda baca, dll.) yang digunakan untuk membina bahasa pengaturcaraan.

    Sintaks ialah sisi bahasa pengaturcaraan yang menerangkan struktur atur cara sebagai set aksara. Sintaks sesuatu bahasa dikontraskan dengan semantiknya. Sintaks sesuatu bahasa menggambarkan bahasa "tulen", manakala semantik memberikan makna kepada pelbagai pembinaan sintaksis.

    Semantik - dalam pengaturcaraan - sistem peraturan untuk menentukan tingkah laku binaan bahasa individu. Semantik menentukan makna semantik ayat dalam bahasa algoritma.

    Bahasa pengaturcaraan peringkat rendah – Autokod, Perhimpunan,

    Bahasa pengaturcaraan peringkat tinggi - Fortran, Algol, Cobol, Pascal, BASIC, C++, Prolog

    Bahasa pengaturcaraan tahap ultra tinggi – APL, ALGOL-68

    Bahasa pengaturcaraan pengiraan - Fortran, Pascal, Algol, BASIC, C

    Bahasa pemprosesan simbolik - Lisp, Prolog, Snoball, dll.

    Bahasa generasi pertama:

    Kod mesin ialah bahasa pengaturcaraan generasi pertama

    Bahasa generasi kedua:

    Asembler

    Bahasa generasi ketiga:

    bahasa-bahasa ini sering ditetapkan sebagai bahasa peringkat "tinggi".

    Bahasa generasi keempat:

    BASIC, COBOL, C dan Pascal

    Bahasa pengaturcaraan generasi kelima:

    Prolog, LISP, C++, Visual Basic, Delphi.

    bahasa pengaturcaraan Fortran

    Bahasa pengaturcaraan peringkat tinggi pertama dengan penterjemah. Dicipta antara 1954 dan 1957 oleh sekumpulan pengaturcara yang diketuai oleh John Backus di IBM. Nama Fortran ialah akronim untuk FORmula TRANslator (penterjemah formula). Fortran digunakan secara meluas terutamanya untuk pengkomputeran saintifik dan kejuruteraan. Salah satu kelebihan Fortran moden ialah sejumlah besar program dan perpustakaan subrutin yang ditulis di dalamnya. Kebanyakan perpustakaan ini sebenarnya adalah hak milik manusia: ia tersedia dalam kod sumber, didokumentasikan dengan baik, dinyahpepijat dan sangat berkesan. Oleh itu, adalah mahal untuk menukar, apatah lagi menulis semula mereka dalam bahasa pengaturcaraan lain, walaupun pada hakikatnya percubaan kerap dilakukan untuk menukar kod FORTRAN secara automatik ke dalam bahasa pengaturcaraan moden.

    Fortran Moden (Fortran 95 dan Fortran 2003) telah memperoleh ciri yang diperlukan untuk pengaturcaraan yang berkesan untuk seni bina pengkomputeran baharu dan membenarkan penggunaan teknologi pengaturcaraan moden, khususnya OOP.

    Evolusi standard bahasa

    Fortran ialah bahasa yang sangat standard, itulah sebabnya ia mudah dibawa ke pelbagai platform. Piawaian bahasa baharu sebahagian besarnya mengekalkan kesinambungan dengan yang lebih lama, yang memungkinkan untuk menggunakan kod daripada program yang ditulis sebelum ini dan mengubah suainya.

    FORTRAN 77 (1980)

    Banyak penambahbaikan telah diperkenalkan:

    Operator untuk membuka dan menutup fail (OPEN, CLOSE) dan output ke peranti standard - CETAK telah diperkenalkan.

    Ditambah jenis rentetan data dan fungsi untuk memprosesnya.

    Pengendali blok IF dan pembinaan IF THEN - ELSE IF THEN - END IF telah diperkenalkan, serta operator kemasukan serpihan program INCLUDE.

    Keupayaan untuk bekerja dengan fail akses langsung telah diperkenalkan.

    Saiz tatasusunan maksimum telah ditingkatkan daripada 3 kepada 7. Sekatan pada indeks tatasusunan telah dialih keluar.

    Keupayaan bekerja dengan prosedur telah dipertingkatkan dan diperluaskan.

    Konsep fail dalaman (iaitu tatasusunan, pembolehubah angka dan rentetan) telah diperkenalkan. Fail dalaman membenarkan, khususnya, penukaran nombor ke rentetan dan baris ke nombor menggunakan operator baca dan tulis standard READ dan WRITE.

    Fortran 90 (1991)

    Standard bahasa telah disemak dengan ketara.

    Format percuma untuk menulis kod telah diperkenalkan. Perihalan tambahan untuk IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST telah muncul.

    Pengendali kawalan dan pembinaan diperkenalkan. Ditambah DO ... END DO (bukannya menamatkan gelung dengan label), DO WHILE, pernyataan pemindahan kawalan ke permulaan gelung CYCLE, binaan pemilihan SELECT CASE (untuk menggantikan binaan IF yang rumit dan pernyataan GOTO), sebagai serta pernyataan akhir unit program, modular atau prosedur dalaman TAMAT .

    Satu set alat penunjuk dan fungsi untuk bekerja dengan RAM telah diperkenalkan (serupa dengan bahasa C).

    Operator untuk bekerja dengan ingatan dinamik telah diperkenalkan (PERUNTUKKAN, NYATAKAN, NULLIFY).

    Menambah komponen perisian MODUL, SWASTA, AWAM, MENGANDUNGI, ANTARA MUKA, PENGGUNAAN, NIAT.

    Menyamarkan tugasan tatasusunan telah diperkenalkan (tugasan apabila melaksanakan syarat logik yang dikenakan pada elemen tatasusunan tanpa menggunakan pengendali keadaan), serta bekerja dengan bahagian tatasusunan. Pengendali dan konstruk WHERE telah diperkenalkan untuk menggantikan sebahagian gelung (sebelah kanan pengendali tugasan tidak berubah). Penyekat tugasan digunakan untuk hampir semua operator, binaan dan fungsi yang beroperasi pada tatasusunan.

    Operasi piawai tugasan, penambahan, penolakan, serta pembahagian dan pendaraban dengan nombor dilanjutkan kepada tatasusunan dan bahagiannya ditakrifkan mengikut bahagian. Dalam kes ini, tugasan mengikut unsur dilakukan.

    Fungsi terbina dalam baharu telah muncul, terutamanya untuk bekerja dengan tatasusunan. Fungsi untuk pengiraan dalam tatasusunan: SEMUA (produk logik) dan MASK (tambahan logik), COUNT (bilangan elemen benar), PRODUCT (hasil elemen tatasusunan), SUM (penambahan elemen tatasusunan), DOT_PRODUCT (produk skalar), MATMUL ( pendaraban matriks). Fungsi bantuan telah ditambah, serta fungsi untuk mengubah suai dan melipat tatasusunan.

    Elemen OOP muncul dalam bahasa. Jenis data terbitan telah diperkenalkan. Senarai berasingan ciri bahasa usang yang bertujuan untuk dialih keluar pada masa hadapan telah diumumkan.

    Ditambah fungsi tambahan untuk bekerja dengan data rentetan, khususnya, fungsi TRIM (mengalihkan ruang belakang) dan REPEAT (pelbagai penyalinan rentetan) dan fungsi penjajaran kiri dan kanan.

    Fortran 95 (1997)

    Pembetulan standard sebelumnya. Pengendali dan pembinaan FORALL telah diperkenalkan, membolehkan lebih fleksibiliti daripada operator dan pembinaan WHERE untuk menetapkan tatasusunan dan menggantikan gelung yang menyusahkan. FORALL membolehkan anda menggantikan mana-mana penugasan bahagian atau klausa WHERE, khususnya, ia menyediakan akses kepada pepenjuru matriks. Pengendali ini dianggap menjanjikan dalam pengkomputeran selari, memudahkan penyejajaran lebih cekap daripada gelung.

    Fortran 2003 (2004)

    Pembangunan lanjut sokongan OOP dalam bahasa. Interaksi dengan sistem pengendalian. Ciri-ciri berikut juga telah ditambah:

    Input/output data tak segerak.

    C Alat Antaramuka

    Meningkatkan peletakan data dinamik

    Piawaian ini menerima sokongan melalui bahasa pengkomputeran selari (Co-Arrays Fortran). Ia juga dirancang untuk meningkatkan dimensi maksimum tatasusunan kepada 15, menambah fungsi matematik khas terbina dalam, dsb.

    Fortran(juga FORTRAN) ini bahasa pengaturcaraan, dibangunkan pada awal 1950-an dan masih digunakan sehingga kini. Nama itu adalah singkatan untuk "FORmula TRANslator". Versi awal bahasa itu dikenali sebagai FORTRAN, tetapi huruf itu tidak lagi menggunakan huruf besar pada Fortran 90. Standard bahasa rasmi kini merujuk kepada bahasa itu sebagai "FORTRAN".

    >Fortran digunakan terutamanya untuk pengiraan saintifik dan analisis berangka. Walaupun pada asalnya ia adalah bahasa prosedural, versi terkini Fortran telah menyertakan beberapa ciri untuk menyokong pengaturcaraan berorientasikan objek untuk pemula.

    Pengkompil FORTRAN pertama telah dibangunkan untuk IBM 704 pada 1954-57 oleh pasukan IBM yang diketuai oleh John W. Backus. Ia merupakan pengkompil yang mengoptimumkan kerana pengarang berpendapat bahawa tiada siapa yang akan menggunakan bahasa itu, walaupun semasa mempelajari pengaturcaraan untuk boneka, melainkan prestasinya setanding dengan bahasa himpunan.

    Bahasa ini menjadi meluas dalam kalangan saintis dan digunakan untuk menulis program intensif secara numerik, yang memaksa pencipta penyusun Fortran untuk bersusah payah menulis semula kod pengkompil untuk menghasilkan kod yang lebih pantas. Hari ini terdapat banyak pembekal penyusun Fortran berprestasi tinggi. Banyak kemajuan dalam teori dan reka bentuk penyusun telah didorong oleh keperluan untuk menjana kod yang bagus untuk program Fortran seperti yang diperlukan untuk asas pengaturcaraan.

    Terdapat beberapa versi bahasa yang diketahui, termasuk FORTRAN IV yang terkenal (juga dikenali sebagai FORTRAN 66), Fortran 77 dan Fortran 90. Piawaian rasmi terakhir untuk bahasa tersebut, yang diterbitkan pada tahun 1997, dikenali sebagai Fortran 95. Versi IBM bagi bahasa tidak pernah menjadi lebih popular , seperti yang dibangunkan oleh syarikat lain, dan ini benar terutamanya untuk FORTRAN IV - WATFOR, versi FORTRAN IV yang dibangunkan di Universiti Waterloo di Kanada, adalah yang paling popular kerana ia mengeluarkan mesej ralat kompilasi lebih baik daripada yang lain. serupa, perisian untuk penjanaan automatik gambar rajah blok daripada program FORTRAN telah dibangunkan di luar IBM

    Pada mulanya, bahasa ini bergantung pada pemformatan kod sumber yang tepat dan penggunaan berat keadaan angka dan pernyataan GOTO. Kebiasaan ini telah dialih keluar daripada versi bahasa yang lebih baharu. Versi seterusnya juga memperkenalkan konsep pengaturcaraan "moden" seperti komen dalam kod sumber dan output teks, pernyataan IF-THEN-ELSE (dalam FORTRAN 77), rekursi (dalam Fortran 90), dan pengkomputeran selari, sambil pada masa yang sama cuba mengekalkan profil "kurus" dan prestasi tinggi Fortran. Antara bahasa berasaskan Fortran yang paling popular ialah SAS, direka untuk mendapatkan laporan statistik, dan SIMSCRIPT, untuk memodelkan proses beratur.

    Penjual komputer saintifik berprestasi tinggi (Burroughs, CDC, Cray, IBM, Alat Texas) menambah sambungan kepada Fortran untuk membolehkan penggunaan ciri perkakasan khas seperti: cache arahan, pemproses sambungan paip, tatasusunan vektor, dll. Contohnya, salah satu penyusun IBM Fortran (H Extended IUP) mengandungi lapisan pengoptimuman yang memaksa arahan kod mesin pastikan beberapa blok aritmetik dalaman sibuk sepanjang masa. Contoh lain ialah CFD, "varian" khas Fortran yang dibangunkan khusus untuk superkomputer ILLIAC IV yang dijalankan di Pusat Penyelidikan NASA Ames. Sambungan ini sama ada hilang dari semasa ke semasa atau unsur-unsur ini dimasukkan ke dalam standard utama; Sambungan utama ialah OpenMP, yang merupakan sambungan merentas platform untuk mengakses ingatan bersama. Satu lagi sambungan baharu, CoArray Fortran, direka untuk mempromosikan pembangunan pengaturcaraan selari dan .

    Percubaan pertama pemula untuk membangun di Erlang boleh menjadi sangat mengecewakan kerana sintaks bahasa ini dianggap sebagai penulisan rahsia oleh ramai pengaturcara yang mula belajar dengan bahasa moden. Sukar untuk menulis penganalisis leksikal apabila hanya satu aksara yang salah boleh mengakibatkan ralat masa jalan dan bukannya ralat kompilasi jika binaan yang ditentukan tidak digunakan. Dalam beberapa versi terawal, tiada objek (OOP), yang dianggap sebagai atribut berguna pengaturcaraan dalam keadaan moden, atau, sebagai contoh, hilang pengedaran dinamik ingatan. Pada masa yang sama, sintaks bahasa Fortran boleh digunakan untuk kerja saintifik dan pengiraan yang melibatkan operasi pada nombor, dan banyak kekurangannya telah diambil kira dalam lebih banyak lagi. versi kemudian. Sebagai contoh, Fortran 95 mempunyai sangat arahan pendek untuk melaksanakan operasi matematik dengan matriks dan tatasusunan, yang bukan sahaja meningkatkan kebolehbacaan program dengan ketara, tetapi juga memberikan informasi berguna untuk pengkompil supaya ia boleh mengvektorkan operasi. Atas sebab ini, Fortran tidak sering digunakan di luar pengkomputeran saintifik dan kejuruteraan; ia kekal sebagai bahasa untuk prestasi tinggi pengiraan berangka.