Fortran
| Fortran | |
|---|---|
| Paradigma | Kóp paradigmalı: strukturalıq, imperativ (proceduralıq, obyektke baǵdarlanǵan), ulıwma, massiv |
| Dúziwshi | Djon Bekus |
| Islep shıǵarıwshı | Djon Bekus hám IBM |
| Birinshi payda bolıwı | 1957 |
| Turaqlı reliz | Fortran 2023 (ISO/IEC 1539:2023) / 17-noyabr |
| Tiplestiriw tártibi | qatań, statikalıq, manifest |
| Fayl keńeytpeleri | .f90, .f, .for |
| Veb-saytı | fortran-lang.org |
Fortran (/ˈfɔːrtræn/; burınǵı atı FORTRAN) — bul ásirese sanlı esaplawlar hám ilimiy esaplawlar ushın qolaylı bolǵan úshinshi áwlad, kompilyaciyalanatuǵın, imperativ programmalastırıw tili.
Fortran dáslep IBM tárepinen islep shıǵılǵan bolıp, anıqlama qollanbası 1956-jılı járiyalanǵan;[1] degen menen, birinshi kompilyatorlar tek eki jıldan keyin ǵana anıq kod payda ete baslaǵan[2]. Fortran kompyuter programmaları sanlı hawa rayı boljawı, shekli elementler analizi, esaplawshı gidrodinamika, plazma fizikası, geofizika, esaplaw fizikası, kristallografiya hám esaplaw ximiyası sıyaqlı ilimiy hám injenerlik qosımshalardı qollap-quwatlaw ushın jazılǵan. Bul joqarı ónimli esaplawlar ushın keń tarqalǵan til[3] hám dúnyadaǵı eń tez superkompyuterlerdi bahalaw hám reytinglew programmaları ushın qollanıladı[4][5].

Fortran kóp versiyalar hám dialektler arqalı rawajlandı. 1966-jılı Amerika Milliy Standartlar Instituti (ANSI) biraz basqasha sintaksis paydalanatuǵın kompilyatorlardıń tarqalıwın sheklew ushın Fortran ushın standart islep shıqtı[6]. Keyingi versiyalar simvollı maǵlıwmat túrin, strukturalı programmalastırıwdı (Fortran 77), massivli programmalastırıwdı, modulli programmalastırıwdı, ulıwma programmalastırıwdı (Fortran 90), parallel esaplawdı (Fortran 95), obyektke baǵdarlanǵan programmalastırıwdı (Fortran 2003) hám parallel programmalastırıwdı (Fortran 2008) qollap-quwatlawdı qostı.

2024-jıl aprel ayınan baslap, Fortran programmalastırıw tilleriniń ataqlılıǵın ólsheytuǵın TIOBE indeksinde eń jaqsı on tildiń qatarına kiredi[7].
Ataması
FORTRAN ushın birinshi qollanba onı Formula Awdarıw Sisteması dep táriyipleydi hám atın kishi bas háripler menen, FORTRAN dep járiyaladı[8]. Basqa derekler atamanıń Formula Awdarmashısı[9] yamasa Formula Awdarması degen mánisti bildiretuǵının aytadı[10].
Dáslepki IBM kompyuterleri kishi háriplerdi qollap-quwatlamadı hám FORTRAN 77-ge shekemgi til versiyalarınıń atları ádette hámmesi bas háripler menen jazılǵan[11]. FORTRAN 77 Fortran simvollar toplamı tek bas háriplerdi óz ishine alǵan sońǵı versiya boldı.
Fortran ushın rásmiy til standartları Fortran 90-nan baslap tildi bas hárip penen «Fortran» dep atap kelmekte.
Kelip shıǵıwı

1953-jıldıń aqırında Djon V. Bekus IBM-degi basshılarıńa ózleriniń IBM 704 meynfreym kompyuterin programmalastırıw ushın assembler tiline ámeliyrek alternativanı islep shıǵıw boyınsha usınıs berdi. Bekustıń tariyxıy FORTRAN toparı Richard Goldberg, Sheldon F. Best, Xarlan Xerrik, Piter Sheridan, Roy Natt, Robert Nelson, Irving Ziller, Garold Stern, Lois Xaybt hám Devid Seyr sıyaqlı baǵdarlamashılardan ibarat edi. Onıń koncepciyalarına teńlemelerdi kompyuterge ańsatlaw kirgiziwdi óz ishine aldı, bul ideya Dj. Xalkomb Lening tárepinen islep shıǵılǵan hám 1952-jılǵı Lening hám Cirler sistemasında kórsetilgen[12].

