Fortran - Fortran

Fortran
Fortran logo.svg
Paradigmako'p paradigma: tuzilgan, majburiy (protsessual, ob'ektga yo'naltirilgan ), umumiy, qator
LoyihalashtirilganJon Backus
TuzuvchiJon Backus va IBM
Birinchi paydo bo'ldi1957; 63 yil oldin (1957)
Barqaror chiqish
Fortran 2018 (ISO / IEC 1539-1: 2018) / 2018 yil 28-noyabr; 2 yil oldin (2018-11-28)
Matnni yozishkuchli, statik, manifest
Fayl nomi kengaytmalari.f, .uchun, .f90
Veb-saytfortran-lang.org
Mayor amalga oshirish
Absoft, Cray, GFortran, G95, IBM XL Fortran, Intel, Xitachi, Lahey / Fujitsu, Raqamli algoritmlar guruhi, Watcom-ni oching, PathScale, PGI, Silverfrost, Oracle Solaris studiyasi, Visual Fortran va boshqalar
Ta'sirlangan
Tezlikni kodlash
Ta'sirlangan
ALGOL 58, ASOSIY, C, Chapel,[1] CMS-2, YO'Q, Qal'a, PL / I, PAKT I, MUMPS, IDL, Ratfor
Uchun Fortran avtomatik kodlash tizimi IBM 704 (1956 yil 15 oktyabr), Fortran uchun birinchi dasturchining qo'llanmasi

Fortran (/ˈf.rtræn/; avval FORTRAN, dan olingan Formulalar tarjimasi[2]) umumiy maqsadli, tuzilgan majburiy dasturlash tili bu ayniqsa mos keladi raqamli hisoblash va ilmiy hisoblash.

Dastlab tomonidan ishlab chiqilgan IBM[3] 1950 yillarda ilmiy va muhandislik dasturlari uchun FORTRAN keyinchalik ilmiy hisoblashda ustunlik qildi. U oltmish yildan ortiq vaqtdan beri hisoblash intensiv sohalarida qo'llanilib kelinmoqda raqamli ob-havo bashorati, cheklangan elementlarni tahlil qilish, suyuqlikning hisoblash dinamikasi, geofizika, hisoblash fizikasi, kristallografiya va hisoblash kimyosi. Bu mashhur til yuqori samarali hisoblash[4] va dunyodagi ko'rsatkichlarni baholaydigan va reytingga ega dasturlar uchun ishlatiladi eng tezkor superkompyuterlar.[5][6]

Fortran bir qator versiyalarni o'z ichiga oladi, ularning har biri tilga kengaytmalar qo'shish uchun rivojlanib, avvalgi versiyalar bilan mosligini saqlab qoladi. Keyingi versiyalar uchun qo'llab-quvvatlash qo'shildi tizimli dasturlash va belgilarga asoslangan ma'lumotlarni qayta ishlash (FORTRAN 77), massivlarni dasturlash, modulli dasturlash va umumiy dasturlash (Fortran 90), yuqori ko'rsatkichli Fortran (Fortran 95), ob'ektga yo'naltirilgan dasturlash (Fortran 2003), bir vaqtda dasturlash (Fortran 2008) va mahalliy parallel hisoblash qobiliyatlari (Coarray Fortran 2008/2018).

Fortranning dizayni ko'plab boshqa dasturlash tillari uchun asos bo'lgan. Eng yaxshi tanilganlar orasida ASOSIY, bu FORTRAN II-ga asoslangan sintaksis tozalash, ayniqsa mantiqiy tuzilmalar,[7] va boshqa o'zgarishlar interaktiv muhitda osonroq ishlaydi.[8]

Nomlash

FORTRAN 77 orqali tilning oldingi versiyalarining nomlari odatiy ravishda katta harflar bilan yozilgan (FORTRAN 77 kalit so'zlarda kichik harflardan foydalanish qat'iyan nostandart bo'lgan so'nggi versiya).[iqtibos kerak ] Fortran 90 dan boshlangan yangi versiyalarga nisbatan kapitallashuv bekor qilindi. Rasmiy til standartlar endi tilni "Fortran" deb emas, balki "FORTRAN" deb yozing.

Tarix

1953 yil oxirida, John W. Backus da boshliqlariga taklif bilan chiqdi IBM uchun yanada amaliy alternativani ishlab chiqish assambleya tili ularni dasturlash uchun IBM 704 asosiy kompyuter.[9]:69 Backusning tarixiy FORTRAN jamoasi tarkibiga dasturchilar Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Garold Stern, Lois Haibt va Devid Sayre.[10] Uning kontseptsiyalariga tenglamalarni kompyuterga osonroq kiritish, g'oya tomonidan ishlab chiqilgan J. Halcombe Laning va namoyish etdi Laning va Zierler tizimi 1952 yil[11] Ushbu dasturchilarning ba'zilari shaxmat o'yinchilari bo'lgan va ular mantiqiy fikrlarga ega deb o'ylab IBMda ishlash uchun tanlangan.[12]

Uchun loyiha spetsifikatsiyasi IBM matematik formulalarini tarjima qilish tizimi 1954 yil noyabrgacha yakunlandi.[9]:71 FORTRAN uchun birinchi qo'llanma 1956 yil oktyabrda paydo bo'ldi,[9]:72 birinchi FORTRAN bilan kompilyator 1957 yil aprel oyida etkazib berildi.[9]:75 Bu birinchi edi optimallashtiruvchi kompilyator, chunki mijozlar foydalanishni xohlamadilar yuqori darajadagi dasturlash tili agar uning kompilyatori qo'lda kodlangan yig'ilish tilining ishlashiga yaqinlashadigan kod yaratolmasa.[13]

Jamiyat ushbu yangi usul qo'l bilan kodlashdan ustun bo'lishi mumkinligiga shubha bilan qaramasdan, dasturlash sonini kamaytirdi bayonotlar mashinani 20 marta ishlatish uchun zarur bo'lgan va tezda qabul qilindi. Jon Backus 1979 yilda intervyu paytida aytgan O'ylab ko'ring, IBM xodimlarining jurnali, "Mening ishimning aksariyati dangasa bo'lishdan kelib chiqqan. Men dastur yozishni yoqtirmas edim va shuning uchun IBM 701, raketa traektoriyalarini hisoblash uchun dasturlar yozish, dasturlarni yozishni osonlashtirish uchun dasturlash tizimida ishlay boshladim. "[14]

Til olimlar tomonidan juda intensiv dasturlarni yozish uchun keng qabul qilindi, bu esa kompilyator mualliflarini tezroq va samaraliroq kod ishlab chiqaradigan kompilyatorlar ishlab chiqarishga undadi. A qo'shilishi murakkab sonli ma'lumotlar turi ushbu tilda Fortran ayniqsa elektrotexnika kabi texnik dasturlarga mos keladi.[15]

1960 yilga kelib FORTRAN versiyalari IBM 709, 650, 1620 va 7090 kompyuterlar. E'tiborli tomoni shundaki, FORTRANning tobora ommalashib borayotgani raqobatdosh kompyuter ishlab chiqaruvchilariga o'zlarining mashinalari uchun FORTRAN kompilyatorlarini taqdim etishga turtki bo'ldi, shu bilan 1963 yilga kelib 40 dan ortiq FORTRAN kompilyatorlari mavjud edi. Shu sabablarga ko'ra FORTRAN birinchi bo'lib keng qo'llaniladigan hisoblanadi o'zaro faoliyat platforma dasturlash tili.

Fortranning rivojlanishi bilan parallel bo'lgan kompilyator texnologiyasining dastlabki evolyutsiyasi nazariyasi va dizaynidagi ko'plab yutuqlar kompilyatorlar Fortran dasturlari uchun samarali kod ishlab chiqarish zarurati, xususan.

Fortran tarixining yagona hujjatdagi eng keng qamrovli bayonoti Lorenzo tomonidan quyida keltirilgan kitobda keltirilgan.

FORTRAN

