Pada akhir 1953, John W. Backus mengajukan proposal kepada atasan di IBM untuk mengembangkan alternatif yang lebih praktis untuk bahasa assembly untuk pemrograman mereka IBM 704 mainframe komputer. Backus' historic FORTRAN team consisted of programmers Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt , Robert Nelson, Irving Ziller, Lois Haibt , and David Sayre. [ 3 ] bersejarah FORTRAN 'Tim Backus terdiri dari programmer Richard Goldberg, Sheldon F. Terbaik, Harlan Herrick, Peter Sheridan, Roy Nutt , Robert Nelson, Irving Ziller, Lois Haibt , dan David Sayre. [3] A draft specification for The IBM Mathematical Formula Translating System was completed by mid-1954. Spesifikasi draft untuk Matematika IBM Formula Translating System selesai pada pertengahan 1954. The first manual for FORTRAN appeared in October 1956, with the first FORTRAN compiler delivered in April 1957. Manual pertama untuk FORTRAN muncul pada bulan Oktober 1956, dengan pertama FORTRAN compiler disampaikan pada bulan April 1957. This was an optimizing compiler , because customers were reluctant to use a high-level programming language unless its compiler could generate code whose performance was comparable to that of hand-coded assembly language . Ini merupakan kompiler mengoptimalkan , karena pelanggan enggan untuk menggunakan bahasa pemrograman tingkat-tinggi kecuali penyusunnya bisa menghasilkan kode yang kinerjanya sebanding dengan tangan-kode bahasa assembly .
While the community was skeptical that this new method could possibly out-perform hand-coding, it reduced the number of programming statements necessary to operate a machine by a factor of 20, and quickly gained acceptance. Sementara masyarakat merasa skeptis bahwa metode baru ini mungkin bisa keluar-melakukan hand-coding, ia mengurangi jumlah program laporan yang diperlukan untuk mengoperasikan mesin dengan faktor 20, dan cepat memperoleh penerimaan. Said creator John Backus during a 1979 interview with Think, the IBM employee magazine, "Much of my work has come from being lazy. I didn't like writing programs, and so, when I was working on the IBM 701 , writing programs for computing missile trajectories, I started work on a programming system to make it easier to write programs." [ 4 ] pencipta Said John Backus selama wawancara 1979 dengan Pikirkan, karyawan IBM majalah, "Banyak pekerjaan saya telah datang dari malas itu. Saya tidak suka menulis program, dan sebagainya, ketika saya bekerja di IBM 701 , menulis program untuk komputasi lintasan rudal, saya mulai bekerja pada sistem pemrograman untuk membuatnya lebih mudah untuk menulis program ". [4]
The language was widely adopted by scientists for writing numerically intensive programs, which encouraged compiler writers to produce compilers that could generate faster and more efficient code. Bahasa diadopsi secara luas oleh para ilmuwan untuk menulis program numerik yang intensif, yang mendorong penulis compiler untuk menghasilkan compiler yang dapat menghasilkan kode yang lebih cepat dan lebih efisien. The inclusion of a complex number data type in the language made Fortran especially suited to technical applications such as electrical engineering. Yang dimasukkan bilangan kompleks tipe data dalam bahasa membuat Fortran sangat cocok untuk aplikasi teknis seperti teknik listrik.
By 1960, versions of FORTRAN were available for the IBM 709 , 650 , 1620 , and 7090 computers. Pada 1960, versi FORTRAN yang tersedia untuk IBM 709 , 650 , 1620 , dan 7090 komputer. Significantly, the increasing popularity of FORTRAN spurred competing computer manufacturers to provide FORTRAN compilers for their machines, so that by 1963 over 40 FORTRAN compilers existed. Secara signifikan, meningkatnya popularitas FORTRAN memacu produsen komputer berlomba-lomba memberikan FORTRAN compiler untuk mesin mereka, sehingga pada 1963 lebih dari 40 FORTRAN compiler ada. For these reasons, FORTRAN is considered to be the first widely used programming language supported across a variety of computer architectures. Untuk alasan ini, FORTRAN dianggap secara luas digunakan pertama pemrograman bahasa yang didukung di berbagai arsitektur komputer.
The development of FORTRAN paralleled the early evolution of compiler technology ; indeed many advances in the theory and design of compilers were specifically motivated by the need to generate efficient code for FORTRAN programs. Pengembangan FORTRAN sejajar dengan evolusi awal teknologi compiler , memang banyak kemajuan dalam teori dan desain kompiler secara khusus termotivasi oleh kebutuhan untuk menghasilkan kode yang efisien untuk program FORTRAN.
[ edit ] FORTRAN [ sunting ] FORTRAN
The initial release of FORTRAN for the IBM 704 contained 32 statements , including: Rilis awal FORTRAN untuk IBM 704 berisi 32 laporan , termasuk:
-
DIMENSION
and EQUIVALENCE
statements DIMENSION
dan EQUIVALENCE
laporan - Assignment statements Laporan Penugasan
- Three-way arithmetic
IF
statement. [ note 4 ] Tiga-cara aritmatika IF
pernyataan. [catatan 4] -
IF
statements for checking exceptions ( ACCUMULATOR OVERFLOW
, QUOTIENT OVERFLOW
, and DIVIDE CHECK
); and IF
statements for manipulating sense switches and sense lights IF
laporan untuk memeriksa pengecualian ( ACCUMULATOR OVERFLOW
, QUOTIENT OVERFLOW
, dan DIVIDE CHECK
), dan IF
laporan untuk memanipulasi switch akal dan rasa lampu -
GOTO
, computed GOTO
, ASSIGN
, and assigned GOTO
GOTO
, yang dihitung GOTO
, ASSIGN
, dan ditugaskan GOTO
-
DO
loops DO
loop - Formatted I/O:
FORMAT
, READ
, READ INPUT TAPE
, WRITE
, WRITE OUTPUT TAPE
, PRINT
, and PUNCH
Diformat I / O: FORMAT
, READ
, READ INPUT TAPE
, WRITE
, WRITE OUTPUT TAPE
, PRINT
, dan PUNCH
- Unformatted I/O:
READ TAPE
, READ DRUM
, WRITE TAPE
, and WRITE DRUM
Terformat I / O: READ TAPE
, READ DRUM
, WRITE TAPE
, dan WRITE DRUM
- Other I/O:
END FILE
, REWIND
, and BACKSPACE
Lain I / O: END FILE
, REWIND
, dan BACKSPACE
-
PAUSE
, STOP
, and CONTINUE
PAUSE
, STOP
, dan CONTINUE
-
FREQUENCY
statement (for providing optimization hints to the compiler). [ note 5 ] FREQUENCY
pernyataan (untuk memberikan optimasi petunjuk untuk compiler). [catatan 5]
FORTRAN code on a punched card , showing the specialized uses of columns 1-5, 6 and 73-80. FORTRAN kode pada kartu menekan , menunjukkan penggunaan khusus kolom 1-5, 6 dan 73-80. Before the development of disk files, text editors and terminals, programs were most often entered on a keypunch keyboard onto 80 column punched cards, one line to a card, which would be fed into a card reader in a batch. Sebelum pengembangan file disk, editor teks dan terminal, program yang paling sering dimasukkan pada keypunch keyboard ke 80 kolom kartu menekan, satu baris untuk kartu, yang akan dimasukkan ke card reader di batch. Originally programs were written in a "fixed" column format. Awalnya program ditulis dalam format "tetap" kolom. Column 1 was the comment field, a letter C caused the entire card to be ignored by the compiler. Kolom 1 adalah kolom komentar, surat C menyebabkan seluruh kartu akan diabaikan oleh compiler. Columns 2 to 5 were the label field: a sequence of digits here was taken as a label for the purpose of a GOTO or a FORMAT reference in a WRITE or READ statement. Kolom 2 sampai 5 adalah kolom label: urutan digit di sini diambil sebagai label untuk tujuan suatu GOTO atau referensi FORMAT dalam BACA TULIS atau pernyataan. Column 6 was a continuation field: a non-blank character here caused the card to be taken as a continuation of the statement on the previous card. Kolom 6 adalah kelanjutan bidang: karakter non-blank sini menyebabkan kartu yang akan diambil sebagai kelanjutan dari pernyataan pada kartu sebelumnya. Columns 73 to 80 were ignored, so they were reserved for punching a sequence number which in theory could be used to re-order cards if a stack of cards was dropped, though in practice these were rarely so punched as re-assembling a stack would have to be done manually. Kolom 73 sampai dengan 80 diabaikan, jadi mereka dicadangkan untuk memukul nomor urutan yang secara teori dapat digunakan untuk kartu ulang pesanan jika setumpuk kartu dijatuhkan, meskipun dalam prakteknya ini jarang sehingga menekan seperti kembali merakit stack akan harus dilakukan secara manual. Columns 7 to 72 served as the statement field. Kolom 7-72 menjabat sebagai bidang pernyataan. Later compilers relaxed these restrictions. Kemudian kompiler santai pembatasan ini.
Early FORTRAN compilers did not support recursion in subroutines. Awal FORTRAN compiler tidak mendukung rekursi dalam subrutin. Early computer architectures did not support the concept of a stack, and when they did directly support subroutine calls, the return location was often stored in a single fixed location adjacent to the subroutine code, which does not permit a subroutine to be called again before a previous call of the subroutine has returned. Awal arsitektur komputer tidak mendukung konsep stack, dan ketika mereka melakukannya secara langsung mendukung panggilan subrutin, lokasi kembali sering ditempatkan di lokasi yang tetap tunggal berdekatan dengan kode subroutine, yang tidak mengizinkan subrutin yang akan dipanggil lagi sebelum panggilan sebelumnya subrutin telah kembali. Although not specified in Fortran 77, many F77 compilers supported recursion as an option, while it became a standard in Fortran 90. [ 5 ] Meskipun tidak ditentukan dalam Fortran 77, banyak F77 kompiler didukung rekursi sebagai pilihan, sementara itu menjadi standar dalam Fortran 90. [5]
[ edit ] IBM 1401 FORTRAN [ sunting ] IBM 1401 FORTRAN
FORTRAN was provided for the IBM 1401 by an innovative 63-pass compiler that ran in only 8k of core . FORTRAN diberikan untuk IBM 1401 oleh compiler 63-pass inovatif yang berlari hanya 8k dari inti . It kept the program in memory and loaded overlays that gradually transformed it, in place, into executable form, as described by Haines et al. [ 6 ] The executable form was not machine language ; rather it was interpreted, anticipating UCSD Pascal P-code by two decades. Itu terus program di memori dan dimuat lapisan yang secara bertahap berubah itu, di tempat, ke bentuk yang dapat dijalankan, seperti yang dijelaskan oleh Haines et al. [6] Bentuk eksekusi tidak bahasa mesin , melainkan hal itu ditafsirkan, mengantisipasi Pascal UCSD P-code oleh dua dekade.
[ edit ] FORTRAN II [ sunting ] FORTRAN II
IBM's FORTRAN II appeared in 1958. IBM FORTRAN II muncul pada tahun 1958. The main enhancement was to support procedural programming by allowing user-written subroutines and functions which returned values, with parameters passed by reference . Peningkatan utama adalah untuk mendukung pemrograman prosedural dengan memungkinkan pengguna ditulis subrutin dan fungsi yang kembali nilai-nilai, dengan parameter yang dikirimkan oleh referensi . The COMMON statement provided a way for subroutines to access common (or global ) variables. Pernyataan UMUM memberikan jalan bagi subrutin untuk akses umum (atau global ) variabel. Six new statements were introduced: Enam laporan baru diperkenalkan:
-
SUBROUTINE
, FUNCTION
, and END
SUBROUTINE
, FUNCTION
, dan END
-
CALL
and RETURN
CALL
dan RETURN
-
COMMON
Over the next few years, FORTRAN II would also add support for the DOUBLE PRECISION
and COMPLEX
data types. Selama beberapa tahun ke depan, FORTRAN II juga akan menambahkan dukungan untuk DOUBLE PRECISION
dan COMPLEX
tipe data.
[ edit ] Simple FORTRAN II program [ sunting ] Wikipedia II program FORTRAN
This program, for Heron's formula , reads one data card containing three 5-digit integers A, B, and C as input. Program ini, untuk itu rumus Heron , membaca satu kartu data yang berisi tiga digit bilangan bulat 5 A, B, dan C sebagai input. If A, B, and C cannot represent the sides of a triangle in plane geometry, then the program's execution will end with an error code of "STOP 1". Jika A, B, dan C tidak dapat mewakili sisi segitiga dalam geometri pesawat, maka eksekusi program akan berakhir dengan kode kesalahan "1 STOP". Otherwise, an output line will be printed showing the input values for A, B, and C, followed by the computed AREA of the triangle as a floating-point number with 2 digits after the decimal point. Jika tidak, sebuah jalur output akan dicetak menunjukkan nilai input untuk A, B, dan C, diikuti oleh AREA dihitung dari segitiga sebagai angka floating-point dengan 2 digit setelah titik desimal.
C AREA OF A TRIANGLE WITH A STANDARD SQUARE ROOT FUNCTION C DAERAH SEGITIGA A DENGAN FUNGSI AKAR SQUARE STANDAR
C INPUT - CARD READER UNIT 5, INTEGER INPUT C INPUT - CARD READER 5 UNIT, INPUT INTEGER
C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT C OUTPUT - LINE PRINTER 6 UNIT, OUTPUT REAL
C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING C INPUT ERROR ERROR OUTPUT DISPLAY KODE 1 DI JOB LISTING CONTROL
READ INPUT TAPE 5 , 501 , IA, IB, IC BACA TAPE INPUT 5, 501, IA, IB, IC
501 FORMAT ( 3I5 ) 501 FORMAT (3I5)
C IA, IB, AND IC MAY NOT BE NEGATIVE C IA, IB, DAN IC TIDAK BOLEH NEGATIF
C FURTHERMORE, THE SUM OF TWO SIDES OF A TRIANGLE C Selanjutnya, SUM DUA SISI DARI SEGITIGA A
C IS GREATER THAN THE THIRD SIDE, SO WE CHECK FOR THAT, TOO C lebih besar dari SISI KETIGA, SEHINGGA KITA PERIKSA UNTUK ITU, TERLALU
IF ( IA ) 777, 777, 701 IF (IA) 777 777,, 701
701 IF ( IB ) 777, 777, 702 701 IF (IB) 777, 777, 702
702 IF ( IC ) 777, 777, 703 702 IF (IC) 777, 777, 703
703 IF ( IA + IB - IC ) 777,777,704 703 IF (IA + IB - IC) 777777704
704 IF ( IA + IC - IB ) 777,777,705 704 IF (IA + IC - IB) 777777705
705 IF ( IB + IC - IA ) 777,777,799 705 IF (IB + IC - IA) 777777799
777 STOP 1 777 STOP 1
C USING HERON'S FORMULA WE CALCULATE THE MENGGUNAKAN FORMULA C'S Heron KAMI HITUNG ATAS
C AREA OF THE TRIANGLE C DAERAH SEGITIGA ATAS
799 S = FLOATF ( IA + IB + IC ) / 2.0 799 S = FLOATF (IA + IB + IC) / 2.0
AREA = SQRT ( S * ( S - FLOATF ( IA ) ) * ( S - FLOATF ( IB ) ) * AREA = sqrt (S * (S - FLOATF (IA)) * (S - FLOATF (IB)) *
+ ( S - FLOATF ( IC ) ) ) + (S - FLOATF (IC)))
WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA TULIS OUTPUT TAPE 6, 601, IA, IB, IC, AREA
601 FORMAT ( 4H A = ,I5,5H B = ,I5,5H C = ,I5,8H AREA = ,F10.2, 601 FORMAT (4H A, = I5, 5H B =, i5, 5H C =, i5, 8H AREA =, F10.2,
+ 13H SQUARE UNITS ) + 13h UNIT SQUARE)
STOP STOP
END AKHIR
[ edit ] FORTRAN III [ sunting ] FORTRAN III
A FORTRAN coding form, formerly printed on paper and intended to be used by programmers to prepare programs for punching onto cards by keypunch operators. Sebuah bentuk pengkodean FORTRAN, sebelumnya dicetak di atas kertas dan dimaksudkan untuk digunakan oleh programmer untuk menyiapkan program untuk meninju ke kartu oleh keypunch operator. Now obsolete. Sekarang usang. IBM also developed a FORTRAN III in 1958 that allowed for inline assembler code among other features; however, this version was never released as a product. IBM juga mengembangkan FORTRAN III pada tahun 1958 yang diperbolehkan untuk kode assembler inline antara fitur-fitur lain, namun versi ini tidak pernah dirilis sebagai produk. Like the 704 FORTRAN and FORTRAN II, FORTRAN III included machine-dependent features that made code written in it unportable from machine to machine. Seperti 704 FORTRAN dan FORTRAN II, FORTRAN III termasuk mesin-tergantung fitur yang membuat kode yang ditulis di dalamnya unportable dari mesin ke mesin. Early versions of FORTRAN provided by other vendors suffered from the same disadvantage. Awal versi FORTRAN yang diberikan oleh vendor lainnya menderita dari kerugian yang sama.
[ edit ] FORTRAN IV [ sunting ] FORTRAN IV
Starting in 1961, as a result of customer demands, IBM began development of a FORTRAN IV that removed the machine-dependent features of FORTRAN II (such as READ INPUT TAPE
), while adding new features such as a LOGICAL
data type, logical Boolean expressions and the logical IF statement as an alternative to the arithmetic IF statement. FORTRAN IV was eventually released in 1962, first for the IBM 7030 ("Stretch") computer, followed by versions for the IBM 7090 and IBM 7094 . Mulai tahun 1961, sebagai akibat dari tuntutan pelanggan, IBM memulai pengembangan FORTRAN IV yang dihapus bergantung pada fitur mesin FORTRAN II (seperti READ INPUT TAPE
), sambil menambahkan fitur baru seperti LOGICAL
tipe data, logis ekspresi Boolean dan logis JIKA pernyataan sebagai alternatif dari aritmatika IF pernyataan itu. FORTRAN IV akhirnya dibebaskan pada tahun 1962, pertama untuk IBM 7030 ("Stretch") komputer, diikuti oleh versi untuk IBM 7090 dan IBM 7094 .
By 1965, Fortran IV was supposed to be the "standard" and in compliance with American Standards Association X3.4.3 FORTRAN Working Group. [ 7 ] Pada tahun 1965, Fortran IV seharusnya menjadi "standar" dan sesuai dengan American Standards Association X3.4.3 FORTRAN Kelompok Kerja. [7]
[ edit ] FORTRAN 66 [ sunting ] FORTRAN 66
Perhaps the most significant development in the early history of FORTRAN was the decision by the American Standards Association (now ANSI ) to form a committee to develop an "American Standard Fortran." Mungkin perkembangan yang paling signifikan dalam sejarah awal FORTRAN adalah keputusan oleh American Standards Association (sekarang ANSI ) untuk membentuk sebuah komite untuk mengembangkan sebuah "American Standard Fortran." The resulting two standards, approved in March 1966, defined two languages, FORTRAN (based on FORTRAN IV, which had served as a de facto standard), and Basic FORTRAN (based on FORTRAN II, but stripped of its machine-dependent features). Kedua standar yang dihasilkan, disetujui pada Maret 1966, ditetapkan dua bahasa, FORTRAN (berdasarkan FORTRAN IV, yang pernah menjabat sebagai standar de facto), dan Basic FORTRAN (berdasarkan FORTRAN II, tetapi dilucuti mesin-tergantung fitur-fiturnya). The FORTRAN defined by the first standard became known as FORTRAN 66 (although many continued to refer to it as FORTRAN IV, the language upon which the standard was largely based). The FORTRAN didefinisikan oleh standar pertama kali dikenal sebagai FORTRAN 66 (meskipun banyak terus menyebut sebagai FORTRAN IV, bahasa atas yang standar sebagian besar didasarkan). FORTRAN 66 effectively became the first "industry-standard" version of FORTRAN. FORTRAN 66 efektif menjadi yang pertama "industri-standar" versi FORTRAN. FORTRAN 66 included: FORTRAN 66 meliputi:
- Main program,
SUBROUTINE
, FUNCTION
, and BLOCK DATA
program units Utama program, SUBROUTINE
, FUNCTION
, dan BLOCK DATA
unit program -
INTEGER
, REAL
, DOUBLE PRECISION
, COMPLEX
, and LOGICAL
data types INTEGER
, REAL
, DOUBLE PRECISION
, COMPLEX
, dan LOGICAL
tipe data -
COMMON
, DIMENSION
, and EQUIVALENCE
statements COMMON
, DIMENSION
, dan EQUIVALENCE
laporan -
DATA
statement for specifying initial values DATA
pernyataan untuk menentukan nilai awal - Intrinsic and
EXTERNAL
( eg, library) functions Intrinsik dan EXTERNAL
(misalnya, perpustakaan) fungsi - Assignment statement Pernyataan Penugasan
-
GOTO
, assigned GOTO
, and computed GOTO
statements GOTO
, ditugaskan GOTO
, dan dihitung GOTO
laporan - Logical
IF
and arithmetic (three-way) IF
statements Logical IF
dan aritmatika (tiga-arah) IF
laporan -
DO
loops DO
loop -
READ
, WRITE
, BACKSPACE
, REWIND
, and ENDFILE
statements for sequential I/O READ
, WRITE
, BACKSPACE
, REWIND
, dan ENDFILE
laporan untuk sekuensial I / O -
FORMAT
statement FORMAT
pernyataan -
CALL
, RETURN
, PAUSE
, and STOP
statements CALL
, RETURN
, PAUSE
, dan STOP
laporan - Hollerith constants in
DATA
and FORMAT
statements, and as actual arguments to procedures Hollerith konstanta di DATA
dan FORMAT
pernyataan, dan sebagai argumen aktual dengan prosedur - Identifiers of up to six characters in length Pengidentifikasi sampai enam karakter
- Comment lines Komentar baris
[ edit ] FORTRAN 77 [ sunting ] FORTRAN 77
After the release of the FORTRAN 66 standard, compiler vendors introduced a number of extensions to "Standard Fortran", prompting ANSI in 1969 to begin work on revising the 1966 standard. Setelah merilis standar 66 FORTRAN, vendor compiler memperkenalkan sejumlah ekstensi untuk "Standard Fortran", mendorong ANSI pada tahun 1969 untuk mulai bekerja pada merevisi standar 1966. Final drafts of this revised standard circulated in 1977, leading to formal approval of the new FORTRAN standard in April 1978. Final draf standar revisi ini beredar pada tahun 1977, yang mengarah ke persetujuan formal dari standar FORTRAN baru pada bulan April 1978. The new standard, known as FORTRAN 77 , added a number of significant features to address many of the shortcomings of FORTRAN 66: Standar baru, yang dikenal sebagai FORTRAN 77, menambahkan sejumlah fitur yang signifikan untuk mengatasi banyak kekurangan FORTRAN 66:
- Block
IF
and END IF
statements, with optional ELSE
and ELSE IF
clauses, to provide improved language support for structured programming Blok IF
dan END IF
laporan, dengan opsional ELSE
dan ELSE IF
klausa, untuk memberikan dukungan bahasa lebih baik untuk pemrograman terstruktur - DO loop extensions, including parameter expressions, negative increments, and zero trip counts DO ekstensi loop, termasuk ekspresi parameter, kenaikan negatif, dan nol perjalanan jumlah
-
OPEN
, CLOSE
, and INQUIRE
statements for improved I/O capability OPEN
, CLOSE
, dan INQUIRE
laporan untuk meningkatkan I / O kemampuan - Direct-access file I/O Direct-akses file I / O
-
IMPLICIT
statement IMPLICIT
pernyataan -
CHARACTER
data type, with vastly expanded facilities for character input and output and processing of character-based data CHARACTER
tipe data, dengan memperluas fasilitas jauh untuk input karakter dan output dan pengolahan data berbasis karakter -
PARAMETER
statement for specifying constants PARAMETER
pernyataan untuk menentukan konstanta -
SAVE
statement for persistent local variables SAVE
pernyataan untuk variabel lokal persisten - Generic names for intrinsic functions Nama generik untuk fungsi intrinsik
- A set of intrinsics (
LGE, LGT, LLE, LLT
) for lexical comparison of strings, based upon the ASCII collating sequence. Satu set intrinsik ( LGE, LGT, LLE, LLT
) untuk perbandingan leksikal string, berdasarkan ASCII urutan collation.
- (ASCII functions were demanded by the US Department of Defense , in their conditional approval vote.) (Fungsi ASCII dituntut oleh Departemen Pertahanan AS , dalam suara persetujuan bersyarat mereka.)
In this revision of the standard, a number of features were removed or altered in a manner that might invalidate previously standard-conforming programs. (Removal was the only allowable alternative to X3J3 at that time, since the concept of "deprecation" was not yet available for ANSI standards.) While most of the 24 items in the conflict list (see Appendix A2 of X3.9-1978) addressed loopholes or pathological cases permitted by the previous standard but rarely used, a small number of specific capabilities were deliberately removed, such as: Dalam revisi standar, sejumlah fitur telah dihapus atau diubah dengan cara yang mungkin membatalkan sesuai standar-program yang pernah ". (Removal hanya diijinkan alternatif untuk X3J3 bahwa pada waktu, karena konsep" kutukan belum tersedia untuk standar ANSI daftar.) Sementara sebagian besar dari 24 item dalam konflik (lihat Lampiran A2 X3.9-1978) celah ditujukan atau kasus patologis diijinkan oleh standar sebelumnya tetapi jarang digunakan, sejumlah kecil kemampuan spesifik sengaja dihapus , seperti:
- GREET = 12HHELLO THERE! SAMBUT = 12HHELLO ADA!
- Reading into a H edit (Hollerith field) descriptor in a FORMAT specification. Membaca menjadi sebuah deskriptor H mengedit (Hollerith lapangan) dalam spesifikasi FORMAT.
- Overindexing of array bounds by subscripts. Overindexing batas array dengan subscript.
-
DIMENSION A(10,5)
-
Y= A(11,1)
- Transfer of control into the range of a DO loop (also known as "Extended Range"). Pengalihan kendali ke berbagai loop DO (juga dikenal sebagai "Extended Range").
[ edit ] Variants: Minnesota FORTRAN [ sunting ] Varian: Minnesota FORTRAN
Control Data Corporation computers had another version of FORTRAN 77, called Minnesota FORTRAN (MNF), designed especially for student use, with variations in output constructs, special uses of COMMONs and DATA statements, optimizations code levels for compiling, and detailed error listings, extensive warning messages, and debugs. [ 8 ] Control Data Corporation komputer memiliki versi lain FORTRAN 77, yang disebut Minnesota FORTRAN (MNF), yang dirancang khusus untuk digunakan siswa, dengan variasi dalam output konstruksi, menggunakan khusus dan laporan DATA Commons, optimasi kode tingkat untuk mengkompilasi, dan daftar kesalahan rinci, luas pesan peringatan, dan debugs. [8]
[ edit ] Transition to ANSI Standard Fortran [ sunting ] Transisi ke Standar ANSI Fortran
The development of a revised standard to succeed FORTRAN 77 would be repeatedly delayed as the standardization process struggled to keep up with rapid changes in computing and programming practice. Pengembangan standar revisi untuk berhasil FORTRAN 77 akan berulang kali tertunda sebagai proses standarisasi berjuang untuk mengikuti perubahan yang cepat dalam komputasi dan praktek pemrograman. In the meantime, as the "Standard FORTRAN" for nearly fifteen years, FORTRAN 77 would become the historically most important dialect. Sementara itu, sebagai "Standar FORTRAN" selama hampir lima belas, FORTRAN 77 akan menjadi dialek historis paling penting.
An important practical extension to FORTRAN 77 was the release of MIL-STD-1753 in 1978. [ 9 ] This specification, developed by the US Department of Defense , standardized a number of features implemented by most FORTRAN 77 compilers but not included in the ANSI FORTRAN 77 standard. Perpanjangan praktis yang penting untuk FORTRAN 77 adalah rilis MIL-STD-1.753 pada tahun 1978. [9] Spesifikasi ini, yang dikembangkan oleh Departemen Pertahanan AS , standar sejumlah fitur diimplementasikan oleh sebagian besar kompiler FORTRAN 77 tetapi tidak termasuk dalam ANSI FORTRAN 77 standar. These features would eventually be incorporated into the Fortran 90 standard. Fitur-fitur ini akhirnya akan dimasukkan ke dalam standar 90 Fortran.
The IEEE 1003.9 POSIX Standard, released in 1991, provided a simple means for FORTRAN 77 programmers to issue POSIX system calls. [ 10 ] Over 100 calls were defined in the document — allowing access to POSIX-compatible process control, signal handling, file system control, device control, procedure pointing, and stream I/O in a portable manner. The IEEE 1003,9 POSIX Standar, dirilis pada tahun 1991, disediakan sarana sederhana untuk FORTRAN 77 programmer untuk menerbitkan sistem panggilan POSIX. [10] Lebih dari 100 panggilan yang didefinisikan dalam dokumen - memungkinkan akses ke kompatibel proses kontrol-POSIX, penanganan sinyal, sistem file kontrol, kontrol perangkat, prosedur menunjuk, dan streaming I / O secara portabel.
[ edit ] Fortran 90 [ sunting ] Fortran 90
The much delayed successor to FORTRAN 77, informally known as Fortran 90 (and prior to that, Fortran 8X ), was finally released as an ISO standard in 1991 and an ANSI Standard in 1992. Penerus banyak tertunda FORTRAN 77, informal dikenal sebagai Fortran 90 (dan sebelum itu, Fortran 8X), akhirnya dirilis sebagai standar ISO pada tahun 1991 dan Standar ANSI pada tahun 1992. This major revision added many new features to reflect the significant changes in programming practice that had evolved since the 1978 standard: Ini revisi besar ditambahkan banyak fitur baru untuk mencerminkan perubahan yang signifikan dalam praktek pemrograman yang telah berevolusi sejak standar 1978:
- Free-form source input , also with lowercase Fortran keywords Free-bentuk sumber input , juga dengan kata kunci Fortran kecil
- Identifiers up to 31 characters in length Pengenal sampai dengan 31 karakter panjangnya
- Inline comments Inline komentar
- Ability to operate on arrays (or array sections) as a whole, thus greatly simplifying math and engineering computations. Kemampuan untuk beroperasi pada array (array atau bagian) secara keseluruhan, sehingga sangat menyederhanakan perhitungan matematika dan rekayasa.
- whole, partial and masked array assignment statements and array expressions, such as
X(1:N)=R(1:N)*COS(A(1:N))
keseluruhan, bertopeng array tugas laporan dan parsial dan ekspresi array, seperti X(1:N)=R(1:N)*COS(A(1:N))
-
WHERE
statement for selective array assignment WHERE
pernyataan untuk penugasan array selektif - array-valued constants and expressions, array konstanta bernilai dan ekspresi,
- user-defined array-valued functions and array constructors. array ditetapkan pengguna bernilai fungsi dan konstruktor array.
-
RECURSIVE
procedures RECURSIVE
prosedur - Modules , to group related procedures and data together, and make them available to other program units, including the capability to limit the accessibility to only specific parts of the module. Modul , untuk kelompok terkait prosedur dan data bersama-sama, dan membuatnya tersedia untuk unit program lainnya, termasuk kemampuan untuk membatasi aksesibilitas hanya bagian tertentu dari modul.
- A vastly improved argument-passing mechanism, allowing interfaces to be checked at compile time Sebuah perbaikan argumen jauh-passing mekanisme, yang memungkinkan interface untuk diperiksa pada waktu kompilasi
- User-written interfaces for generic procedures User-ditulis interface untuk prosedur generik
- Operator overloading Operator overloading
- Derived/ abstract data types Berasal / abstrak tipe data
- New data type declaration syntax, to specify the data type and other attributes of variables Data baru tipe deklarasi sintaks, untuk menentukan tipe data dan atribut lainnya dari variabel
- Dynamic memory allocation by means of the
ALLOCATABLE
attribute and the ALLOCATE
and DEALLOCATE
statements Alokasi memori dinamis dengan cara dari ALLOCATABLE
atribut dan ALLOCATE
dan DEALLOCATE
laporan -
POINTER
attribute, pointer assignment, and NULLIFY
statement to facilitate the creation and manipulation of dynamic data structures POINTER
atribut, penempatan penunjuk, dan NULLIFY
pernyataan untuk memfasilitasi penciptaan dan manipulasi dinamis struktur data - Structured looping constructs, with an
END DO
statement for loop termination, and EXIT
and CYCLE
statements for "breaking out" of normal DO
loop iterations in an orderly way konstruksi looping terstruktur, dengan END DO
pernyataan untuk terminasi loop, dan EXIT
dan CYCLE
laporan untuk "melanggar" normal DO
iterasi loop dalam cara yang teratur -
SELECT
. SELECT
. . . . CASE
construct for multi-way selection . CASE
membangun untuk multi-cara seleksi - Portable specification of numerical precision under the user's control Portable spesifikasi presisi numerik di bawah kontrol pengguna
- New and enhanced intrinsic procedures. Baru dan prosedur intrinsik ditingkatkan.
[ edit ] Obsolescence and deletions [ sunting ] keusangan dan penghapusan
Unlike the previous revision, Fortran 90 did not delete any features. (Appendix B.1 says, "The list of deleted features in this standard is empty.") Any standard-conforming FORTRAN 77 program is also standard-conforming under Fortran 90, and either standard should be usable to define its behavior. Berbeda dengan revisi sebelumnya, Fortran 90 tidak menghapus fitur). (Lampiran B.1 mengatakan, "Daftar dihapus dari fitur ini dalam standar adalah kosong." Ada standar-sesuai FORTRAN 77 Program juga standar-sesuai di bawah Fortran 90, dan standar baik harus dapat digunakan untuk menentukan perilakunya.
A small set of features were identified as "obsolescent" and expected to be removed in a future standard. Satu set kecil fitur diidentifikasi sebagai "usang" dan diharapkan akan dihapus dalam standar masa depan.
Obsolescent feature Fitur usang | Example Contoh | Status / Fate in Fortran 95 Status / Nasib di Fortran 95 |
---|
Arithmetic IF-statement Aritmetika IF-pernyataan | IF (X) 10, 20, 30 |
|
Non-integer DO parameters or control variables Non-integer DO parameter atau variabel kontrol yang | DO 9 X= 1.7, 1.6, -0.1 | Deleted Dihapus |
Shared DO-loop termination or Shared DO-loop pemutusan hubungan kerja atau termination with a statement pemutusan hubungan dengan pernyataan other than END DO or CONTINUE selain AKHIR DO atau BERLANJUT | DO 9 J= 1, 10
DO 9 K= 1, 10 9 L= J + K |
Branching to END IF Bercabang untuk END IF
from outside a block dari luar blok | 66 GO TO 77 ; . . .
IF (E) THEN ; . . . 77 END IF | Deleted Dihapus |
Alternate return Alternate kembali | CALL SUBR( X, Y *100, *200 ) |
|
PAUSE statement PAUSE pernyataan | PAUSE 600 | Deleted Dihapus |
ASSIGN statement BERI pernyataan and assigned GO TO statement dan ditugaskan pernyataan GO TO | 100 . . . ASSIGN 100 TO H . . . GO TO H . . . | Deleted Dihapus |
Assigned FORMAT specifiers Ditugaskan FORMAT penspesifikasi | ASSIGN F TO 606 | Deleted Dihapus |
H edit descriptors H mengedit deskriptor | 606 FORMAT ( 9H1GOODBYE. ) | Deleted Dihapus |
Computed GO TO statement Dihitung GO TO pernyataan | GO TO (10, 20, 30, 40), index | (Obso.) (Obso.) |
Statement functions Pernyataan fungsi | FOIL( X, Y )= X**2 + 2*X*Y + Y**2 | (Obso.) (Obso.) |
DATA statements DATA laporan among executable statements antara laporan executable | X= 27.3
DATA A, B, C / 5.0, 12.0. 13.0 / . . . | (Obso.) (Obso.) |
CHARACTER* form of CHARACTER declaration KARAKTER * bentuk deklarasi KARAKTER | CHARACTER*8 STRING ! Use CHARACTER(8) | (Obso.) (Obso.) |
Assumed character length functions panjang karakter Asumsi fungsi |
|
Fixed form source code Tetap bentuk kode sumber | * Column 1 contains * or ! * Kolom 1 berisi * atau! or C for comments. atau C untuk komentar. C Column 6 for continuation. C Kolom 6 untuk kelanjutan. |
|
[ edit ] Fortran 95 [ sunting ] Fortran 95
Fortran 95 was a minor revision, mostly to resolve some outstanding issues from the Fortran 90 standard. Fortran 95 merupakan revisi kecil, sebagian besar untuk menyelesaikan beberapa isu yang beredar dari standar 90 Fortran. Nevertheless, Fortran 95 also added a number of extensions, notably from the High Performance Fortran specification: Namun demikian, Fortran 95 juga menambahkan sejumlah ekstensi, terutama dari High Performance Fortran spesifikasi:
-
FORALL
and nested WHERE
constructs to aid vectorization FORALL
dan bersarang WHERE
konstruksi untuk membantu vektorisasi - User-defined
PURE
and ELEMENTAL
procedures User-defined PURE
dan ELEMENTAL
prosedur - Default initialization of derived type components, including pointer initialization Default inisialisasi komponen tipe turunan, termasuk inisialisasi pointer
- Expanded the ability to use initialization expressions for data objects Memperluas kemampuan untuk menggunakan ekspresi inisialisasi untuk objek data
- Clearly defined that
ALLOCATABLE
arrays are automatically deallocated when they go out of scope. Jelas bahwa ALLOCATABLE
array secara otomatis deallocated ketika mereka keluar dari ruang lingkup.
A number of intrinsic functions were extended (for example a dim
argument was added to the maxloc
intrinsic). Sejumlah fungsi intrinsik yang diperpanjang (misalnya dim
argumen ditambahkan ke maxloc
intrinsik).
Several features noted in Fortran 90 to be deprecated were removed from Fortran 95: Beberapa fitur dicatat dalam Fortran 90 yang akan ditinggalkan telah dihapus dari Fortran 95:
-
DO
statements using REAL
and DOUBLE PRECISION
variables DO
laporan menggunakan REAL
dan DOUBLE PRECISION
variabel - Branching to an
END IF
statement from outside its block Bercabang ke END IF
pernyataan dari luar blok nya -
PAUSE
statement PAUSE
pernyataan -
ASSIGN
and assigned GOTO
statement, and assigned format specifiers ASSIGN
dan ditugaskan GOTO
pernyataan, dan ditugaskan format specifier -
H
edit descriptor. H
sunting deskripsi.
An important supplement to Fortran 95 was the ISO technical report TR-15581: Enhanced Data Type Facilities , informally known as the Allocatable TR. This specification defined enhanced use of ALLOCATABLE
arrays, prior to the availability of fully Fortran 2003-compliant Fortran compilers. Sebuah suplemen penting untuk Fortran 95 adalah laporan teknis ISO TR-15581: Data Jenis Fasilitas, informal dikenal sebagai DIALOKASIKAN. TR Enhanced Spesifikasi ini didefinisikan menggunakan ditingkatkan ALLOCATABLE
array, sebelum ketersediaan sepenuhnya kompatibel Fortran Fortran compiler-2003. Such uses include ALLOCATABLE
arrays as derived type components, in procedure dummy argument lists, and as function return values. menggunakan tersebut termasuk ALLOCATABLE
array sebagai komponen tipe turunan, di dummy daftar argumen prosedur, dan sebagai nilai kembali fungsi. ( ALLOCATABLE
arrays are preferable to POINTER
-based arrays because ALLOCATABLE
arrays are guaranteed by Fortran 95 to be deallocated automatically when they go out of scope, eliminating the possibility of memory leakage . In addition, aliasing is not an issue for optimization of array references, allowing compilers to generate faster code than in the case of pointers.) ( ALLOCATABLE
array lebih baik dari pada POINTER
array berbasis-karena ALLOCATABLE
array dijamin oleh Fortran 95 untuk deallocated secara otomatis ketika mereka keluar dari ruang lingkup, menghilangkan kemungkinan kebocoran memori . Selain itu, aliasing tidak menjadi masalah untuk optimasi dari referensi array, kompiler yang memungkinkan untuk menghasilkan kode lebih cepat daripada dalam kasus pointer.)
Another important supplement to Fortran 95 was the ISO technical report TR-15580: Floating-point exception handling , informally known as the IEEE TR. This specification defined support for IEEE floating-point arithmetic and floating point exception handling . Lain suplemen penting untuk Fortran 95 adalah ISO TR teknis laporan-15580: Floating-point exception handling, informal dikenal sebagai TR IEEE untuk. spesifikasi didefinisikan ini mendukung floating-point IEEE aritmatika dan floating point exception handling .
[ edit ] Conditional compilation and varying length strings [ sunting ] kompilasi Bersyarat string dengan panjang bervariasi
In addition to the mandatory "Base language" (defined in ISO/IEC 1539-1 : 1997), the Fortran 95 language also includes two optional modules: Selain "bahasa Base" wajib (didefinisikan dalam ISO / IEC 1539-1: 1997), Fortran 95 bahasa juga mencakup dua modul opsional:
- Varying character strings (ISO/IEC 1539-2 : 2000) Memvariasikan string karakter (ISO / IEC 1539-2: 2000)
- Conditional compilation (ISO/IEC 1539-3 : 1998) Kompilasi bersyarat (ISO / IEC 1539-3: 1998)
which, together, comprise the multi-part International Standard (ISO/IEC 1539). yang bersama-sama, terdiri dari bagian-multi Standar Internasional (ISO / IEC 1539).
According to the standards developers, "the optional parts describe self-contained features which have been requested by a substantial body of users and/or implementors, but which are not deemed to be of sufficient generality for them to be required in all standard-conforming Fortran compilers." Menurut pengembang standar, "menggambarkan bagian diri-fitur opsional yang terkandung yang telah diminta oleh tubuh besar pengguna dan / atau pelaksana, tetapi yang tidak dianggap menjadi umum cukup bagi mereka untuk diperlukan dalam semua standar-sesuai Fortran compiler. " Nevertheless, if a standard-conforming Fortran does provide such options, then they "must be provided in accordance with the description of those facilities in the appropriate Part of the Standard." Namun demikian, jika standar-sesuai Fortran tidak menyediakan pilihan seperti itu, maka mereka "harus diberikan sesuai dengan deskripsi fasilitas tersebut dalam Bagian sesuai Standar."
[ edit ] Fortran 2003 [ sunting ] Fortran 2003
Fortran 2003 is a major revision introducing many new features. Fortran 2003 merupakan revisi besar memperkenalkan banyak fitur baru. A comprehensive summary of the new features of Fortran 2003 is available at the Fortran Working Group (WG5) official Web site. [ 11 ] Ringkasan komprehensif fitur baru dari Fortran 2003 tersedia di Fortran Kelompok Kerja WG5) resmi situs Web (. [11]
From that article, the major enhancements for this revision include: Dari artikel itu, perangkat tambahan utama untuk revisi ini meliputi:
- Derived type enhancements: parameterized derived types, improved control of accessibility, improved structure constructors, and finalizers. Turunan jenis perangkat tambahan: tipe turunan parameter, pengendalian peningkatan aksesibilitas, perbaikan struktur konstruktor, dan finalizers.
- Object-oriented programming support: type extension and inheritance , polymorphism , dynamic type allocation, and type-bound procedures. Pemrograman berorientasi objek dukungan: tipe ekstensi dan pewarisan , polimorfisme , alokasi tipe dinamis, dan jenis prosedur yang terikat.
- Data manipulation enhancements: allocatable components (incorporating TR 15581), deferred type parameters,
VOLATILE
attribute , explicit type specification in array constructors and allocate statements, pointer enhancements, extended initialization expressions, and enhanced intrinsic procedures. Data manipulasi perangkat tambahan: komponen dialokasikan (memasukkan TR 15581), parameter tipe ditangguhkan, VOLATILE
atribut , spesifikasi eksplisit ketik konstruktor array dan mengalokasikan laporan, perangkat tambahan pointer, ekspresi inisialisasi diperpanjang, dan prosedur intrinsik ditingkatkan. - Input/output enhancements: asynchronous transfer, stream access, user specified transfer operations for derived types, user specified control of rounding during format conversions, named constants for preconnected units, the
FLUSH
statement, regularization of keywords, and access to error messages. Perangkat tambahan input / output: asynchronous transfer, akses streaming, pengguna pengoperasian transfer ditentukan untuk tipe turunan, yang ditentukan user control pembulatan selama konversi format, konstanta bernama untuk unit preconnected, yang FLUSH
pernyataan, regularisasi kata kunci, dan akses ke pesan kesalahan. - Procedure pointers . Prosedur pointer .
- Support for IEEE floating-point arithmetic and floating point exception handling (incorporating TR 15580). Dukungan untuk floating-point IEEE aritmatika dan floating point exception handling (memasukkan TR 15580).
- Interoperability with the C programming language . Interoperabilitas dengan bahasa pemrograman C .
- Support for international usage: access to ISO 10646 4-byte characters and choice of decimal or comma in numeric formatted input/output. Dukungan untuk penggunaan internasional: akses ke ISO 10646 -byte karakter 4 dan pilihan desimal atau koma dalam masukan diformat numerik / output.
- Enhanced integration with the host operating system: access to command line arguments, environment variables , and processor error messages. Enhanced integrasi dengan sistem operasi host: akses ke baris perintah argumen, variabel lingkungan , dan pesan error prosesor.
An important supplement to Fortran 2003 was the ISO technical report TR-19767: Enhanced module facilities in Fortran. This report provided submodules, which make Fortran modules more similar to Modula-2 modules. Sebuah suplemen penting untuk Fortran 2003 adalah ISO laporan teknis TR-19767: fasilitas modul Enhanced dalam Fortran untuk ini. Laporan disediakan submodul, yang membuat Fortran modul lebih mirip Modula-2 modul. They are similar to Ada private child subunits. Mereka adalah serupa dengan Ada subunit anak swasta. This allows the specification and implementation of a module to be expressed in separate program units, which improves packaging of large libraries, allows preservation of trade secrets while publishing definitive interfaces, and prevents compilation cascades. Hal ini memungkinkan spesifikasi dan implementasi modul yang akan dinyatakan dalam satuan program terpisah, yang meningkatkan kemasan perpustakaan besar, memungkinkan pelestarian rahasia dagang sementara penerbitan antarmuka definitif, dan mencegah cascades kompilasi.
[ edit ] Fortran 2008 [ sunting ] Fortran 2008
The most recent standard, ISO/IEC 1539-1:2010, informally known as Fortran 2008, was approved in September 2010. [ 12 ] As with Fortran 95, this is a minor upgrade, incorporating clarifications and corrections to Fortran 2003, as well as introducing a select few new capabilities. Baru-baru ini standar paling, ISO / IEC 1539-1:2010, informal dikenal sebagai Fortran 2008, telah disetujui pada bulan September 2010. [12] Seperti Fortran 95, ini adalah upgrade kecil, menggabungkan klarifikasi dan koreksi atas Fortran 2003, serta sebagai memperkenalkan kemampuan pilih baru sedikit. The new capabilities include: Kemampuan baru meliputi:
- Submodules – Additional structuring facilities for modules; supersedes ISO/IEC TR 19767:2005 Submodul - Fasilitas penataan tambahan untuk modul; menggantikan ISO / IEC TR 19767:2005
- Co-array Fortran – a parallel execution model Co-array Fortran - model eksekusi paralel
- The DO CONCURRENT construct – for loop iterations with no interdependencies The Concurrent DO membangun - untuk iterasi loop tanpa saling ketergantungan
- The CONTIGUOUS attribute – to specify storage layout restrictions Atribut berdekatan - untuk menentukan pembatasan tata letak penyimpanan
- The BLOCK construct – can contain declarations of objects with construct scope The BLOK membangun - dapat berisi deklarasi obyek dengan membangun ruang lingkup
- Recursive allocatable components – as an alternative to recursive pointers in derived types Rekursif dialokasikan komponen - sebagai alternatif untuk pointer rekursif dalam tipe turunan
The Final Draft international Standard (FDIS) is available as document N1830. [ 13 ] Final Draft Standar internasional (FDIS) tersedia sebagai N1830 dokumen. [13]