IBM Matematikalıq Formula Awdarıw Sisteması ushın joybar specifikaciyası 1954-jıl noyabrge shekem tamamlandı. FORTRAN ushın birinshi qollanba 1956-jıl oktyabrde payda boldı, birinshi FORTRAN kompilyatorı 1957-jıl aprelde jetkerip berildi. Fortran assembler tili baǵdarlamashılarınıń joqarı dárejeli programmalastırıw tili almastırıwın qabıllawı ushın jetkilikli nátiyjeli kod payda etti[13].
Djon Bekus 1979-jılı IBM xızmetkerleri jurnalı «Think» penen bolǵan intervyuda bılay dedi: «Meniń jumısımnıń kópshiligi erinshekligimnen kelip shıqqan. Men programmalar jazıwdı unatpaǵanman, sonlıqtan, IBM 701-de raketa trayektoriyaların esaplaw ushın programmalar jazıp atırǵanımda, programmalar jazıwdı ańsatlastırıw ushın bir programmalastırıw sisteması ústinde isley basladım»[14].
Til ilimpazlar tárepinen sanlı intensiv programmalar jazıw ushın keń qabıl etildi, bul kompilyator jazıwshıların tezirek hám nátiyjelirek kod payda etetuǵın kompilyatorlar islep shıǵarıwǵa xoshametledi. Tilde kompleks san maǵlıwmat túriniń bolıwı Fortran-dı elektr injenerligi sıyaqlı texnikalıq qosımshalar ushın ásirese qolaylı etti[15].
1960-jılǵa kelip, FORTRAN versiyaları IBM 709, 650, 1620 hám 7090 kompyuterleri ushın qoljetimli boldı. Áhmiyetlisi, FORTRANnıń ósip baratırǵan ataqlılıǵı básekiles kompyuter óndiriwshilerin óz mashinaları ushın FORTRAN kompilyatorların usınıwǵa túrtki boldı, solay etip 1963-jılǵa kelip 40 tan aslam FORTRAN kompilyatorı bar edi.
FORTRAN IBM 1401 kompyuteri ushın tek 8000 (altı bitli) simvoldan ibarat tiykarǵı yadında tolıq isleytuǵın innovaciyalıq 63-fazalı kompilyator arqalı usınıldı. Kompilyatordı lentadan yamasa 2200 kartalıq toplamnan iske túsiriwge bolatuǵın edi; ol basqa lenta yamasa disk saqlawın paydalanbadı. Ol programmanı yadta saqlap, onı basqıshpa-basqısh orınlanatuǵın formaǵa, orında aylandıratuǵın qabatlardı júkledi, bul Xeyns tárepinen táriyiplengen[16]. Bul maqalası qayta basılıp, redakciyalanıp, «Kompilyator Anatomiyası»nıń[17] eki basılımında da hám «Fortran Specifikaciyaları hám Operaciya Proceduraları, IBM 1401» IBM qollanbasında da baspadan shıǵarıldı[18]. Orınlanatuǵın forma tolıq mashina tili emes edi; kerisinshe, haqıyqıy san arifmetikası, indekslew, kirgiziw/shıǵarıw hám funkciyaǵa siltemeler interpretaciyalanatuǵın edi, bul UCSD Pascal P-kodınan eki on jıl aldın boldı. «Júkle hám orınla» operaciyası ushın ápiwayılastırılǵan, interpretaciyalanatuǵın FORTRAN I versiyası GOTRAN (tek 32 emes, al 12 túrli operatorı bar) (keminde dáslepki IBM 1620 kompyuteri ushın) qoljetimli edi[19]. Zamanagóy Fortran hám derlik barlıq keyingi versiyaları, basqa joqarı ónimli tiller sıyaqlı, tolıq kompilyaciyalanadı.
Fortrannıń rawajlanıwı kompilyator texnologiyasınıń dáslepki evolyuciyası menen parallel boldı hám kompilyatorlar teoriyası menen dizaynındaǵı kóp jetiskenlikler arnawlı túrde Fortran programmaları ushın nátiyjeli kod payda etiw zárúrligi menen motivaciyalandı.
FORTRAN
IBM 704 ushın FORTRANnıń dáslepki shıǵarılıwı 32 túrdegi operatorlardı óz ishine alǵan, sonıń ishinde:
DIMENSIONhámEQUIVALENCEoperatorları- Tayınlaw (mánis beriw) operatorları
- Úsh tárepleme arifmetikalıq IF operatorı (házir eski bolıp qalǵan), ol arifmetikalıq ańlatpanıń nátiyjesi teris, nol yamasa oń bolıwına baylanıslı programmanıń úsh ornınıń birine basqarıwdı ótkizgen
- Ayrıqsha jaǵdaylardı tekseriw ushın basqarıw operatorları (
IF ACCUMULATOR OVERFLOW, IF QUOTIENT OVERFLOWhámIF DIVIDE CHECK); hám seziw almastırǵıshların hám seziw shıraqların basqarıw ushın basqarıw operatorları (IF (SENSE SWITCH), IF (SENSE LIGHT)hámSENSE LIGHT) GO TO, esaplanǵanGO TO,ASSIGNhám tayınlanǵanGO TODOciklleri- Formatlanǵan
I/O: FORMAT, READ, READ INPUT TAPE, WRITE OUTPUT TAPE, PRINThámPUNCH - Formatlanbaǵan I/O:
READ TAPE, READ DRUM, WRITE TAPEhámWRITE DRUM - Basqa I/O:
END FILE, REWINDhámBACKSPACE PAUSE,STOPhámCONTINUEFREQUENCYoperatorı (kompilyatorǵa optimallastırıw keńeslerin beriw ushın).
Arifmetikalıq IF operatorı 704-te bar bolǵan úsh tárepleme salıstırıw kórsetpesin (CAS—Compare Accumulator with Storage) esletetuǵın edi (biraq ańsat ámelge asırılmaytuǵın edi). Bul operator sanlardı salıstırıwdıń jalǵız usılın usındı — olardıń ayırmasın tekseriw arqalı, bunda tolıp ketiw qáwpi bar edi. Bul kemshilik keyinirek FORTRAN IV-te kirgizilgen «logikalıq» imkaniyatlar menen sheshildi.
FREQUENCY operatorı dáslep (hám qosımsha túrde) arifmetikalıq IF operatorınıń úsh tarmaqlanıw jaǵdayı ushın tarmaqlanıw itimallıqların beriw ushın qollanılǵan. Ol sonıń menen birge DO cikliniń neshe ret aylanıwı múmkin ekenin de kórsetiw ushın paydalanılıwı múmkin edi. Birinshi FORTRAN kompilyatorı bul salmaqtı kompilyaciya waqtında generaciyalanǵan kodtıń Monte-Karlo simulyaciyasın orınlaw ushın paydalandı, onıń nátiyjeleri tiykarǵı bloklardı yadta jaylastırıwdı optimallastırıw ushın qollanıldı — bul sol waqıt ushın júdá quramalı optimallastırıw. Monte-Karlo texnikası Bekus hám basqalardıń usı dáslepki implementaciya haqqındaǵı maqalasıda, «FORTRAN Avtomat Kodlaw Sisteması»nda hújjetlestirilgen:
Programmanıń tiykarǵı birligi — bul tiykarǵı blok; tiykarǵı blok — bul bir kirisiw noqatı hám bir shıǵıw noqatı bar programma bólimi. 4-bólimniń maqseti — 5-bólim ushın tiykarǵı bloklardı sanap shıǵatuǵın hám hárbir tiykarǵı blok ushın aǵımda onıń tikkeley aldınǵısı bola alatuǵın hárbir tiykarǵı bloktı, hám de hárbir bunday tiykarǵı blok baylanısınıń absolyut jiyiligin kórsetetuǵın aldınǵılar kestesin (PRED kestesi) tayarlaw. Bul keste programmanı bir ret Monte-Karlo usılında orınlaw arqalı alınadı, bunda IF-tipindegi operatorlardan hám esaplanǵan GO TO-lardan kelip shıǵatuǵın shártli ótiwlerdiń nátiyjesi qanday da bir berilgen FREQUENCY operatorlarına sáykes túrde salmaqlanǵan tosınarlı sanlar generatorı menen anıqlanadı.
Birinshi FORTRAN kompilyatorı qáte tabılǵanda programmanı toqtatıp hám óziniń konsolında qáte kodın shıǵarıp, diagnostikalıq informaciyanı xabarlaytuǵın edi. Bul kodtı baǵdarlamashı operator qollanbasındaǵı qáte xabarları kestesinde izlep, másele haqqında qısqasha sıpatlama ala alatuǵın edi[20]. Keyinirek, NASA tárepinen islep shıǵılǵan, nolge bóliw sıyaqlı paydalanıwshı qátelerin qayta islew ushın qáte qayta islew kishi programması kirgizildi,[21] ol paydalanıwshılarǵa qáteniń qaysı kod qatarında ekenin xabarladı.
Turaqlı jaylasıw hám perfokartalar