IBM 704 uchun FORTRAN-ning dastlabki versiyasida 32 ta ma'lumotlar mavjud edi bayonotlar shu jumladan:

  • O'lchov va Tenglik bayonotlar
  • Topshiriq bayonotlari
  • Uch tomonlama arifmetik IF arifmetik bayonot natijasi manfiy, nol yoki musbat bo'lganiga qarab, dasturning uchta joyidan biriga boshqarishni topshirgan bayonot.
  • IF istisnolarni tekshirish uchun bayonotlar (AKULATORNI OVERFLOW, MUQADDAN OVERFLOWva BO'LISHNI TEKSHIRISH); va IF manipulyatsiya uchun bayonotlar sezgich kalitlari va sezgir chiroqlar
  • BORISH, hisoblangan BORISH, ASSIGNva tayinlangan BORISH
  • QILING ko'chadan
  • Formatlangan I / O: FORMAT, O'QING, Kirish tasmasini o'qing, YOZING, Chiqish tasmasini yozing, PRINTva PUNCH
  • Formatsiz I / O: Kassetani o'qing, DAVONNI O'QING, Tasmani yozingva DAVON YOZING
  • Boshqa I / O: Faylni tugatish, Qaytishva BACKSPACE
  • PAUSE, TO'XTAva DAVOM ETING
  • Tezlik bayonot (taqdim etish uchun optimallashtirish kompilyatorga ishora qiladi).

Arifmetik IF Ushbu bayonot 704-da mavjud bo'lgan uch tomonlama taqqoslash yo'riqnomasini (lekin osonlikcha amalga oshirib bo'lmaydigan) eslatdi (CAS - akkumulyatorni saqlash bilan taqqoslash). Ushbu bayonot raqamlarni taqqoslashning yagona usulini taqdim etdi - ularning farqini sinab ko'rish orqali. toshib ketish. Keyinchalik bu kamchilikni FORTRAN IV-da kiritilgan "mantiqiy" vositalar bartaraf etdi.

The Tezlik iborasi dastlab (va ixtiyoriy ravishda) arifmetik IF bayonotining uchta bo'lagi uchun filial ehtimolligini berish uchun ishlatilgan. Birinchi FORTRAN kompilyatori ushbu vaznni bajarish uchun ishlatgan kompilyatsiya vaqtida a Monte-Karlo simulyatsiyasi natijalari asosiy bloklarning xotirada joylashishini optimallashtirish uchun ishlatilgan yaratilgan kodning - bu o'z davri uchun juda murakkab optimallashtirish. Monte-Karlo texnikasi Backus va boshqalarning ushbu original dastur bo'yicha hujjatida, Avtomatik kodlash tizimi FORTRAN:

Dasturning asosiy birligi asosiy blok; asosiy blok - bu bitta kirish nuqtasi va bitta chiqish nuqtasi bo'lgan dasturning bir qismi. 4-bo'limning maqsadi 5-bo'lim uchun oldingi bloklar ro'yxatini ko'rsatadigan o'tmishdoshlar jadvalini (PRED jadvali) tayyorlash va har bir asosiy blok uchun oqimning bevosita salafi bo'lishi mumkin bo'lgan har bir asosiy blok uchun ro'yxatlarni va shu bilan birga har bir bunday asosiy blok havolasi. Ushbu jadval dasturni Monte-Karlo uslubida bir marta ishga tushirish orqali olinadi, unda IF tipidagi bayonotlardan kelib chiqadigan va GO TO hisoblangan shartli o'tkazmalarning natijalari FREQUENCY bayonotlari qanday berilgan bo'lsa, mos ravishda tortilgan tasodifiy raqamlar generatori tomonidan aniqlanadi. .[10]

Ko'p yillar o'tgach, Tezlik bayonoti kodga hech qanday ta'sir ko'rsatmadi va sharh bayonoti sifatida qaraldi, chunki kompilyatorlar endi bunday kompilyatsiya vaqtini simulyatsiya qilmaganlar. Xuddi shunday taqdir ham keldi kompilyator haqida maslahatlar bir nechta boshqa dasturlash tillarida, masalan. The ro'yxatdan o'tish kalit so'z C.[iqtibos kerak ]

Birinchi FORTRAN kompilyatori xato aniqlanganda dasturni to'xtatib, uning konsolida xato kodini chiqargan holda diagnostika ma'lumotlarini xabar qildi. Ushbu kodni dasturchi xatolar haqidagi jadvalda operator qo'llanmasida ko'rib chiqishi mumkin va ularga muammoning qisqacha tavsifini beradi.[16][17] Keyinchalik, NASA tomonidan ishlab chiqilgan nolga bo'linish kabi foydalanuvchi xatolarini boshqarish uchun xatolarni boshqarish subroutine,[18] kiritilgan bo'lib, foydalanuvchilarga qaysi kod satrida xato bo'lganligi to'g'risida xabar bergan.

Ruxsat etilgan tartib va ​​zımbalama kartalar

FORTRAN kodi a zımbala karta, 1-5, 6 va 73-80 ustunlarining ixtisoslashtirilgan qo'llanilishini ko'rsatuvchi

Disk fayllari, matn muharrirlari va terminallar ishlab chiqilishidan oldin dasturlar ko'pincha a keypunch 80 ustunli klaviatura perforatorlar, kartaga bitta satr. Olingan kartalar to'plami kompilyatsiya qilish uchun kartani o'quvchiga yuboriladi. Perchin karta kodlarida kichik harflar yoki ko'pgina maxsus belgilar va IBM 026 ning maxsus versiyalari yo'q edi keypunch FORTRAN-da ishlatilgan qayta mo'ljallangan maxsus belgilarni to'g'ri bosib chiqaradigan takliflar.

Perfan kartalarini kiritish amaliyotini aks ettirgan holda, Fortran dasturlari dastlab sobit ustunli formatda yozilgan bo'lib, dastlabki 72 ustun o'n ikki 36 bitli so'zlarga o'qilgan.

1-ustundagi "C" harfi butun kartani sharh sifatida ko'rib chiqilishiga va kompilyator tomonidan e'tiborga olinmasligiga olib keldi. Aks holda, kartaning ustunlari to'rtta maydonga bo'lingan:

  • 1 dan 5 gacha yorliq maydoni bo'lgan: bu erda raqamlar ketma-ketligi DO yoki GO TO va IF kabi boshqaruv bayonotlarida foydalanish yoki WRITE yoki READ bayonotida keltirilgan FORMAT bayonotini aniqlash uchun yorliq sifatida olingan. Etakchi nollarga e'tibor berilmaydi va 0 yaroqli raqam emas.
  • 6 davom etish maydoni edi: bu erda bo'sh yoki noldan boshqa belgi kartani oldingi kartadagi bayonotning davomi sifatida qabul qilishga olib keldi. Davom etish kartalari odatda 1, 2, va boshqalar. va shuning uchun boshlang'ich kartaning davomi ustunida nol bo'lishi mumkin - bu avvalgi kartaning davomi emas.
  • 7 dan 72 gacha bayonotlar maydoni bo'lib xizmat qildi.
  • 73 dan 80 gacha e'tibor berilmagan (IBM 704-lar) kartani o'quvchi faqat 72 ta ustun ishlatilgan).[19]

Shuning uchun 73 dan 80 gacha ustunlar identifikatsiya ma'lumotlari uchun ishlatilishi mumkin, masalan, ketma-ket raqamga yoki matnga zarba berish, bu kartalar to'plami tushirilgan bo'lsa, kartalarni qayta buyurtma qilish uchun ishlatilishi mumkin; ammo amalda bu barqaror, ishlab chiqarish dasturlari uchun saqlanib qolgan. An IBM 519 dastur pastki qismini nusxalash va tartib raqamlarini qo'shish uchun ishlatilishi mumkin. Ba'zi dastlabki kompilyatorlar, masalan, IBM 650-lar, karta o'quvchilaridagi cheklovlar tufayli qo'shimcha cheklovlarga ega edi.[20] Klaviatura tugmachalari 7-ustunga o'tish va 72-ustundan keyin o'tish uchun dasturlash mumkin edi. Keyinchalik kompilyatorlar belgilangan formatdagi cheklovlarni engillashtirdilar va Fortran 90 standartida talab bekor qilindi.

Bayonot maydonida, bo'shliq belgilar (bo'shliqlar) matn tom ma'noda e'tiborsiz qoldirildi. Bu aniqlik uchun nishonlar orasidagi bo'shliqlarni qoldirishga yoki identifikatorlar ichidagi bo'shliqlarni kiritishga imkon berdi. Masalan, AVG OF X ga teng bo'lgan haqiqiy identifikator edi AVGOFXva 101010DO101I=1,101 ga teng bo'lgan, tegishli so'z edi 10101 QILING 101 Men = 1, 101 chunki 6-ustundagi nolga xuddi bo'shliq (!) bo'lgani kabi muomala qilinadi 101010DO101I=1.101 o'rniga edi 10101 DO101I = 1.101, deb nomlangan o'zgaruvchiga 1.101-ni tayinlash DO101I. Vergul bilan nuqta orasidagi ingl.

Hollerit torlari, dastlab faqat FORMAT va DATA bayonotlarida ruxsat berilgan, belgi soni va H harfi (masalan, 26BU ALFANUMERIK MA'LUMOT), bo'shliqlarni belgi qatorida saqlashga imkon beradi. Noto'g'ri hisoblar muammoga aylandi.

FORTRAN II

IBM kompaniyalari FORTRAN II 1958 yilda paydo bo'lgan. Asosiy takomillashtirish qo'llab-quvvatlash edi protsessual dasturlash parametrlarni o'tkazib yuborgan qiymatlarni qaytaradigan foydalanuvchi tomonidan yozilgan pastki dasturlarga va funktsiyalarga ruxsat berish ma'lumotnoma. COMMON bayonoti subroutines uchun umumiy (yoki) kirish usulini taqdim etdi global ) o'zgaruvchilar. Oltita yangi bayonotlar kiritildi:[21]

  • SUBROUTINE, FUNKSIYAva OXIRI
  • Qo'ng'iroq qiling va QAYTISH
  • UMUMIY

Keyingi bir necha yil ichida FORTRAN II ham qo'llab-quvvatlaydi Ikki karra aniqlik va KOMPLEKS ma'lumotlar turlari.

Dastlabki FORTRAN kompilyatorlari "yo'q" ni qo'llab-quvvatladilar rekursiya pastki dasturlarda. Dastlabki kompyuter arxitekturalari stek tushunchasini qo'llab-quvvatlamagan va ular subroutine chaqiriqlarini bevosita qo'llab-quvvatlaganida, qaytish joyi ko'pincha subroutine kodiga ulashgan bir joyda saqlangan (masalan, IBM 1130 ) yoki ma'lum bir mashina registri (IBM 360 va boshq), bu faqat rekvizitsiyaga imkon beradi, agar stek dasturiy ta'minot bilan ta'minlansa va qo'ng'iroq qilinmasdan oldin qaytib manzil stackda saqlansa va qo'ng'iroq qaytgandan keyin tiklansa. FORTRAN 77-da ko'rsatilmagan bo'lsa-da, ko'plab F77 kompilyatorlari variant sifatida rekursiyani qo'llab-quvvatladilar va Burrouz meynfreymlari, o'rnatilgan rekursiya bilan yaratilgan bo'lib, buni sukut bo'yicha amalga oshirdi. Fortran 90-da yangi RECURSIVE kalit so'zi orqali standart bo'ldi.[22]

Oddiy FORTRAN II dasturi

Ushbu dastur, uchun Heron formulasi, kirish joyi sifatida uchta 5 xonali A, B va C butun sonlarini o'z ichiga olgan lenta g'altagidagi ma'lumotlarni o'qiydi. "Tur" deklaratsiyalari mavjud emas: nomi I, J, K, L, M yoki N bilan boshlanadigan o'zgaruvchilar "sobit nuqta" (ya'ni butun sonlar), aks holda suzuvchi nuqta. Ushbu misolda butun sonlar qayta ishlanishi kerakligi sababli, o'zgaruvchilarning nomlari "I" harfi bilan boshlanadi. O'zgaruvchining nomi harf bilan boshlanishi kerak va har ikkala harf va raqam bilan davom etishi mumkin, FORTRAN II-da oltita belgidan iborat. Agar A, B va C tekislik geometriyasida uchburchakning tomonlarini aks ettira olmasa, u holda dasturning bajarilishi "STOP 1" xato kodi bilan tugaydi. Aks holda, A, B va C uchun kirish qiymatlarini ko'rsatadigan chiqish chizig'i, so'ngra uchburchakning hisoblangan AREA suzuvchi nuqta sifatida chiqadigan chiziq bo'ylab o'nta bo'shliqni egallagan va o'nli kasrdan keyin 2 ta raqam ko'rsatilgan , 601 yorlig'i bilan FORMAT bayonotining F10.2-dagi .2.

C standart maydonida ildiz otish funktsiyasiga ega bo'lgan uchburchak maydoniC INPUT - lenta o'qiydigan birlik 5, INTEGER INPUTC OUTPUT - LINE PRINTER UNIT 6, Haqiqiy chiqishC KIRISH XATOSI KO'RSATISH XATOSI XATO ChIQARISh KODI 1 Ishni boshqarish ro'yxatiga O'QING KIRITISH Lenta 5, 501, IA, IB, TUSHUNARLI  501 FORMAT (3I5)C IA, IB va IC salbiy yoki nolga aylanmasligi mumkinC DAVOMI, TRANGULTNING IKKI Tomonining yig'indisiC Uchinchi Tomondan Zo'rroq bo'lishi kerak, shuning uchun biz buni tekshiramiz IF (IA) 777, 777, 701  701 IF (IB) 777, 777, 702  702 IF (TUSHUNARLI) 777, 777, 703  703 IF (IA+IB-TUSHUNARLI) 777, 777, 704  704 IF (IA+TUSHUNARLI-IB) 777, 777, 705  705 IF (IB+TUSHUNARLI-IA) 777, 777, 799  777 TO'XTA 1S HERONNING FORMULASIDAN FOYDALANADI, biz ularni hisoblaymizUchburchakning hududi  799 S = FLOATF (IA + IB + TUSHUNARLI) / 2.0 Hudud = SQRTF( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) *+     (S - FLOATF(TUSHUNARLI))) YOZING Chiqish Lenta 6, 601, IA, IB, TUSHUNARLI, Hudud  601 FORMAT (4H A= ,I5,5H  B= ,I5,5H  C= ,I5,8H  Hudud= ,F10.2,+        13H Kvadrat UNITS) TO'XTA OXIRI

FORTRAN III

Qog'ozga bosilgan va dasturchilar tomonidan kartochkalarga zımbalama dasturlarini tayyorlash uchun foydalanishga mo'ljallangan FORTRAN kodlash shaklini takrorlash. keypunch operatorlar. Endi eskirgan.

IBM shuningdek, a FORTRAN III 1958 yilda bunga imkon berdi inline montaj boshqa funktsiyalar qatorida kod; ammo, ushbu versiya hech qachon mahsulot sifatida chiqarilmagan. 704 FORTRAN va FORTRAN II singari, FORTRAN III ham mashinaga bog'liq xususiyatlarni o'z ichiga olgan, bu esa unda yozilgan kodni mashinadan mashinaga ko'chirib olib bo'lmaydi.[9]:76 Boshqa sotuvchilar tomonidan taqdim etilgan FORTRANning dastlabki versiyalari xuddi shunday noqulaylikdan aziyat chekishgan.

IBM 1401 FORTRAN

FORTRAN uchun taqdim etildi IBM 1401 butunlay o'zida ishlaydigan 63 fazali innovatsion kompilyator tomonidan kompyuter asosiy xotira faqat 8000 (olti bitli) belgilar. Tuzuvchini lentadan yoki 2200-kartali maydonchadan boshqarish mumkin; u lenta yoki diskni saqlash joyidan foydalanmadi. Bu dasturni xotirada saqladi va yuklandi qoplamalar asta-sekin uni o'rniga, Hayns ta'riflaganidek, bajariladigan shaklga o'zgartirdi.[23] Ushbu maqola har ikkala nashrida ham qayta nashr etilgan, tahrir qilingan Tuzuvchi anatomiyasi [24] va "Fortran spetsifikatsiyalari va ishlash tartibi, IBM 1401" IBM qo'llanmasida.[25] Bajariladigan shakl butunlay emas edi mashina tili; Oldin suzuvchi nuqtali arifmetik, sub-skript, kirish / chiqish va funktsiyalarga oid ma'lumotlar sharhlangan UCSD Paskal P-kod ikki o'n yillikda.

Keyinchalik IBM 1400 seriyali kompyuterlar uchun FORTRAN IV kompilyatorini taqdim etdi.[26]

FORTRAN IV

IBM kompaniyasi mijozlarning talablari natijasida 1961 yildan boshlab FORTRAN IV ishlab chiqarishni boshladi. FORTRAN IV FORTRAN II ning mashinaga bog'liq xususiyatlarini olib tashladi (masalan Kirish tasmasini o'qingkabi yangi xususiyatlarni qo'shganda) Mantiqiy ma'lumotlar turi, mantiqiy Mantiqiy ifodalar va mantiqiy IF bayonoti ga alternativa sifatida arifmetik IF bayonoti. FORTRAN IV nihoyat 1962 yilda birinchi bo'lib chiqdi IBM 7030 ("Stretch") kompyuter, so'ngra uchun versiyalar IBM 7090, IBM 7094, va keyinroq IBM 1401 1966 yilda.

1965 yilga kelib, FORTRAN IV-ga mos kelishi kerak edi standart tomonidan ishlab chiqilmoqda Amerika standartlari assotsiatsiyasi X3.4.3 FORTRAN ishchi guruhi.[27]

1966 yildan 1968 yilgacha IBM uning uchun bir nechta FORTRAN IV kompilyatorlarini taklif qildi Tizim / 360, har biri kompilyatorning ishlashi uchun zarur bo'lgan minimal xotirani ko'rsatadigan harflar bilan nomlangan.[28](F, G, H) harflari xotira hajmini ko'rsatish uchun System / 360 model raqamlari bilan ishlatilgan kodlarga mos keldi va har bir harf o'sishi ikki baravar katta:[29]:p. 5

  • 1966: DOS / 360 uchun FORTRAN IV F (64K bayt)
  • 1966 yil: OS / 360 uchun FORTRAN IV G (128K bayt)
  • 1968 yil: OS / 360 uchun FORTRAN IV H (256K bayt)

Taxminan shu vaqtda FORTRAN IV Vaterloo universiteti WATFOR va shu kabi muhim ta'lim vositasi va dasturiga aylana boshladi. WATFIV oldingi kompilyatorlarning murakkab kompilyatsiya va bog'lash jarayonlarini soddalashtirish uchun yaratilgan.

FORTRAN 66