Disk faylları, tekst redaktorları hám terminallar payda bolmastan aldın, programmalar kóbinese perfokartalawshı klaviaturasında 80 baǵanalı perfokartalarǵa, bir kartaǵa bir qatar etip kirgiziletuǵın edi. Nátiyjedegi kartalar toplamı kompilyaciyalanıw ushın kartanı oqıw qurılmasına salınatuǵın edi. Perfokarta kodları kishi háriplerdi yamasa kóp arnawlı simvollardı óz ishine almaytuǵın edi hám FORTRANda paydalanılǵan qayta maqsetli arnawlı simvollardı durıs basıp shıǵaratuǵın IBM 026 perfokartalawshısınıń arnawlı versiyaları usınıldı.
Perfokarta kirgiziw ámeliyatın sáwlelendirip, Fortran programmaları dáslep turaqlı baǵanalı formatta jazılǵan. 1-baǵanadaǵı «C» háribi pútkil kartanı kommentariya retinde qarastırıwǵa hám kompilyator tárepinen itibarǵa alınbawına sebep bolǵan. Basqa jaǵdaylarda, kartanıń baǵanaları tórt maydanǵa bólinedi:
- 1-den 5-ke shekemgi — belgi maydanı: bul jerdegi sanlar izbe-izligi DO yamasa GO TO hám IF sıyaqlı basqarıw operatorlarında paydalanıw ushın belgi retinde yamasa WRITE yamasa READ operatorında kórsetilgen FORMAT operatorın anıqlaw ushın alınǵan. Aldınǵı noller itibarǵa alınbaydı hám 0 durıs belgi nomeri emes.
- 6 — dawam etiw maydanı: bos orınnan yamasa nolden basqa simvol bul jerde kartanı aldınǵı kartadaǵı operatordıń dawamı retinde alıwǵa sebep bolǵan. Dawam etiw kartaları ádette 1, 2 hám t.b. dep nomerlengen hám sonlıqtan baslanǵısh kartanıń dawam etiw baǵanasında nol bolıwı múmkin edi — bul onıń aldınǵı kartasınıń dawamı emes.
- 7-den 72-ge shekemgi — operator maydanı.
- 73-ten 80-ge shekemgi — itibarǵa alınbaǵan (Fortran islep shıǵılǵan IBM 704 kompyuteri ushın kartanı oqıwshı tek 72 baǵananı oqıy alatuǵın edi, olardı jigirma tórt 36-bitlik sózge jaylastırǵan)[22].
Sonlıqtan, 73-ten 80-ge shekemgi baǵanalar identifikaciya informaciyası ushın, mısalı, izbe-izlik nomerin yamasa tekstti tesip shıǵarıw ushın paydalanılıwı múmkin edi, bul eger kartalar toplamı túsip ketse, kartalardı qayta tártiplew ushın paydalanılıwı múmkin edi; degen menen ámeliyatta bul turaqlı, óndirislik programmalar ushın saqlanǵan. IBM 519 programma toplamın kóshiriw hám izbe-izlik nomerlerin qosıw ushın paydalana alatuǵın edi[23]. Geypara dáslepki kompilyatorlar, mısalı, IBM 650-diki, olardıń kartanı oqıwshılarınıń sheklewleri sebepli qosımsha sheklewlerge iye edi. Perfokartalawshılar 7-baǵanaǵa tabulyaciya qoyıw hám 72-baǵanadan keyin ótkizip jiberiw ushın programmalastırılıwı múmkin edi. Keyingi kompilyatorlar kóp turaqlı format sheklewlerin jeńillestirdi hám bul talap Fortran 90 standartında alıp taslandı.
Operator maydanı ishinde bos orın belgileri tekst literalınan tıs esapqa alınbadı. Bul qısqalıq ushın tokenler arasında bos orınlardı qaldırıp ketiwge yamasa anıqlıq ushın identifikatorlar ishinde bos orınlardı qosıwǵa imkaniyat berdi. Mısalı, AVG OF X durıs identifikator edi, AVGOFX-ke ekvivalent, al 101010DO101I=1,101 jaramlı operator edi, 10101 DO 101 I = 1, 101 ge ekvivalent, sebebi 6-baǵanadaǵı nol bos orın sıyaqlı qarastırıladı, al 101010DO101I=1.101 bolsa onıń ornına 10101 DO101I = 1.101 boldı, DO101I dep atalǵan ózgeriwshige 1.101-diń mánisin beriw. Útir menen noqat arasındaǵı kishi vizual ayırmashılıqqa itibar beriń.
Hollerith qatarları, dáslep tek FORMAT hám DATA operatorlarında ruqsat etilgen, simvol sanı hám H háribi menen baslanǵan (mısalı, 26HTHIS IS ALPHANUMERIC DATA.), bul simvol qatarı ishinde bos orınlardıń saqlanıwına imkaniyat bergen. Nadurıs esaplawlar másele bolǵan.
Derekler
- ↑ John Backus. «The history of FORTRAN I, II and III». Softwarepreservation.org. 26-iyul 2007-jılda túp nusqadan arxivlendi. Qaraldı: 19-noyabr 2014-jıl.
- ↑ Wilson, Leslie B.. Comparative Programming Languages, Third Edition. Addison-Wesley, 2001 — 16 bet. ISBN 0-201-71012-9. „The manual for Fortran I was released in 1956, but it was 1958 before successful compilers were running programs correctly.“
- ↑ Loh, Eugene. The Ideal HPC Programming Language.
- ↑ «HPL – A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers». Qaraldı: 21-fevral 2015-jıl.
- ↑ «Q13. What are the benchmarks?». Overview – CPU 2017. SPEC. Qaraldı: 13-noyabr 2019-jıl.
- ↑ Wilson, Leslie B.. Comparative Programming Languages, Third Edition. Addison-Wesley, 2001 — 18 bet. ISBN 0-201-71012-9. „Another problem was that there was no standard for Fortran and so slightly different versions ... would likely fail when used with a different compiler.“
- ↑ TIOBE Software BV. «TIOBE Index». TIOBE.com. TIOBE (may 2024). Qaraldı: 6-may 2024-jıl.
- ↑ The History of Fortran I, II, and III.
- ↑ «FORTRAN: The Pioneering Programming Language». IBM (7-mart 2012-jıl). Qaraldı: 19-iyul 2017-jıl.
- ↑ "FORTRAN". FORTRAN.
- ↑ Chapman, Stephen J.. Fortran for Scientists and Engineers, Fourth, New York: McGraw-Hill Education, 2018 — 13 bet. ISBN 978-0-07-338589-1.
- ↑ Mindell, David. Digital Apollo. Cambridge, MA: MIT Press — 99 bet. ISBN 978-0-262-13497-2.
- ↑ The Fortran I Compiler. January–February 2000. http://polaris.cs.uiuc.edu/publications/c1070.pdf.
- ↑ Brian Bergstein. "Fortran creator John Backus dies". MSNBC.
- ↑ «FORTRAN – The First Programming Language for Numeric Calculations». SciHi Blog (15-oktyabr 2019-jıl). 4-yanvar 2021-jılda túp nusqadan arxivlendi. Qaraldı: 23-noyabr 2020-jıl.
- ↑ Haines, L. H. (1965). Serial compilation and the 1401 FORTRAN compiler.
- ↑ Lee, John A. N.. Anatomy of a Compiler. Van Nostrand Reinhold.
- ↑ Fortran Specifications and Operating Procedures, IBM 1401. IBM.
- ↑ «Subject: GOTRAN ON THE IBM 1316 DISK STORAGE PACK (Serial No. K7402)». 21-fevral 2006-jılda túp nusqadan arxivlendi. Qaraldı: 3-mart 2006-jıl.
- ↑ The FORTRAN Automatic Coding System for the IBM 704 EDPM : Preliminary Operator's Manual. Programming Research Department, International Business Machines Corporation, April 8, 1957.
- ↑ Armstead. «My Years at NASA». Denver Museum of Nature & Science (21-yanvar 2015-jıl). 24-dekabr 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-iyun 2019-jıl.
- ↑ Reference Manual, IBM 7090 Data Processing System, 1961. A22-6528-3.
- ↑ Fortran II General Information Manual.