Ehtimol, FORTRANning dastlabki tarixidagi eng muhim voqea Amerika standartlari assotsiatsiyasi (hozir Amerika milliy standartlari instituti (ANSI)) BEMA homiyligidagi qo'mitani shakllantirish, Biznes uskunalarini ishlab chiqaruvchilar assotsiatsiyasi Amerika standarti Fortran. Natijada 1966 yil mart oyida tasdiqlangan ikkita standart ikkita tilni aniqladi, FORTRAN (amalda standart bo'lib xizmat qilgan FORTRAN IV asosida) va Asosiy FORTRAN (FORTRAN II asosida, lekin mashinaga bog'liq xususiyatlaridan mahrum). Rasmiy ravishda X3.9-1966 deb belgilangan birinchi standart bilan belgilangan FORTRAN nomi ma'lum bo'ldi FORTRAN 66 (garchi ko'pchilik buni FORTRAN IV deb atashni davom ettirgan bo'lsa-da, standart asosan ushbu tilga asoslangan edi). FORTRAN 66 samarali ravishda FORTRANning birinchi sanoat standart versiyasiga aylandi. FORTRAN 66 tarkibiga quyidagilar kiradi:

  • Asosiy dastur, SUBROUTINE, FUNKSIYAva MA'LUMOTNI blokirovka qilish dastur birliklari
  • INTEGER, HAQIQIY, Ikki karra aniqlik, KOMPLEKSva Mantiqiy ma'lumotlar turlari
  • UMUMIY, O'lchovva Tenglik bayonotlar
  • MA'LUMOT boshlang'ich qiymatlarni ko'rsatish uchun bayonot
  • Ichki va Tashqi (masalan, kutubxona) funktsiyalari
  • Topshiriq bayonoti
  • BORISH, hisoblangan BORISH, tayinlangan BORISHva ASSIGN bayonotlar
  • Mantiqiy IF va arifmetik (uch tomonlama) IF bayonotlar
  • QILING loop bayonoti
  • O'QING, YOZING, BACKSPACE, Qaytishva ENDFILE ketma-ket I / O uchun bayonotlar
  • FORMAT bayonot va tayinlangan format
  • Qo'ng'iroq qiling, QAYTISH, PAUSEva TO'XTA bayonotlar
  • Hollerit konstantalari yilda MA'LUMOT va FORMAT bayonotlar va protseduralarga dalil sifatida
  • Uzunligi oltita belgigacha bo'lgan identifikatorlar
  • Fikr satrlari
  • OXIRI chiziq

FORTRAN 77

FORTRAN-77 dasturi kompilyator chiqishi bilan yozilgan CDC 175 da Axen universiteti, Germaniya, 1987 yilda
4.3 BSD uchun Raqamli uskunalar korporatsiyasi (DEC) VAX, ko'rsatib qo'llanma FORTRAN 77 (f77) kompilyatori uchun

FORTRAN 66 standarti chiqarilgandan so'ng kompilyator sotuvchilari bir nechta kengaytmalarni taqdim etishdi Standart Fortran, 1969 yilda ANSI qo'mitasi X3J3 homiyligida 1966 yilgi standartni qayta ishlash bo'yicha ishni boshlashga undadi CBEMA, Kompyuter biznes uskunalarini ishlab chiqaruvchilar assotsiatsiyasi (sobiq BEMA). Ushbu qayta ko'rib chiqilgan standartning yakuniy loyihalari 1977 yilda tarqatilib, 1978 yil aprel oyida yangi FORTRAN standartining rasmiy tasdiqlanishiga olib keldi. Yangi standart FORTRAN 77 va rasmiy ravishda X3.9-1978 deb belgilangan, FORTRAN 66 ning ko'plab kamchiliklarini bartaraf etish uchun bir qator muhim xususiyatlarni qo'shdi:

  • Bloklash IF va Agar tugasa bayonotlar, ixtiyoriy ravishda BOShQA va BOShQA moddalarni yaxshilash uchun tilni qo'llab-quvvatlashni ta'minlash tizimli dasturlash
  • QILING parametr kengaytmalari, manfiy o'sish va nol saylashni o'z ichiga olgan pastadir kengaytmalari
  • OCHIQ, YAQINva SO'RAMOQ I / O qobiliyatini yaxshilash uchun bayonotlar
  • To'g'ridan-to'g'ri kirish fayli
  • TA'MINLASH e'lon qilinmagan o'zgaruvchilar INTEGER bo'lgan yopiq konventsiyalarni bekor qilish uchun, agar ularning nomi I, J, K, L, M yoki N bilan boshlangan bo'lsa (va aks holda REAL)
  • Xarakter Xollerit satrlarini belgilarga asoslangan ma'lumotlarni kiritish va chiqarish va qayta ishlash uchun juda kengaytirilgan imkoniyatlar bilan almashtiradigan ma'lumotlar turi
  • PARAMETR konstantalarni aniqlash uchun bayonot
  • Saqlash doimiy mahalliy o'zgaruvchilar uchun bayonot
  • Ichki funktsiyalarning umumiy nomlari (masalan: SQRT kabi boshqa turdagi argumentlarni ham qabul qiladi KOMPLEKS yoki Haqiqat * 16).
  • Ichki narsalar to'plami (LGE, LGT, LLE, LLT) uchun leksik ga asoslangan satrlarni taqqoslash ASCII taqqoslash ketma-ketligi. (Ushbu ASCII funktsiyalari tomonidan talab qilingan AQSh Mudofaa vazirligi, ularni shartli tasdiqlashda ovoz berish.[iqtibos kerak ])

Ushbu standartni qayta ko'rib chiqishda bir qator xususiyatlar olib tashlandi yoki o'zgartirildi, bu avvalgi standartga mos keladigan dasturlarni bekor qilishi mumkin edi.(O'chirish o'sha paytdagi X3J3 ga yagona muqobil alternativ edi, chunki "amortizatsiya "ANSI standartlari uchun hali mavjud emas edi.)Qarama-qarshiliklar ro'yxatidagi 24 ta narsaning aksariyati (X3.9-1978-sonli A2-ilovaga qarang) bo'shliqlarni yoki avvalgi standart tomonidan ruxsat berilgan, ammo kamdan kam qo'llaniladigan patologik holatlarni ko'rib chiqayotgan bo'lsa-da, kam sonli o'ziga xos imkoniyatlar ataylab olib tashlandi, masalan:

  • Hollerit konstantalari va Xollerit kabi ma'lumotlar Salom = 12SALOM U YERDA!
  • FORMAT spetsifikatsiyasida H tahrirlash (Hollerit maydoni) tavsiflovchisiga o'qish
  • Obstruktsiyalar bo'yicha qator chegaralarini ortiqcha indekslash
     O'lchov A(10,5) Y=  A(11,1)
  • Boshqaruvni DO tsikli doirasidan tashqariga va orqaga o'tkazish ("Kengaytirilgan diapazon" nomi bilan ham tanilgan)

Variantlar: Minnesota FORTRAN

Ma'lumotlar korporatsiyasi kompyuterlarda FORTRAN 77 ning MINNESOTA FORTRAN (MNF) deb nomlangan yana bir versiyasi bor edi, ayniqsa talabalar foydalanishi uchun mo'ljallangan, chiqish konstruktsiyalarining o'zgarishi, COMMON va DATA bayonotlarining maxsus ishlatilishi, kompilyatsiya uchun optimallashtirish kodlari darajasi, batafsil xatolar ro'yxati, keng ogohlantirish xabarlari va disk raskadrovka xususiyatlari.[30] MNF odamlar tomonidan ishlab chiqilgan (Liddiard & Mundstock) Minnesota universiteti. [31] MNF asosan bepul mavjud edi.

ANSI Standard Fortran-ga o'tish

FORTRAN 77-ga erishish uchun qayta ko'rib chiqilgan standartni ishlab chiqish bir necha bor kechiktirilishi mumkin edi, chunki standartlashtirish jarayoni hisoblash va dasturlash amaliyotidagi tez o'zgarishlarga rioya qilish uchun kurash olib bordi. Shu orada, deyarli o'n besh yil davomida "standart FORTRAN" sifatida FORTRAN 77 tarixiy jihatdan eng muhim lahjaga aylanadi.

1978 yilda MIL-STD-1753 chiqarilishi FORTRAN 77 uchun muhim amaliy kengaytma edi.[32] Tomonidan ishlab chiqilgan ushbu spetsifikatsiya AQSh Mudofaa vazirligi, aksariyat FORTRAN 77 kompilyatorlari tomonidan amalga oshiriladigan, ammo ANSI FORTRAN 77 standartiga kiritilmagan bir qator xususiyatlarni standartlashtirdi. Ushbu xususiyatlar oxir-oqibat Fortran 90 standartiga kiritiladi.

The IEEE 1003.9 POSIX 1991 yilda chiqarilgan Standard, FORTRAN 77 dasturchilariga POSIX tizim qo'ng'iroqlarini chiqarish uchun oddiy vositani taqdim etdi.[33] Hujjatda 100 dan ortiq qo'ng'iroqlar aniqlangan - ular POSIX-ga mos keluvchi jarayonlarni boshqarish, signallarni boshqarish, fayl tizimini boshqarish, qurilmalarni boshqarish, protseduralarni boshqarish va oqim I / U-ni ko'chma tarzda olish imkoniyatini beradi.

Fortran 90

Norasmiy sifatida tanilgan FORTRAN 77 ning juda kechiktirilgan vorisi Fortran 90 (va undan oldin, Fortran 8X), nihoyat 1991 yilda ISO / IEC 1539: 1991 standarti va 1992 yilda ANSI standarti sifatida chiqarildi. Rasmiy imloni FORTRAN-dan Fortran-ga o'zgartirishdan tashqari, ushbu yirik tahrir dasturlash amaliyotidagi muhim o'zgarishlarni aks ettiruvchi ko'plab yangi xususiyatlarni qo'shdi. 1978 yil standartidan beri rivojlanib kelgan:

  • Erkin shaklda manba kiritish, shuningdek kichik Fortran kalit so'zlari bilan
  • Uzunligi 31 belgigacha bo'lgan identifikatorlar (Oldingi standartda bu atigi olti belgidan iborat edi).
  • Ichki sharhlar
  • Massivlar (yoki massivlar bo'limlari) ustida umuman ishlash qobiliyati, shu bilan matematik va muhandislik hisob-kitoblari ancha soddalashtirilgan.
    • kabi massivni to'liq, qisman va maskalangan massivlarni tayinlash bayonotlari va qator ifodalari X(1:N)=R(1:N)*COS(A(1:N))
    • Qaerda massivni tanlab belgilash uchun bayonot
    • qator qiymatlari va doimiyliklari,
    • foydalanuvchi tomonidan aniqlangan massiv qiymatlari funktsiyalari va massiv konstruktorlari.
  • RECURSIVE protseduralar
  • Modullar, guruh bilan bog'liq protseduralar ma'lumotlar bilan birgalikda va ularni boshqa dastur bo'linmalariga, shu jumladan modulning faqat ma'lum qismlariga kirishni cheklash imkoniyatiga ega bo'lishiga imkon bering.
  • Imkoniyat beradigan juda yaxshilangan argumentlarni uzatish mexanizmi interfeyslar kompilyatsiya vaqtida tekshirilishi kerak
  • Umumiy protseduralar uchun foydalanuvchi tomonidan yozilgan interfeyslar
  • Operatorning haddan tashqari yuklanishi
  • Ma'lumotlarning olingan (tuzilgan) turlari
  • Ma'lumotlar turini va o'zgaruvchilarning boshqa atributlarini aniqlash uchun yangi ma'lumotlar turini e'lon qilish sintaksisi
  • Xotirani dinamik ravishda taqsimlash yordamida BARCHA xususiyati va BERING va DEALOCATE bayonotlar
  • POINTER atribut, ko'rsatgich tayinlash va Bekor qilish dinamikani yaratish va manipulyatsiyani engillashtirish uchun bayonot ma'lumotlar tuzilmalari
  • Tuzilgan halqa konstruktsiyalari, bilan QILING tsiklni tugatish uchun bayonot va CHIQISH va VAQT normal tugatish uchun bayonotlar QILING tartibli tarzda pastadir takrorlash
  • SELECT . . . Ish ko'p tomonlama tanlov uchun qurish
  • Foydalanuvchining nazorati ostida raqamli aniqlikning ko'chma spetsifikatsiyasi
  • Yangi va takomillashtirilgan ichki protseduralar.

Eskirganlik va o'chirish

Oldingi tahrirdan farqli o'laroq, Fortran 90 hech qanday xususiyatlarni o'chirmadi.[34] Har qanday standartga mos keladigan FORTRAN 77 dasturi ham Fortran 90 standartiga mos keladi va har ikkala standart ham uning xatti-harakatini belgilashda foydalanishi kerak.

Kichkina funktsiyalar to'plami "eskirgan" deb topildi va kelajakdagi standartda olib tashlanishi kutilmoqda. Ushbu dastlabki versiya xususiyatlarining barcha funktsiyalari yangi Fortran 95 funktsiyalari tomonidan amalga oshiriladi. Ba'zilari eski dasturlarni ko'chirishni soddalashtirish uchun saqlanadi, ammo oxir-oqibat o'chirilishi mumkin.

Eskirish xususiyatiMisolFortran 95-dagi holat / taqdir
Arifmetik IF-bayonot
 IF (X) 10, 20, 30
Eskirgan
To'liq bo'lmagan DO parametrlari yoki boshqaruv o'zgaruvchilari
 QILING 9 X= 1.7, 1.6, -0.1
O'chirildi
Birgalikda DO-loopni tugatish yoki
bayonot bilan tugatish
END DO yoki CONTINUE tashqari
 QILING 9 J= 1, 10     QILING 9 K= 1, 10  9       L=  J + K
Eskirgan
END IFgacha tarvaqaylab ketilmoqda

blok tashqarisidan

 66   GO TO 77 ; . . . IF (E) Keyin ;     . . . 77   Agar tugasa
O'chirildi
Muqobil qaytish
 Qo'ng'iroq qiling SUBR( X, Y, *100, *200 )
Eskirgan
PAUSE bayonoti
 PAUSE 600
O'chirildi
ASSIGN bayonoti
va GO TO bayonotiga tayinlangan
 100   . . . ASSIGN 100 TO H  . . . GO TO H . . .
O'chirildi
Belgilangan raqamlar va FORMAT spetsifikatorlari
 ASSIGN 606 TO F ... YOZING ( 6, F )...
O'chirildi
H tahrirlovchilar
 606  FORMAT ( 9H1 YAXSHILIK. )
O'chirildi
Hisoblangan GO TO bayonoti
 GO TO (10, 20, 30, 40), indeks
(eskirgan)
Bayon qilish funktsiyalari
 FOLYO( X, Y )=  X**2 + 2*X*Y + Y**2
(eskirgan)
DATA bayonotlari
bajariladigan bayonotlar orasida
 X= 27.3 MA'LUMOT A, B, C  / 5.0, 12.0, 13.0 / . . .
(eskirgan)
CHARACTER * CHARACTER deklaratsiyasining shakli
 Xarakter*8 STRING   ! CHARACTER (8) dan foydalaning
(eskirgan)
Belgilangan uzunlik funktsiyalari
 Xarakter*(*) STRING
(eskirgan)[35]
Ruxsat etilgan ariza manba kodi1-ustunda C yoki * yoki! sharhlar uchun.
Izoh raqamlari uchun 1 dan 5 gacha ustunlar
Davomi uchun 6-ustundagi har qanday belgi.
73 va undan yuqori ustunlar e'tiborga olinmaydi
(eskirgan)

"Salom Dunyo!" misol

dastur Salom Dunyo     chop etish *, "Salom Dunyo!"tugatish dasturi Salom Dunyo

Fortran 95

Fortran 95, rasmiy ravishda ISO / IEC 1539-1: 1997 sifatida nashr etilgan, bu Fortran 90 standartidagi ba'zi hal qilinmagan muammolarni hal qilish uchun kichik qayta ko'rib chiqish edi. Shunga qaramay, Fortran 95 shuningdek, qator kengaytmalarni qo'shdi, xususan Yuqori samarali Fortran spetsifikatsiyasi:

  • BARCHA UCHUN va ichki Qaerda vektorlashtirishga yordam beradigan konstruktsiyalar
  • Foydalanuvchi tomonidan belgilangan Toza va Elementar protseduralar
  • Olingan turdagi komponentlarning standart ishga tushirilishi, shu jumladan ko'rsatgichni ishga tushirish
  • Ma'lumot ob'ektlari uchun boshlang'ich iboralarini ishlatish qobiliyati kengaytirildi
  • Ko'rsatkichlarni boshlash NULL ()
  • Buni aniq belgilab qo'ydi BARCHA massivlar doiradan chiqib ketganda avtomatik ravishda taqsimlanadi.

Bir qator ichki funktsiyalar kengaytirildi (masalan, a xira argument qo'shildi maxloc ichki).

Fortran 90-da "eskirgan" deb nomlangan bir nechta xususiyatlar Fortran 95-dan olib tashlandi:

  • QILING yordamida bayonotlar HAQIQIY va Ikki karra aniqlik indeks o'zgaruvchilari
  • Angacha tarvaqaylab ketish Agar tugasa uning blokidan tashqaridagi bayonot
  • PAUSE bayonot
  • ASSIGN va tayinlangan BORISH bayonoti va tayinlangan format aniqlagichlari
  • H Xollerit tahrirlovchisi.

Fortran 95-ga muhim qo'shimcha bo'ldi ISO texnik hisoboti TR-15581: Kengaytirilgan ma'lumotlar turi imkoniyatlari, norasmiy sifatida Ajratiladigan TR. Ushbu spetsifikatsiya kengaytirilgan foydalanishni aniqladi BARCHA to'liq Fortran 2003 talablariga javob beradigan Fortran kompilyatorlari mavjud bo'lishidan oldin. Bunday foydalanishga quyidagilar kiradi BARCHA massivlar olingan turdagi komponentlar, protsedurada qo'pol argumentlar ro'yxati va funktsiyalarni qaytarish qiymatlari sifatida. (BARCHA massivlar afzalroq POINTERasoslangan massivlar, chunki BARCHA massivlar Fortran 95 tomonidan kafolatlangan bo'lib, ular imkoniyat doirasidan chiqib ketgandan so'ng avtomatik ravishda taqsimlanadi xotira oqishi. Bundan tashqari, ajratiladigan massivlarning elementlari tutashgan va taxallus massiv ma'lumotlarini optimallashtirish uchun muammo emas, bu kompilyatorlarga ko'rsatgichlarga qaraganda tezroq kod ishlab chiqarishga imkon beradi.[36])

Fortran 95-ga yana bir muhim qo'shimcha bu edi ISO texnik hisobot TR-15580: O'zgaruvchan nuqta istisno holatini boshqarish, norasmiy sifatida IEEE TR. Ushbu spetsifikatsiya qo'llab-quvvatlashni aniqladi IEEE suzuvchi nuqta arifmetikasi va suzuvchi nuqta istisno bilan ishlash.

Shartli kompilyatsiya va har xil uzunlikdagi satrlar

Fortran 95 tili majburiy "Asosiy til" dan tashqari (ISO / IEC 1539-1: 1997 da belgilangan) ikkita ixtiyoriy modulni ham o'z ichiga oladi:

  • Har xil uzunlikdagi belgilar qatorlari (ISO / IEC 1539-2: 2000)
  • Shartli kompilyatsiya (ISO / IEC 1539-3: 1998)

birgalikda, ko'p qismli xalqaro standartni (ISO / IEC 1539) tashkil etadi.

Standart ishlab chiqaruvchilarning fikriga ko'ra, "ixtiyoriy qismlar foydalanuvchilar va / yoki amalga oshiruvchilarning katta qismi tomonidan so'ralgan, lekin ular uchun barcha talablarga javob beradigan umumiylik deb hisoblanmaydigan o'ziga xos xususiyatlarni tavsiflaydi. Fortran kompilyatorlari. " Shunga qaramay, agar standartga mos keladigan Fortran bunday imkoniyatlarni taqdim qilsa, u holda ular "ushbu standartlarning tegishli qismida ushbu ob'ektlarning tavsifiga muvofiq taqdim etilishi kerak".

Fortran 2003 yil

Fortran 2003 yil, rasmiy ravishda ISO / IEC 1539-1: 2004 sifatida nashr etilgan bo'lib, ko'plab yangi xususiyatlarni o'z ichiga olgan katta tahrirdir.[37] Fortran 2003-ning yangi xususiyatlarining to'liq xulosasi Fortran Ishchi guruhi (ISO / IEC JTC1 / SC22 / WG5) rasmiy veb-saytida mavjud.[38]

Ushbu maqoladan ushbu tahrirning asosiy yaxshilanishlari quyidagilarni o'z ichiga oladi:

  • Hosil qilingan turdagi yaxshilanishlar: parametrlangan kelib chiqadigan turlar, kirish imkoniyatlarini boshqarish yaxshilangan, tuzilgan konstruktorlar va yakunlovchi
  • Ob'ektga yo'naltirilgan dasturlash qo'llab-quvvatlash: turdagi kengaytma va meros, polimorfizm, dinamik turlarni taqsimlash va turlarga bog'liq protseduralar uchun to'liq yordam beradi mavhum ma'lumotlar turlari
  • Ma'lumotlar manipulyatsiyasini takomillashtirish: ajratiladigan komponentlar (TR 15581 tarkibiga kiritilgan), kechiktirilgan turdagi parametrlar, VOLATILE xususiyat, massiv konstruktorlarida aniq turdagi spetsifikatsiya va bayonotlar, ko'rsatgichlarni takomillashtirish, kengaytirilgan boshlanish ifodalari va ichki ichki protseduralarni ajratish.
  • Kirish / chiqishni takomillashtirish: asenkron uzatish, oqimga kirish, olingan turlar uchun foydalanuvchi tomonidan o'tkaziladigan operatsiyalar, foydalanuvchi formatlash paytida yaxlitlashni boshqarish, oldindan bog'langan birliklar uchun nomlangan konstantalar YUZISH bayonot, kalit so'zlarni muntazamlashtirish va xato xabarlariga kirish
  • Jarayon ko'rsatgichlari
  • Qo'llab-quvvatlash IEEE suzuvchi nuqta arifmetikasi va suzuvchi nuqta istisno bilan ishlash (TR 15580 bilan birga)
  • C dasturlash tili bilan o'zaro ishlash
  • Xalqaro foydalanishni qo'llab-quvvatlash: kirish ISO 10646 4 baytli belgilar va raqamli formatlangan kirish / chiqishdagi kasr yoki vergulni tanlash
  • Asosiy operatsion tizim bilan kengaytirilgan integratsiya: ga kirish buyruq satri dalillar, muhit o'zgaruvchilari va protsessor xato xabarlari

Fortran 2003-ga muhim qo'shimcha bo'ldi ISO texnik hisoboti TR-19767: Fortranda kengaytirilgan modul imkoniyatlari. Ushbu hisobot taqdim etildi kichik modullar, Fortran modullarini o'xshashroq qiladigan Modula-2 modullar. Ular o'xshash Ada xususiy bolalar kichik bo'linmalari. Bu modulning spetsifikatsiyasi va amalga oshirilishini alohida dastur birliklarida ifodalashga imkon beradi, bu esa katta kutubxonalarni qadoqlashni yaxshilaydi, aniq interfeyslarni nashr qilish paytida tijorat sirlarini saqlashga imkon beradi va kompilyatsiya kaskadlarini oldini oladi.

Fortran 2008 yil

Norasmiy ravishda Fortran 2008 nomi bilan tanilgan ISO / IEC 1539-1: 2010, 2010 yil sentyabr oyida tasdiqlangan.[39][40] Fortran 95-da bo'lgani kabi, bu Fortran 2003-ga tuzatishlar va tuzatishlarni o'z ichiga olgan kichik yangilanish, shuningdek ba'zi yangi imkoniyatlarni taqdim etadi. Yangi imkoniyatlarga quyidagilar kiradi:

  • Sub-modullar - modullar uchun qo'shimcha tuzilmalar; ISO / IEC TR 19767: 2005 o'rnini bosadi
  • Coarray Fortran - parallel ijro modeli
  • The MUVOFIQ QILING qurish - o'zaro bog'liqliksiz tsiklni takrorlash uchun
  • CONTIGUOUS atributi - saqlash tartibini cheklashlarini ko'rsatish uchun
  • The BLOCK tuzilishi - qurilish ko'lamiga ega ob'ektlar deklaratsiyasini o'z ichiga olishi mumkin
  • Rekursiv taqsimlanadigan komponentlar - olingan turdagi rekursiv ko'rsatkichlarga alternativa

Final Draft xalqaro standarti (FDIS) N1830 hujjati sifatida mavjud.[41]

Fortran 2008-ga qo'shimcha bu Xalqaro standartlashtirish tashkiloti (ISO) Texnik spetsifikatsiyasi (TS) 29113 bo'yicha Fortranning C bilan o'zaro muvofiqligi,[42][43] ISO-ga 2012 yil may oyida tasdiqlash uchun taqdim etilgan. Spetsifikatsiya C dan aniqlovchiga kirishni qo'llab-quvvatlaydi va argumentlarning turi va darajasiga e'tibor bermaslik imkonini beradi.

Fortran 2018

Tilning so'nggi tahriri (Fortran 2018) ilgari Fortran 2015 deb nomlangan.[44] Bu muhim tahrir va 2018 yil 28-noyabrda chiqarilgan.[45]

Fortran 2018 ilgari nashr etilgan ikkita texnik xususiyatni o'z ichiga oladi:

  • ISO / IEC TS 29113: 2012 C bilan o'zaro ishlash[46]
  • Fortran-da ISO / IEC TS 18508: 2015 qo'shimcha parallel xususiyatlari[47]

Qo'shimcha o'zgarishlar va yangi xususiyatlarga ISO / IEC / IEEE 60559: 2011 (versiyasi IEEE suzuvchi nuqta standarti IEEE 754-2019 kichik qayta ko'rib chiqilishidan oldin), o'n oltinchi kirish / chiqish, IMPLICIT NONE yaxshilanishlari va boshqa o'zgarishlar.[48][49][50][51]

Ilm-fan va muhandislik

Garchi mualliflarning 1968 yildagi jurnal maqolasi ASOSIY allaqachon FORTRANni "eskirgan" deb ta'riflagan,[52] Fortran hozirda bir necha o'n yillar davomida ishlatilgan va ko'plab ilmiy va muhandislik jamoalarida kundalik foydalanish uchun Fortran dasturiy ta'minotining katta qismi mavjud.[53] Jey Pasachoff 1984 yilda "fizika va astronomiya talabalari shunchaki FORTRANni o'rganishlari kerak. FORTRAN-da shu qadar ko'p narsa borki, olimlarning Paskal, Modula-2 yoki boshqa narsalarga o'zgarishi ehtimoldan yiroq emas".[54] 1993 yilda, Sesil E. Leyt FORTRANni "ilmiy hisoblashning ona tili" deb atadi va uning o'rnini boshqa har qanday til bilan almashtirish "umidsiz umid bo'lib qolishi" mumkinligini aytdi.[55]

Bu eng intensiv bo'lganlar uchun asosiy til super hisoblash kabi vazifalar astronomiya, iqlimni modellashtirish, hisoblash kimyosi, hisoblash iqtisodiyoti, suyuqlikning hisoblash dinamikasi, hisoblash fizikasi, ma'lumotlarni tahlil qilish, gidrologik modellashtirish, raqamli chiziqli algebra va raqamli kutubxonalar (LAPACK, IMSL va NAG ), optimallashtirish, sun'iy yo'ldosh simulyatsiyasi, qurilish muhandisligi va ob-havo ma'lumoti.[iqtibos kerak ] Ko'pgina suzuvchi nuqta ko'rsatkichlari yangi kompyuter protsessorlarining ish faoliyatini, masalan, suzuvchi nuqta komponentlarini SPEC mezonlari (masalan, CFP2006, CFP2017 ) Fortranda yozilgan.

Bundan tashqari, hisoblash fanidagi zamonaviy kodlar odatda katta dastur kutubxonalaridan foydalanadi, masalan METIS grafik qismlarga ajratish uchun, PETSc yoki Trilinos chiziqli algebra qobiliyatlari uchun, DUNE yoki FEniCS mash va cheklangan elementlarni qo'llab-quvvatlash va boshqa umumiy kutubxonalar uchun. Since the early 2000s, many of the widely used support libraries have also been implemented in C va yaqinda, ichida C ++. On the other hand, high-level languages such as MATLAB, Python va R have become popular in particular areas of computational science. Consequently, a growing fraction of scientific programs is also written in such higher-level scripting languages. Shu sababli, facilities for inter-operation with C were added to Fortran 2003 and enhanced by the ISO/IEC technical specification 29113, which was incorporated into Fortran 2018 to allow more flexible interoperation with other programming languages.

Software for NASA probes Voyager 1 va Voyager 2 was originally written in FORTRAN 5, and later ported to FORTRAN 77. As of 25 September 2013, some of the software is still written in Fortran and some has been ported to C.[56]

Til xususiyatlari

The precise characteristics and syntax of Fortran 95 are discussed in Fortran 95 til xususiyatlari.

Portativlik

Portativlik was a problem in the early days because there was no agreed upon standard—not even IBM's reference manual—and computer companies vied to differentiate their offerings from others by providing incompatible features. Standards have improved portability. The 1966 standard provided a reference sintaksis and semantics, but vendors continued to provide incompatible extensions. Although careful programmers were coming to realize that use of incompatible extensions caused expensive portability problems, and were therefore using programs such as The PFORT Verifier,[57][58] it was not until after the 1977 standard, when the National Bureau of Standards (now NIST ) nashr etilgan FIPS PUB 69, that processors purchased by the U.S. Government were required to diagnose extensions of the standard. Rather than offer two processors, essentially every compiler eventually had at least an option to diagnose extensions.[59][60]

Incompatible extensions were not the only portability problem. For numerical calculations, it is important to take account of the characteristics of the arithmetic. This was addressed by Fox et al. in the context of the 1966 standard by the Port kutubxona.[58] The ideas therein became widely used, and were eventually incorporated into the 1990 standard by way of intrinsic inquiry functions. The widespread (now almost universal) adoption of the IEEE 754 standard for binary floating-point arithmetic has essentially removed this problem.

Access to the computing environment (e.g., the program's command line, environment variables, textual explanation of error conditions) remained a problem until it was addressed by the 2003 standard.

Large collections of library software that could be described as being loosely related to engineering and scientific calculations, such as graphics libraries, have been written in C, and therefore access to them presented a portability problem. This has been addressed by incorporation of C interoperability into the 2003 standard.

It is now possible (and relatively easy) to write an entirely portable program in Fortran, even without recourse to a preprocessor.

Variantlar

Fortran 5

Fortran 5 was marketed by Ma'lumotlar umumiy Corp in the late 1970s and early 1980s, for the Novo, Tutilish va MV kompyuterlar qatori. It had an optimizing compiler that was quite good for minicomputers of its time. The language most closely resembles FORTRAN 66.

FORTRAN V

FORTRAN V was distributed by Ma'lumotlar korporatsiyasi in 1968 for the CDC 6600 seriyali. The language was based upon FORTRAN IV.[61]

Univac also offered a compiler for the 1100 series known as FORTRAN V. A spinoff of Univac Fortran V was Athena FORTRAN.

Fortran 6

Fortran 6 or Visual Fortran 2001 was licensed to Compaq tomonidan Microsoft. They have licensed Compaq Visual Fortran and have provided the Visual Studio 5 environment interface for Compaq v6 up to v6.1.[62]

Specific variants

Vendors of high-performance scientific computers (masalan, Burrouz, Ma'lumotlar korporatsiyasi (CDC), Cray, Honeywell, IBM, Texas Instruments va UNIVAC ) added extensions to Fortran to take advantage of special hardware features such as ko'rsatmalar keshi, MARKAZIY PROTSESSOR quvurlar, and vector arrays. For example, one of IBM's FORTRAN compilers (H Extended IUP) had a level of optimization which reordered the mashina kodi ko'rsatmalar to keep multiple internal arithmetic units busy simultaneously. Yana bir misol CFD, a special variant of FORTRAN designed specifically for the ILLIAC IV supercomputer, running at NASA "s Ames tadqiqot markazi.IBM Research Labs also developed an extended FORTRAN-based language called VECTRAN for processing vectors and matrices.

Object-Oriented Fortran was an object-oriented extension of Fortran, in which data items can be grouped into objects, which can be instantiated and executed in parallel. It was available for Sun, Iris, iPSC, and nCUBE, but is no longer supported.

Such machine-specific extensions have either disappeared over time or have had elements incorporated into the main standards. The major remaining extension is OpenMP, which is a cross-platform extension for shared memory programming. One new extension, Coarray Fortran, is intended to support parallel programming.

FOR TRANSIT for the IBM 650

Tranzit uchun was the name of a reduced version of the IBM 704 FORTRAN language,which was implemented for the IBM 650, using a translator program developedat Carnegie in the late 1950s.[63]The following comment appears in the IBM Reference Manual (FOR TRANSIT Automatic Coding System C28-4038, Copyright 1957, 1959 by IBM):

The FORTRAN system was designed for a more complex machine than the 650, and consequently some of the 32 statements found in the FORTRAN Programmer's Reference Manual are not acceptable to the FOR TRANSIT system. In addition, certain restrictions to the FORTRAN language have been added. However, none of these restrictions make a source program written for FOR TRANSIT incompatible with the FORTRAN system for the 704.

The permissible statements were:

  • Arithmetic assignment statements, e.g., a = b
  • GO to n
  • GO TO (n1, n2, ..., nm), i
  • IF (a) n1, n2, n3
  • PAUSE
  • TO'XTA
  • DO n i = m1, m2
  • DAVOM ETING
  • OXIRI
  • READ n, list
  • PUNCH n, list
  • DIMENSION V, V, V, ...
  • EQUIVALENCE (a,b,c), (d,c), ...

Up to ten subroutines could be used in one program.

FOR TRANSIT statements were limited to columns 7 through 56, only.Punched cards were used for input and output on the IBM 650. Three passes were required to translate source code to the "IT" language, then to compile the IT statements into SOAP assembly language, and finally to produce the object program, which could then be loaded into the machine to run the program (using punched cards for data input, and outputting results onto punched cards).

Two versions existed for the 650s with a 2000 word memory drum: FOR TRANSIT I (S) and FOR TRANSIT II, the latter for machines equipped with indexing registers and automatic floating point decimal (ikkitomonlama ) arithmetic. Appendix A of the manual included wiring diagrams for the IBM 533 kartani o'quvchi / zımba boshqaruv paneli.

Fortran-based languages

Prior to FORTRAN 77, a number of oldingi protsessorlar were commonly used to provide a friendlier language, with the advantage that the preprocessed code could be compiled on any machine with a standard FORTRAN compiler. These preprocessors would typically support tizimli dasturlash, variable names longer than six characters, additional data types, shartli kompilyatsiya va hatto so'l imkoniyatlar. Popular preprocessors included FLECS, iftran, MORTRAN, SFtran, S-Fortran, Ratfor va Ratfiv. Ratfor and Ratfiv, for example, implemented a C -like language, outputting preprocessed code in standard FORTRAN 66. Despite advances in the Fortran language, preprocessors continue to be used for conditional compilation and macro substitution.

One of the earliest versions of FORTRAN, introduced in the '60s, was popularly used in colleges and universities. Developed, supported, and distributed by the Vaterloo universiteti, WATFOR was based largely on FORTRAN IV. A student using WATFOR could submit their batch FORTRAN job and, if there were no syntax errors, the program would move straight to execution. This simplification allowed students to concentrate on their program's syntax and semantics, or execution logic flow, rather than dealing with submission Ishni boshqarish tili (JCL), the compile/link-edit/execution successive process(es), or other complexities of the mainframe/minicomputer environment. A down side to this simplified environment was that WATFOR was not a good choice for programmers needing the expanded abilities of their host processor(s), e.g., WATFOR typically had very limited access to I/O devices. WATFOR was succeeded by WATFIV and its later versions.

dastur; s=0 men=1,n;  s=s+1;  To'xta men;  s=bu  To'xta

(line programming)

LRLTRAN da ishlab chiqilgan Lourens radiatsiya laboratoriyasi to provide support for vector arithmetic and dynamic storage, among other extensions to support systems programming. The distribution included the LTSS operating system.

The Fortran-95 Standard includes an optional 3-qism which defines an optional shartli kompilyatsiya qobiliyat. This capability is often referred to as "CoCo".

Many Fortran compilers have integrated subsets of the C oldingi protsessori ularning tizimlariga.

SIMSCRIPT is an application specific Fortran preprocessor for modeling and simulating large discrete systems.

The F dasturlash tili was designed to be a clean subset of Fortran 95 that attempted to remove the redundant, unstructured, and deprecated features of Fortran, such as the EQUIVALENCE bayonot. F retains the array features added in Fortran 90, and removes control statements that were made obsolete by structured programming constructs added to both FORTRAN 77 and Fortran 90. F is described by its creators as "a compiled, structured, array programming language especially well suited to education and scientific computing".[64]

Lahey and Fujitsu teamed up to create Fortran for the Microsoft .NET Framework.[65] Silverfrost FTN95 is also capable of creating .NET code.[66]

Code examples

The following program illustrates dynamic memory allocation and array-based operations, two features introduced with Fortran 90. Particularly noteworthy is the absence of QILING ko'chadan va IF/Keyin statements in manipulating the array; mathematical operations are applied to the array as a whole. Also apparent is the use of descriptive variable names and general code formatting that conform with contemporary programming style. This example computes an average over data entered interactively.

dastur o'rtacha  ! Read in some numbers and take the average  ! As written, if there are no data points, an average of zero is returned  ! While this may not be desired behavior, it keeps this example simple  yashirinhaqiqiy, o'lchov(:), ajratilishi mumkin :: ochkolar  tamsayı                         :: number_of_points=0  haqiqiy                            :: average_points=0., positive_average=0., negative_average=0.  yozmoq (*,*) "Input number of points to average:"  o'qing  (*,*) number_of_points  ajratmoq (ochkolar(number_of_points))  yozmoq (*,*) "Enter the points to average:"  o'qing  (*,*) ochkolar  ! Take the average by summing points and dividing by number_of_points  agar (number_of_points > 0) average_points = sum(ochkolar) / number_of_points  ! Now form average over positive and negative points only  agar (hisoblash(ochkolar > 0.) > 0) keyinpositive_average = sum(ochkolar, ochkolar > 0.) / hisoblash(ochkolar > 0.)  tugatish agar  agar (hisoblash(ochkolar < 0.) > 0) keyinnegative_average = sum(ochkolar, ochkolar < 0.) / hisoblash(ochkolar < 0.)  tugatish agar  ajratmoq (ochkolar)  ! Print result to terminal  yozmoq (*,'(a,g12.4)') 'Average = ', average_points  yozmoq (*,'(a,g12.4)') 'Average of positive points = ', positive_average  yozmoq (*,'(a,g12.4)') 'Average of negative points = ', negative_averagetugatish dasturi o'rtacha

Hazil

During the same FORTRAN standards committee meeting at which the name "FORTRAN 77" was chosen, a satirical technical proposal was incorporated into the official distribution bearing the title "Letter O Zararli hisoblanadi ". This proposal purported to address the confusion that sometimes arises between the letter "O" and the numeral zero, by eliminating the letter from allowable variable names. However, the method proposed was to eliminate the letter from the character set entirely (thereby retaining 48 as the number of lexical characters, which the colon had increased to 49). This was considered beneficial in that it would promote structured programming, by making it impossible to use the notorious BORISH statement as before. (Troublesome FORMAT statements would also be eliminated.) It was noted that this "might invalidate some existing programs" but that most of these "probably were non-conforming, anyway".[67][68]

When X3J3 debated whether the minimum trip count for a DO loop should be zero or one in Fortran 77, Loren Meissner suggested a minimum trip count of two—reasoning (tongue-in-cheek) that if it was less than two then there would be no reason for a loop!

When assumed-length arrays were being added, there was a dispute as to the appropriate character to separate upper and lower bounds. In a comment examining these arguments, Dr. Walt Brainerd penned an article entitled "Astronomy vs. Gastroenterology" because some proponents had suggested using the star or asterisk ("*"), while others favored the colon (":").[iqtibos kerak ]

In FORTRAN 77 (and most earlier versions), variable names beginning with the letters I–N had a default type of integer, while variables starting with any other letters defaulted to real, although programmers could override the defaults with an explicit declaration.[69] This led to the joke: "In Fortran, GOD is REAL (unless declared INTEGER)."

Shuningdek qarang

Adabiyotlar

  1. ^ "Chapel spec (Rahmat)" (PDF). Cray Inc. 1 October 2015. Olingan 14 yanvar 2016.
  2. ^ "FORTRAN". Ingliz tilining Amerika merosi lug'ati (5 nashr). Bepul lug'at. 2011 yil. Olingan 8 fevral 2016.
  3. ^ John Backus. "The history of FORTRAN I, II and III" (PDF). Softwarepreservation.org. Olingan 19 noyabr 2014.
  4. ^ Eugene Loh (18 June 2010). "The Ideal HPC Programming Language". Navbat. 8 (6).
  5. ^ "HPL – A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers". Olingan 21 fevral 2015.
  6. ^ "Q13. What are the benchmarks?". Overview - CPU 2017. SPEC. Olingan 13 noyabr 2019.
  7. ^ "Fifty Years of BASIC". Vaqt. 2014 yil 29 aprel.
  8. ^ Szczepaniak, John (1 May 2014). "50 yillik tug'ilgan kunida BASICning asosiy tarixi". Gamasutra.
  9. ^ a b v d e Backus, Jon (October–December 1998). "The History of Fortran I, II, and III" (PDF). IEEE Hisoblash tarixi yilnomalari. 20 (4): 68–78. doi:10.1109/85.728232. Arxivlandi (PDF) asl nusxasidan 2016 yil 3 martda. Olingan 17 iyun 2020. [1][2]
  10. ^ a b J. W. Backus; R. J. Beeber; S. Best; R. Goldberg; L. M. Haibt; H. L. Herrick; R. A. Nelson; D. Sayre; P. B. Sheridan; H. Stern; L. Ziller; R. A. Hughes; R. Nutt (1957 yil fevral). The FORTRAN Automatic Coding System (PDF). Western Joint Computer Conference. pp. 188–198. doi:10.1145/1455567.1455599.
  11. ^ Mindell, David, Digital Apollo, MIT Press, Cambridge MA, 2008, p.99
  12. ^ "IBM and Chess". Chess Maniac. Online Chess LLC. Olingan 30 aprel 2020.
  13. ^ Padua, David (January–February 2000). "The Fortran I Compiler" (PDF). Computing in Science and Engineering (CiSE). the Top Algorithms. Illinoys universiteti: IEEE: 70-75. Arxivlandi asl nusxasi (PDF) 2020 yil 17-iyunda. The Fortran I compiler was the first major project in code optimization. It tackled problems of crucial importance whose general solution was an important research focus in compiler technology for several decades. Many classical techniques for compiler analysis and optimization can trace their origins and inspiration to the Fortran I compiler.
  14. ^ Brian Bergstein (20 May 2007). "Fortran creator John Backus dies". MSNBC. Olingan 29 oktyabr 2018.
  15. ^ http://scihi.org/fortran-programming/
  16. ^ Applied Science Division and Programming Research Department, International Business Machines Corporation (15 October 1956). IBM 704 EDPM uchun FORTRAN avtomatik kodlash tizimi: Dasturchi uchun qo'llanma (PDF). 19-20 betlar.
  17. ^ Programming Research Department, International Business Machines Corporation (8 April 1957). IBM 704 EDPM uchun FORTRAN avtomatik kodlash tizimi: Operatorning dastlabki qo'llanmasi (PDF). 6-37 betlar.
  18. ^ Betty Jo Armstead (21 January 2015). "My Years at NASA" (PDF). Denver tabiat va fan muzeyi. Olingan 15 iyun 2019.
  19. ^ Ma'lumot uchun qo'llanma, IBM 7090 Ma'lumotlarni qayta ishlash tizimi, 1961, IBM A22-6528-3.
  20. ^ "Fortran II User Manual" (PDF). Bitsavers.org. Olingan 19 noyabr 2014.
  21. ^ Reference Manual, FORTRAN II for the IBM 704 Data Processing System (PDF). 1958. C28-6000-2.
  22. ^ "Ibibilio.org". Ibiblio.org. Olingan 15 sentyabr 2014.
  23. ^ Haines, L. H. (1965). "Serial compilation and the 1401 FORTRAN compiler". IBM Systems Journal. 4 (1): 73–80. doi:10.1147/sj.41.0073.
  24. ^ Lee, John A. N. (1967). Anatomy of a Compiler. Van Nostran Raynxold.
  25. ^ Fortran Specifications and Operating Procedures, IBM 1401 (PDF). IBM. C24-1455-2.
  26. ^ Fortran IV Language Specifications, Program Specifications, and Operating Procedures, IBM 1401, 1440, and 1460 (PDF). IBM. April 1966. C24-3322-2.
  27. ^ McCracken, Daniel D. (1965). "Kirish so'zi". A Guide to FORTRAN IV Programming. Nyu-York: Vili. p. v. ISBN  978-0-471-58281-6.
  28. ^ "List of FORTRAN Implementations 1957 - 1967". IEEE Annals. 2017 yil. Olingan 17 oktyabr 2017.
  29. ^ IBM System/360 Model 50 Functional Characteristics (PDF). IBM. 1967. A22-6898-1.
  30. ^ "FORTRAN Compilers and Loaders". Chilton-programming.org.uk. Olingan 19 noyabr 2014.
  31. ^ Frisch, Michael (December 1972). "Algoritmlarga oid izohlar". ACM aloqalari. 15 (12): 1074. doi:10.1145/361598.361914. S2CID  6571977.
  32. ^ Mil-std-1753. DoD Supplement to X3.9-1978. Amerika Qo'shma Shtatlari hukumatining bosmaxonasi. Arxivlandi asl nusxasi 2007 yil 9-noyabrda. Olingan 13 dekabr 2007.
  33. ^ IEEE 1003.9-1992 - IEEE Standard for InformationTechnology - POSIX(R) FORTRAN 77 Language Interfaces - Part 1: Binding for System Application Program Interface (API). IEEE. Olingan 24-noyabr 2018.
  34. ^ Appendix B.1
  35. ^ "Declaration Statements for Character Types". Compaq Fortran Language Reference Manual. Texas, Huston, US: Compaq Computer Corporation. 1999 yil. Olingan 17 sentyabr 2018. The form CHARACTER*(*) is an obsolescent feature in Fortran 95.
  36. ^ "Fortran 95 Reference". Gnu.Org. Olingan 10 may 2014.
  37. ^ "Fortran 2003– Last Working Draft". Gnu.Org. Olingan 10 may 2014.
  38. ^ Fortran Working Group (WG5). It may also be downloaded as a PDF fayli, FTP.nag.co.uk
  39. ^ "N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology – Programming languages – Fortran – Part 1: Base language" (PDF).
  40. ^ "Fortran 2008 – Last Working Draft" (PDF). Gnu.Org. Olingan 10 may 2014.
  41. ^ N1830, Information technology – Programming languages – Fortran – Part 1: Base language [3][o'lik havola ]
  42. ^ ISO page to ISO/IEC DTS 29113, Further Interoperability of Fortran with C
  43. ^ "Draft of the Technical Specification (TS) 29113" (PDF). wg5-fortran.org.
  44. ^ "Doctor Fortran in "Eighteen is the new Fifteen"". Software.intel.com. Olingan 20 noyabr 2017.
  45. ^ "Fortran 2018". ISO. Olingan 30 noyabr 2018.
  46. ^ "Further Interoperability with C" (PDF). ISO. Olingan 20 noyabr 2017.
  47. ^ "Additional Parallel Features in Fortran". ISO. Olingan 20 noyabr 2017.
  48. ^ "The New Features of Fortran 2015". ISO. Olingan 23 iyun 2017.
  49. ^ "Doctor Fortran in "One Door Closes"". Software.intel.com. Olingan 21 sentyabr 2015.
  50. ^ "Doctor Fortran Goes Dutch: Fortran 2015". Software.intel.com. Olingan 19 noyabr 2014.
  51. ^ Fortran 2018 Interpretation Document, 9 oktyabr 2018 yil
  52. ^ Kemeny, Jon G.; Kurtz, Tomas E. (11 oktyabr 1968). "Dartmut vaqtini taqsimlash". Ilm-fan. 162 (3850): 223–228. Bibcode:1968Sci...162..223K. doi:10.1126 / science.162.3850.223. PMID  5675464.
  53. ^ Phillips, Lee. "Scientific computing's future: Can any coding language top a 1950s behemoth?". Ars Technica. Olingan 8 may 2014.
  54. ^ Pasachoff, Jey M. (1984 yil aprel). "Scientists: FORTRAN vs. Modula-2". BAYT (xat). p. 404. Olingan 6 fevral 2015.
  55. ^ Galperin, Boris (1993). "26". Large Eddy Simulation of Complex Engineering and Geophysical Flows. London: Cambridgey. p. 573. ISBN  978-0-521-43009-8.
  56. ^ "Interstellar 8-Track: How Voyager's Vintage Tech Keeps Running". Simli. Olingan 23 dekabr 2017.
  57. ^ "Methods to ensure the standardization of FORTRAN software". OSTI  5361454. PFORT ... Library ... Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  58. ^ a b P. A. Fox (1977). "Port — A portable mathematical subroutine library". A portable mathematical subroutine library. Kompyuter fanidan ma'ruza matnlari. 57. 165–177 betlar. doi:10.1007/3-540-08446-0_42. ISBN  978-3-540-08446-4. PORT ... written in (PFORT) .. ANS Fortran
  59. ^ D. E. Whitten (1975). "A machine and configuration independent Fortran: Portable Fortran". doi:10.1109/TSE.1975.6312825. S2CID  16485156. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  60. ^ "Portability Issues". .. discusses .. portability of .. Fortran
  61. ^ Healy, MJR (1968). "Towards FORTRAN VI". Advanced scientific Fortran by CDC. CDC. 169–172 betlar. Arxivlandi asl nusxasi 2009 yil 5-iyulda. Olingan 10 aprel 2009.
  62. ^ "third party release notes for Fortran v6.1". Cs-software.com. 2011 yil 15 mart. Olingan 19 noyabr 2014.
  63. ^ "Internal Translator (IT) A Compiler for the IBM 650",by A. J. Perlis, J. W. Smith, and H. R. Van Zoeren, Computation Center,Carnegie Institute of Technology
  64. ^ "F Programming Language Homepage". Fortran.com. Olingan 19 noyabr 2014.
  65. ^ "Fortran for .NET Language System". Arxivlandi asl nusxasi 2014 yil 18 oktyabrda.
  66. ^ "FTN95: Fortran 95 for Windows". Silverfrost.com. Olingan 19 noyabr 2014.
  67. ^ X3J3 post-meeting distribution for meeting held at Brookhaven National Laboratory in November 1976.[ishonchli manba? ]
  68. ^ "The obliteration of O", Computer Weekly, 3 March 1977.
  69. ^ "Rules for Data Typing (FORTRAN 77 Language Reference)". docs.oracle.com. Olingan 29 sentyabr 2016.

Qo'shimcha o'qish

Maqolalar
"Core" language standards
Tegishli standartlar
Boshqa ma'lumotnoma
Darsliklar
  • Adams, Jeanne C.; Brainerd, Walter S.; Hendrickson, Richard A.; Maine, Richard E.; Martin, Janna T.; Smith, Brian T. (2009). The Fortran 2003 Handbook (1-nashr). Springer. ISBN  978-1-84628-378-9.
  • Akin, Ed: "Object-Oriented Programming via Fortran 90/95", Cambridge Univ Press, ISBN  978-0521524087, (Feb. 2003).
  • Brainerd, Walter S., Goldberg, Charles H., Adams, Jeanne C.: "Programmer's guide to Fortran 90"(3rd Ed.), Springer, (1996).
  • Brainerd, Walter S.: "Guide to Fortran 2008 Programming"(2nd Ed.), Springer, ISBN  978-1447167587, (Sep. 2015).
  • Chapman, Stephen J. (2007). Fortran 95/2003 for Scientists and Engineers (3-nashr). McGraw-Hill. ISBN  978-0-07-319157-7.
  • Chivers, Ian; Sleightholme, Jane (2015). Introduction to Programming with Fortran (3-nashr). Springer. ISBN  978-3-319-17700-7.
  • Chivers, Ian; Sleightholme, Jane (2018). Introduction to Programming with Fortran (4-nashr). Springer. ISBN  978-3-319-75501-4.
  • Clerman, Norman S., Spector, Walter: "Modern Fortran: Style and Usage", Cambridge University Press, ISBN  978-0521514538, (Feb. 2012).
  • Ellis, T. M. R.; Phillips, Ivor R.; Lahey, Thomas M. (1994). Fortran 90 Programming (1-nashr). Addison Uesli. ISBN  978-0-201-54446-6.
  • Kerrigan, J. F. (1993). Migrating to Fortran 90 (1-nashr). O'Reilly & Associates, Inc. ISBN  1-56592-049-X.
  • Etter, D. M. (1990). Structured FORTRAN 77 for Engineers and Scientists (3-nashr). The Benjamin/Cummings Publishing Company, Inc. ISBN  978-0-8053-0051-2.
  • Kupferschmid, Michael (2002). Klassik Fortran: muhandislik va ilmiy dasturlar uchun dasturlash. Marcel Dekker (CRC Press). ISBN  978-0-8247-0802-3.
  • Lorenzo, Mark Jones: "Abstracting Away the Machine: The History of the FORTRAN Programming Language (FORmula TRANslation)", Independently published, ISBN  978-1082395949, (Aug. 2019).
  • Loukides, Mike (1990). Unix for FORTRAN Programmers. Sebastopol, CA 95472: O'Reilly & Associates, Inc. ISBN  0-937175-51-X.CS1 tarmog'i: joylashuvi (havola)
  • Makkrayn, Daniel D. (1961). A Guide to FORTRAN Programming. Nyu-York: Vili. LCCN  61016618.
  • Metcalf, Michael; Reid, Jon; Cohen, Malcolm: "Modern Fortran Explained: Incorporating Fortran 2018" (5th Ed.), Oxford Univ. Matbuot, ISBN  978-0198811886, (Nov. 2018).
  • Nyhoff, Larry; Sanford Leestma (1995). FORTRAN 77 for Engineers and Scientists with an Introduction to Fortran 90 (4-nashr). Prentice Hall. ISBN  978-0-13-363003-9.
  • Page, Clive G. (1988). Professional Programmer's Guide to Fortran77 (7 June 2005 ed.). London: Pitman. ISBN  978-0-273-02856-7. Olingan 4 may 2010.
  • Press, William H. (1996). Fortran 90-dagi raqamli retseptlar: parallel ilmiy hisoblash san'ati. Kembrij, Buyuk Britaniya: Kembrij universiteti matbuoti. ISBN  978-0-521-57439-6.
  • Slaytxom, Jeyn; Chivers, Yan Devid (1990). Interfaol Fortran 77: amaliy yondashuv. Kompyuterlar va ularning ilovalari (2-nashr). Chichester: E. Xorvud. ISBN  978-0-13-466764-5. Arxivlandi asl nusxasi 2014 yil 12 martda. Olingan 12 mart 2014.

Tashqi havolalar