Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • U kontaktu sa
  • Zašto fizičari još uvijek koriste Fortran. Programski jezik Fortran - opis, osnovne naredbe i funkcije

Zašto fizičari još uvijek koriste Fortran. Programski jezik Fortran - opis, osnovne naredbe i funkcije

Ministarstvo obrazovanja i nauke Ruske Federacije

Uralski federalni univerzitet

nazvan po prvom predsedniku Rusije

OSNOVE PROGRAMIRANJA

FORTRAN

Tutorial

Jekaterinburg

Uvod. 3

Istorijat. 5

Struktura programa.. 8

Razlike između Fortrana 90 i Fortrana 77. 11

Pristup računarskim resursima. 15

Izvođenje zadataka na klasteru. 17

Prepišite tekstove programa na serveru. 17

Sastavljanje programa. 17

Pokretanje programa na nalogu. devetnaest

Tipovi podataka. 22

Cjelobrojna konstanta. 22

Prava konstanta. 23

Realna konstanta dvostruke preciznosti. 23

kompleksna konstanta. 23

Kompleksna konstanta dvostruke preciznosti. 24

Boolean konstanta. 24

Tekstualna konstanta. 24

Operatori za opisivanje tipova podataka. 26

INTEGER cjelobrojni tip. 26

REAL i DOUBLE PRECISION stvarni tipovi. 27

KOMPLEKSAN i DVOSTRUKI KOMPLEKSAN tip kompleksa. 28

CHARACTER tip karaktera. 29

LOGICAL logičkog tipa. 29

DIMENZIJA nizova. trideset

Atribut PARAMETER.. 32

Raznolikost ugrađenih tipova podataka. 35

Izrazi, operacije i zadaci. 36

Aritmetički izrazi. 36

Izrazi odnosa. 37

Bulovi izrazi. 38

Pravila za vrednovanje izraza. 38

I/O operateri. 39

Operator unosa DATA.. 39

Ulazni izraz READ.. 40

WRITE izlazni izraz. 41

Operator izlaza ekrana PRINT. 42

Izjava o I/O formatu (FORMAT) 43

Specifikacija X, T. 43

Specifikator I 44

Separatori. 45

Specifikacija F.46

Ponavljači. 49

Specifikacija E.50

Specifikacija G.. 51

Deskriptori podataka. 52

Operatori uslova. 53

Uslovni logički operator. 53

Operator aritmetičkog uslova. 57

SELECT CASE konstrukcija. 60

Operatori petlje. 62

Naredba petlje DO.. 62

DO WHILE izjava petlje. 64

STOP izjava. 65

Izlazni izraz iz EXIT petlje. 66

Operatori skoka. 67

Operator graničnog skoka IDI NA.. 67

Izračunati izraz za skok GOTO.. 67

Operator uslovnog skoka IF … GOTO.. 68

Rad sa nizovima. 69

Ulaz niza. 69

Izlaz niza. 71

Obrada niza. 73

Potprogrami.. 76

Operator funkcije. 78

FUNKCIJA-funkcija potprograma.. 81

Potprogram-procedura PODRUTINA. 83

Rad sa eksternim fajlovima 85

Otvaranje datoteke OPEN.. 85

Izjava o zatvaranju datoteke CLOSE. 86

Primjeri rada sa datotekama. 86

Književnost. 89

Uvod

Karakteristična karakteristika paralelnih računara je mogućnost istovremenog korišćenja velikog broja procesora za obradu informacija. Upotreba višeprocesorskih računarskih sistema (MCS) postavlja dva zadatka za konstruisanje paralelnih algoritama: paralelizaciju postojećih sekvencijalnih algoritama i kreiranje novih algoritama sa fokusom na paralelne računarske sisteme.

MPI je trenutno najčešća tehnologija programiranja za paralelne računare sa distribuiranom memorijom. Glavni način interakcije paralelnih procesa u takvim sistemima je prenošenje poruka jedni drugima. To se ogleda u nazivu ove tehnologije - Message Passing Interface (Message Passing Interface). MPI standard fiksira interfejs koji se mora poštovati i od strane programskog sistema na svakoj računarskoj platformi i od strane korisnika prilikom kreiranja svojih programa. MPI komunikaciona biblioteka je postala univerzalno priznati standard u paralelnom programiranju koristeći mehanizam za prosljeđivanje poruka.

MPI program je skup nezavisnih procesa, od kojih svaki izvršava svoj program (ne nužno isti) napisan u C ili FORTRAN-u. U FORTRAN-u, većina MPI procedura su potprogrami (pozivaju se naredbom CALL), kod greške se vraća preko opcioni posljednji parametar procedure. Nekoliko procedura dizajniranih kao funkcije ne vraćaju kod greške. Nema potrebe da se striktno pridržavate velikih i malih slova u imenima potprograma i imenovanih konstanti. Nizovi su indeksirani od 1. MPI objekti, koji su strukture u C, predstavljeni su u FORTRAN-u kao nizovi cjelobrojnog tipa.

IMM je programiran u Fortranu. Glavna poteškoća u korištenju za velike zadatke je koordiniranje interakcije dijelova velikog zadatka. Fortran 90 uključuje mehanizme za interakciju objekata u skladu sa tehnologijom objektno orijentisanog programiranja, koji olakšavaju kolektivni rad na velikom projektu. To su moduli za projektovanje biblioteka, struktura i izvedenih tipova podataka za organizovanje složenih podataka, to je dinamička alokacija memorije, kao i niz mehanizama za obradu nizova, uključujući formiranje različitih rezova (sekcija). Sposobnost kombinovanja u jednoj porodici (u rodu) tipičnih postupaka obrade koji se razlikuju po tipovima svojih argumenata može biti koristan alat u brojnim zadacima. Tipovi (familije) tipova podataka olakšavaju prilagođavanje implementacije tipa, uzimajući u obzir svojstva hardvera (na primjer, tip INTEGER se može deklarirati dugim ili kratkim putem kontrole tipa KIND). Neka stilska pravila mogu pomoći razvoju, na primjer, deklariranje ulaznih, izlaznih i promjenjivih parametara procedure pomaže u pronalaženju grešaka interoperabilnosti između programskih jedinica. Pravila za pisanje svojstava podataka, komentara i drugih elemenata olakšavaju čitanje napisanih programa, što ubrzava potragu za greškama.

Istorijat

1954 - IBM, prevodilac za prvi jezik Fortran.

1958 - FortranII.

1962 - FortranIV.

1966 - Fortran 66.

1978 - Fortran 77.

Nazvana je modifikacija jezika Fortran, koja se pojavila 1958. godine FortranII i sadržavao je koncept potprograma i zajedničkih varijabli za pružanje komunikacije između segmenata.

Do 1962. godine, pojava jezika poznatog kao Fortran IV. Godine 1966. završen je razvoj američkog standarda za jezik ANSI (American National Standards Institute), jezik tzv. Fortran 66. Godine 1978. razvijena je druga verzija ANSI standarda - jezik Fortran 77, koji uključuje elemente strukturiranog programiranja, na primjer, strukturni IF, tipove znakova.

Treća verzija ANSI standarda je Fortran 90, implementiran 1991. godine. Fortran 90 je razvoj jezika Fortran 77, dakle program napisan Fortran 77, može se kompajlirati i pokrenuti kao program na Fortran 90. Standard Fortran 90 Standard uvodi mnoge nove karakteristike za operacije nizova, nove metode precizne specifikacije, besplatni format izvornog koda, rekurziju, dinamičke nizove, itd.

Programi na trenutnom standardnom jeziku Fortran 77 mogu uspješno kompajlirati kompajleri Fortran 90 bez ikakvih promjena. Međutim, struktura programa na jeziku Fortran 90 može se značajno razlikovati od strukture ekvivalentnog programa u Fortran 77. Programer mora paziti na miješanje dva stila.

U istoj mjeri kompajler Fortran 90 zahtijeva davanje objašnjenja za prijavljivanje nekih kodova neusklađenosti (nedosljednosti), odnosno korištenje operatora ili varijabli koje su dozvoljene iznad skupa pravila koja nadilaze standard.

Fortran zauzima ponosno mjesto među modernim programskim jezicima. To je jedan od prvih programskih jezika na visokoj razini i dizajniran je od svog početka za rješavanje složenih računskih problema. U okruženju primijenjenih programera, Fortran je u početku naišao na skepticizam, jer se vjerovalo da će cijena za praktičnost programiranja na jeziku visokog nivoa biti značajan gubitak u brzini računanja. Kada je u pitanju modeliranje složenih procesa ili obrada velikih količina informacija, brzina proračuna je odlučujući faktor koji određuje izbor jezika, računarske platforme i tehnologije programiranja.

  • gfortran
    • gfortran 4.5.0
  • Programski jezik

    Fortran (Fortran) je prvi implementirani programski jezik visokog nivoa (nakon), međutim, uz jedno malo upozorenje - za mašine izgrađene prema klasičnoj von Neumannovoj šemi. Kreiran između 1954. i 1957. godine od strane grupe programera predvođenih Johnom Backusom u IBM Corporation. Nekoliko godina kasnije počele su njegove komercijalne isporuke. Prije toga, programiranje se obavljalo direktno u mašinskim kodovima ili u simboličkim asemblerima. Ime Fortran je skraćenica za FORmula TRANslator, odnosno prevodilac formula.

    Fortran se široko koristi prvenstveno za naučno i inženjersko računarstvo. Jedna od prednosti modernog Fortrana je veliki broj programa i biblioteka potprograma napisanih u njemu. Među naučnicima, na primer, postoji izreka da svaki matematički problem već ima rešenje u Fortranu, i zaista, među hiljadama Fortranovih paketa može se naći i paket za množenje matrice, i paket za rešavanje složenih integralnih jednačina, i mnogo, mnogo drugih. Brojni takvi paketi su kreirani tokom decenija i još uvijek su popularni danas (uglavnom u akademskim krugovima).

    Većina ovih biblioteka je u stvari vlasništvo čovečanstva: dostupne su u izvornom kodu, dobro dokumentovane, otklonjene greške i veoma efikasne. Stoga je skupo mijenjati ih, a kamoli prepisivati ​​u druge programske jezike, uprkos činjenici da se redovno pokušavaju automatski pretvoriti FORTRAN kod u moderne programske jezike.

    Svojevrsna "vizit karta" starog Fortrana je ogroman broj oznaka koje su se koristile i u operatorima bezuvjetnog skoka GOTO, i u operatorima petlje, i u operatorima opisa ulaza/izlaza formata FORMAT. Veliki broj oznaka i GOTO naredbi često je činio Fortran programe teško razumljivim.

    Upravo je ovo negativno iskustvo postalo razlog zašto u brojnim modernim programskim jezicima (na primjer, Java) uopće ne postoje oznake i pridruženi operatori bezuvjetnog skoka.

    Međutim, moderni Fortran se riješio viška oznaka uvođenjem naredbi kao što su DO ... END DO, DO WHILE, SELECT CASE. Takođe, pozitivne karakteristike modernog Fortrana uključuju veliki broj ugrađenih operacija niza i fleksibilnu podršku za nizove sa neobičnim indeksiranjem.

    Interakcija sa drugim jezicima

    Mnogi programski sistemi vam omogućavaju da povežete objektne fajlove dobijene kao rezultat prevođenja Fortran programa sa objektnim fajlovima dobijenim od kompajlera sa drugih jezika, što vam omogućava da kreirate fleksibilnije i multifunkcionalne aplikacije. Za jezik Fortran je takođe dostupan veliki broj biblioteka koje sadrže i rutine za rešavanje klasičnih računarskih problema (LAPACK, IMSL, BLAS), zadatke za organizovanje distribuiranog računarstva (MPI, pvm) i zadatke za izgradnju grafičkih interfejsa (Quickwin, FORTRAN / TK) ili pristup DBMS-u (Oracle).

    Fortran baština

    Fortran je u upotrebi više od pedeset godina i veliki dio je u vlasništvu do danas. Fortran je glavni jezik za neke računski zahtjevne zadatke kao što su modeliranje vremena i klime, dinamika fluida, računska hemija, kvantna hromodinamika, modeliranje dinamike solarnog sistema, proračun orbite umjetnog satelita i mnoge druge zadatke.

    Prenosivost

    U početku je prenosivost za Fortran bila vrlo hitno pitanje, jer nije postojao niti jedan standard, pa čak ni referentne informacije od IBM-a. I kompjuterske kompanije su se takmičile jedna s drugom, obezbjeđujući nekompatibilnost za različite kompajlere. Pojava standarda je ispravila stvar. Standard iz 1966. uspostavio je sintaksu i semantiku, ali dobavljači su nastavili da implementiraju nekompatibilna proširenja. Oprezni programeri shvatili su da bi korištenje nekompatibilnih ekstenzija izazvalo probleme sa prenosivosti i često su koristili programe poput "The PFORT Verifier" za otkrivanje nekompatibilnih ekstenzija.

    Nekompatibilne ekstenzije nisu bile jedini problem. Postojao je niz problema sa numeričkim proračunima. Kasnije je razvijena i implementirana gotovo univerzalna ideja binarne aritmetike s pomičnim zarezom.

    Pristup izvršnom okruženju (npr. komandna linija, varijable okruženja) bio je veoma težak sve dok nije riješen u standardu iz 2003. godine.

    Sada je relativno lako implementirati potpuno prenosivi Fortran program.

    Elementi sintakse:

    Komentar do kraja reda ! ili * u prvom znaku niza
    velika i mala slova Ne
    Regularni izraz identifikatora varijable [_a-zA-Z0-9](0-n)
    Dodjela vrijednosti varijabli =
    Deklaracija varijable tip:: promenljiva
    Deklaracija varijable sa dodjelom vrijednosti type::varijabla = vrijednost
    Grupisanje izraza ()
    Blokiraj učiniti ... završiti učiniti
    Jednakost = or.EQ.
    Nejednakost /= ili .NE.
    Poređenje == < > <= >= <>ili .LT. .GT. .LE. .GE.
    Poziv funkcije POZOVI f(a,b...)
    Pozivanje funkcije bez parametara POZOVI f
    Sequence kraj linije
    Ako onda ako uslov onda ... završi ako
    Ako - onda - inače ako uvjet onda ... ostalo ... endif
    Petlja s postuvjetom RADI ... DOK (uslov)
    for - sljedeća petlja za raspon cijelih brojeva uvećanih za 1 uradi oznaku i = 1, 10
    for - sljedeća petlja za raspon cijelih brojeva umanjenih za 1 do oznake i = 10, 1, -1

    primjeri:

    Zdravo svijete!:

    Primjer za verzije Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Ovaj primjer je napisan u slobodnom formatu koji podržava Fortran 90 i noviji standardi, kao i .

    Program za komentare u Fortranu u stilu 90 HelloWorld print * , "Hello, World!" kraj programa Hello World

    Faktorski:

    Primjer za verzije Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Koriste se iterativna faktorijalna definicija i format slobodnog programa. Specifikacije I i A formata se koriste za izlaz decimalnih brojeva i nizova, respektivno. Prilikom izračunavanja faktorijala 13-16 dolazi do aritmetičkog prelivanja koji ne uzrokuje grešku, pa se prikazuju netačne vrijednosti:

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

    program Faktorski cijeli broj :: f , nf = 1 n = 0 ispisati "(I2, A, I10)" , n , "!= " , fn = n + 1 f = f * n ako (n == 17 ) onda exit end if end do end program Factorial

    Fibonačijevi brojevi:

    Primjer za verzije Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Koristi se iterativna definicija Fibonačijevih brojeva. Najteža stvar u ovom primjeru je izlaz izračunatih vrijednosti u željenom formatu, u jednom redu i bez dodatnih razmaka. Specifikacija formata (I3, A, $) znači da se prvo ispisuje cijeli broj u decimalnom formatu, širine tačno tri znaka, zatim string, i na kraju, $ potiskuje zadani unos reda koji koristi naredba za ispis, tako da sve se izlazi u jednom redu. Imajte na umu da specifikacija formata $ nije standardna u dijalektu; program radi, ali prilikom kompajliranja prikazuje upozorenje o tome.

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

    Kvadratna jednadžba:

    Primjer za verzije g95 0.93 , gfortran 4.5.0

    Primjer koristi složeni ugrađeni tip podataka. // — operator konkatenacije nizova. Broj ispred zagrada u opisu formata znači koliko puta se format u zagradama ponavlja (u ovom slučaju dvaput za prvi i drugi korijen).

    program Kvadratni cijeli broj :: a , b , c real :: d , p1 , p2 kompleks :: cp2 čita (* , * ), a if (a == 0 ) zatim napiše (* , * ) "Nije kvadratna jednačina" zaustavi kraj ako se pročita (* , * ) b pročita (* , * ) cd = b * b - 4 * a * c p1 = - b / 2,0 / a ako (abs (d)< 1.0e-9 ) then write (* , "(A, F8.3)" ) "x = " , p1 elseif (d >0 ) tada je p2 = sqrt (d ) / 2.0 / a napisati (* , "(2(A, F8.3))" ) "x1 = " , p1 + p2 , char (13 ) // char (10 ) / / "x2 = " , p1 - p2 ostalo cp2 = sqrt (cmplx (d )) / 2.0 / a pisanje (* , "(2(A, F8.3, F8.3), A)" ) "x1 = ( " , p1 + cp2 , ")" // char (13 ) // char (10 ) // "x2 = (" , p1 - cp2 , ")" kraj ako kraj

    Zdravo svijete!:

    Primjer za f2c 20090411 , g95 0.93 , gfortran 4.5.0

    FORTRAN 77); prvih šest znakova svakog reda rezervirano je za servisne informacije - označava da je red komentar ili nastavak prethodnog, oznake i brojeve redova. Standardni Fortran skup znakova ne sadrži mala slova, tako da su svi programi napisani velikim slovima. Izuzetak od ovog pravila su karakterne konstante - one mogu sadržavati bilo koje znakove koje sistem podržava.

    Prvi red daje ovom dijelu koda ime HELLO i označava da je to glavni program. Ime programa podliježe istim pravilima kao i bilo koja imena identifikatora, tj. mora početi slovom i sadržavati najviše 6 znakova.

    Naredba WRITE implementira ispis. U zagradama se prosljeđuje lista kontrolnih parametara koji konfigurišu izlaz: UNIT bira izlaznu datoteku (podrazumevana je konzola), FMT je izlazni format. Zvezdice označavaju podrazumevane opcije. Nije potrebno prosljeđivati ​​nazive parametara; ista naredba bi bila skraćena kao WRITE (*, *) ... .

    U većini implementacija, niz konstanta može biti zatvorena u jednostruke ili dvostruke navodnike.

    Jednostavan Hello World! program PROGRAM HELLO WRITE (UNIT =* , FMT =* ) "Hello, World!" KRAJ

    Faktorski:

    Primjer za f2c 20090411 , g95 0.93 , gfortran 4.5.0

    Ovaj primjer je napisan u fiksnom formatu (FORTRAN 77 stil) i koristi iterativni faktorijalni proračun.

    Fortran dozvoljava preskakanje deklaracija varijabli; u ovom slučaju, on sam zaključuje o njihovim tipovima, ali, za razliku od kasnijih jezika, ne po kontekstu upotrebe varijable, već po njenom imenu - ako je prvo slovo imena I..N, odabire se tip INTEGER , inače - PRAVI. U ovom slučaju, obje varijable su cijeli brojevi.

    DO petlja u ovom slučaju odgovara petlji FOR kasnijih jezika: brojač petlje N uzastopno prolazi kroz sve vrijednosti od 0 do 16. Tijelo petlje završava na liniji označenoj 1, što je naznačeno u zaglavlju petlje.

    Naredba PRINT koristi zadani izlazni format, koji varira ovisno o kompajleru koji se koristi.

    PROGRAM) C . Zbog toga, nakon popunjavanja reda CC koji sadrži rezultat karakter po karakter, ostatak reda se mora ručno popuniti razmacima.

    Provjera da li je sljedeći karakter izvornog niza slovo predugačak da stane u jedan red (svi znakovi programskog niza koji počinju od 73. pozicije se zanemaruju), tako da ga treba podijeliti u dva reda i označiti drugi kao nastavak prvog (bilo koji znak na poziciji 6).

    Operatori poređenja u FORTRAN-u 77 se pišu kao .LE. .GE. itd. jer simboli > i< не входят в набор символов языка; они были добавлены только в Fortran 90.

    PROGRAM CAMELC TEKST KARAKTERA * 30 , CC * 30 LOGIČKI LSPACE PROČITAJ (* , "(A)" ) TEKST NCC = 0 LSPACE = .TRUE. DO 1 , I = 1 , LEN (TEXT ) NC = ICHAR (TEXT (I : I )) IF (NC .GE. 65 .AND. NC .LE. 90 .OR. > NC .GE. 97 .AND. NC .LE. 122 ) ONDA IF (LSPACE ) ONDA IF (NC .GE. 97 .AND. NC .LE. 122 ) ONDA NC = NC - 32 END IF ELSE IF (NC .GE. 65 .AND. NC .LE. 90 ) ONDA NC = NC + 32 END IF END IF NCC = NCC + 1 CC (NCC : NCC ) = CHAR (NC ) LSPACE = .FALSE. ELSE LSPACE = .TRUE. KRAJ AKO 1 NASTAVI DO 2 , I = NCC + 1 , LEN (CC ) 2 CC (I : I ) = " " WRITE (* , * ) CC KRAJ



    Fortran(takođe FORTRAN) je programski jezik, razvijen ranih 1950-ih i još uvijek u upotrebi. Naziv je skraćenica od "FORmula TRANslator". Rane verzije jezika bile su poznate kao FORTRAN, ali slova više nisu bila velika od Fortrana 90. Službeni jezički standardi sada se odnose na jezik kao "FORTRAN".

    >Fortran se uglavnom koristi za naučne proračune i numeričke analize. Iako je prvobitno bio proceduralni jezik, nedavne verzije Fortrana su uključile neke karakteristike koje podržavaju objektno orijentisano programiranje za početnike.

    Prvi FORTRAN kompajler je razvijen za IBM 704 1954-57 od strane IBM tima predvođenog Johnom W. Backusom. Bio je to optimizirajući kompajler jer su autori zaključili da niko neće koristiti jezik, čak ni kada uči programiranje za lutke, osim ako njegove performanse nisu uporedive sa performansama asemblera.

    Jezik je postao široko rasprostranjen među naučnicima i korišćen je za pisanje programa sa intenzivnim numeričkim operacijama, što je primoralo kreatore Fortran kompajlera da marljivo prepisuju kod kompajlera kako bi generisali brži kod. Danas postoji mnogo dobavljača Fortran kompajlera visokih performansi. Mnogi napredak u teoriji i dizajnu kompajlera motivisan je potrebom da se generiše dobar kod za Fortran programe kao što bi se očekivalo od osnovnog programiranja.

    Poznato je nekoliko verzija jezika, uključujući čuveni FORTRAN IV (također poznat kao FORTRAN 66), Fortran 77 i Fortran 90. Poslednji formalni standard za jezik, objavljen 1997. godine, poznat je kao Fortran 95. IBM verzije jezik nikada nije bio toliko popularan, kao što su ga razvile druge kompanije, a to se posebno odnosi na FORTRAN IV - WATFOR, verzija FORTRAN IV razvijena na Univerzitetu Waterloo u Kanadi, bila je najtraženija, jer je dala najbolju kompilaciju poruke o greškama. Isto tako, softver za automatsko generiranje dijagrama toka iz FORTRAN programa razvijen je izvan IBM-a.

    U početku se jezik oslanjao na precizno formatiranje izvornog koda i intenzivno korištenje numeričkih stanja i GOTO naredbe. Ove neobičnosti su uklonjene iz novih verzija jezika. Naredne verzije su također uvele "moderne" koncepte programiranja kao što su komentari izvornog koda i izlaz teksta, izjave IF-THEN-ELSE (u FORTRAN-u 77), rekurzija (u Fortranu 90) i paralelno računanje, dok se i dalje pokušava spasiti Fortran "lean" profil i visoke performanse. Među najpopularnijim jezicima baziranim na Fortranu su SAS za statističko izvještavanje i SIMSCRIPT za modeliranje procesa čekanja.

    Prodavci naučnih računara visokih performansi (Burroughs, CDC, Cray, IBM, Texas Instruments) dodali su proširenja Fortranu kako bi omogućili korištenje posebnih hardverskih karakteristika kao što su keš instrukcija, procesori za povezivanje cijevi, vektorski nizovi, itd. Na primjer, jedan od The IBM Fortran kompajleri (H Extended IUP) sadržavali su sloj optimizacije koji je uzrokovao da instrukcije mašinskog koda drže nekoliko internih aritmetičkih blokova zauzetim cijelo vrijeme. Drugi primjer je CFD, posebna "varijanta" Fortrana dizajnirana posebno za superkompjuter ILLIAC IV u NASA-inom istraživačkom centru Ames. Ova proširenja su ili nestala tokom vremena ili su ovi elementi ugrađeni u glavni standard; glavna ekstenzija je OpenMP, koja je višeplatformska ekstenzija za pristup zajedničkoj memoriji. Još jedno od novih proširenja, CoArray Fortran, ima za cilj promovirati razvoj paralelnog programiranja i .

    Prvi početnički pokušaj razvoja Erlanga može biti vrlo frustrirajući jer mnogi programeri koji su započeli s modernim jezicima sintaksu ovog jezika smatraju kriptografskom. Teško je napisati leksički analizator kada samo jedan pogrešan znak može rezultirati greškom u vremenu izvođenja, a ne greškom kompilacije ako se navedene konstrukcije ne koriste. U nekim od najranijih verzija nije bilo objekata (OOP), koji se smatraju korisnim atributima programiranja u modernim terminima, ili, na primjer, nije bilo dinamičke alokacije memorije. U isto vrijeme, Fortranova sintaksa je bila primjenjiva na naučni rad i proračune koji su uključivali operacije nad brojevima, a mnogi njeni nedostaci su uzeti u obzir u kasnijim verzijama. Na primjer, Fortran 95 ima vrlo kratke upute za izvođenje matematičkih operacija nad matricama i nizovima, što ne samo da uvelike poboljšava čitljivost programa, već daje korisne informacije kompajleru kako bi mogao vektorizirati operacije. Iz ovih razloga, Fortran se ne koristi često izvan naučnog i inženjerskog računarstva; on ostaje jezik za numeričko računarstvo visokih performansi.

    Bio sam pozvan da pokušam da napišem svoj prvi post ovdje, gdje vt4a2h predlaže korištenje C ++ za učenje. Da, mnoge kopije su pokvarene na ovu temu.

    Ja sam, kao vjerovatno većina školaraca na prostranstvima naše ogromne domovine, počeo da poimam osnove kroz plavi ekran, ali ne smrti, već Turbo Pascal 7.0. Naravno, tu je bio i Basic, sa kojim sam se prvi put susreo u predškolskom uzrastu na sovjetskom kompjuteru "Elektronika". Tada je to izgledalo kao čudan uređivač teksta, jer je kompjuter, očima djeteta, stvoren za igre. Međutim, već na institutu sam se upoznao sa jezikom Fortran, naučivši koji, i dalje se pitam zašto se ne koristi za nastavu.

    Da, mnogi će reći da je jezik mrtav, da ne odgovara modernoj stvarnosti, a udžbenici s imenom, kao na slici, izazivaju samo osmijeh. Pokušaću da objasnim zašto je ovaj jezik tako izuzetan i zašto ga preporučujem kao prvi jezik. Ako ste zainteresovani, dobrodošli pod kat.

    Smatram da osnovu za osnove programiranja treba postaviti još u školskim godinama, barem u srednjoj školi. Čak i ako će se u životu kompjuter koristiti samo za kucanje u Word "e ili za komunikaciju na društvenim mrežama, minimalno znanje o tome šta je algoritam i kako strukturirati slijed radnji kako bi se postigao željeni rezultat barem neće štetiti mladiću u odraslom dobu, i najvjerovatnije će pomoći da se formira poseban način razmišljanja.

    Da bi časovi informatike bili radost, a ne noćna mora, učenik mora razumjeti šta radi, kako to radi i zašto ide ovako, a ne drugačije. Uostalom, u stvari, trebate ispravno prenijeti informacije o ciklusu i uvjetnom operatoru kako bi osoba mogla samostalno pisati programe. U isto vrijeme, što je sintaksa jezika jednostavnija, lakše je razumjeti logiku pisanja koda. Ako osoba nauči da sastavlja ispravan algoritam, onda za programiranje na drugim jezicima treba samo znati sintaksu ovog jezika, a osnova će već biti postavljena.

    Zašto je Fortran tako izuzetan?

    Okrenimo se istoriji nastanka ovog jezika. Pojavio se dalekih 50-ih godina prošlog vijeka, kada su kompjuteri još bili veliki, bilo je malo programera, a informatika se nije predavala u školi i općenito se smatrala pseudonaukom. Potreban je bio jednostavan jezik koji bi pomogao inženjerima i naučnicima da "hrane" formule napisane na papiru kompjuterima, čak i putem bušenih kartica.

    Otuda i naziv samog jezika: Za mula Tran slator ili "prevodilac formule". One. U početku je jezik bio fokusiran na ljude bez posebne obuke, što znači da je morao biti što jednostavniji.

    Pa, kreatori su uspjeli u jednostavnosti. Klasični prvi program izgleda ovako:

    Program hw write(*,*) "Hello, World!" kraj
    Sintaksa je čak malo jednostavnija od Pascala, nema potrebe stavljati na kraj reda " ; " ili " : " ispred znaka jednakosti. Štaviše, ljudima sa minimalnim znanjem engleskog jezika neće biti teško da shvate značenje najjednostavnijeg programa.

    Ovdje želim napomenuti da Fortran ima nekoliko revizija standarda, od kojih su glavne 77 i 90 (uz zadržavanje kontinuiteta). 77 Fortran je zaista arhaičan, postoji ograničenje dužine reda i potrebno ga je uvući na početku reda, što može izazvati kulturni šok za mladog kandidata za programera. Nije ni čudo što su programi napisani u Fortranu 77 dobili s usana mog prijatelja opširno ime "Brežnjevljev kod". Stoga se sav moj tekst odnosi na jezički standard 90 i noviji.

    Na primjer, evo koda za izračunavanje zbira nenegativnih cijelih brojeva od 1 do n, unesenog s tastature, koji je napisala moja apsolventica dok je predavala programiranje od nule. Na njemu sam iskusio podučavanje Fortrana kao prvog jezika. Nadam se da joj je to dobro došlo, a moj eksperiment je bio uspješan. Barem je naučila osnove na nekoliko časova, od kojih je prvi bilo predavanje o jeziku.

    Program chisla implicitno nema! Varijable cijeli broj n,i,s ! Tijelo chisla s=0 upišite (*,*) "Unesite n" pročitajte (*,*) n ako (n.le.0) zatim upišite (*,*) "Negativno ili nula" inače uradite i=1,ns =s+i end dopisati (*,*) "Sum=", s kraj ako je kraj
    Lako je uočiti da je način na koji razmišljamo način na koji pišemo kod. U principu, za studenta ne mogu nastati nikakve poteškoće. Pažljivi čitalac će se, naravno, zapitati čemu služe nijedna i dvije zvjezdice u zagradama, odvojene zarezima. implicitni nijedan nam govori da eksplicitno specificiramo tip varijabli, dok će bez ovog unosa kompajler sam pogoditi tip. Prva zvjezdica znači da su ulaz i izlaz na ekranu, a druga označava da se format ulaza/izlaza određuje automatski. Zapravo, Fortran programi ne izgledaju komplikovanije od gore napisanog dijela koda.

    Šta je sa softverskim okruženjem?

    U školama, ai u svim državnim institucijama, često se postavlja pitanje softvera, posebno njegovog licenciranja. Jer novac za ove potrebe nije posebno izdvojen. Bar u moje vrijeme je bilo problema s tim, možda se sada situacija promijenila na bolje.

    Svaki uređivač teksta je pogodan za pisanje programa u Fortranu. Ako želite isticanje sintakse, možete koristiti Notepad++ (podržava samo standardnu ​​sintaksu 77) ili SublimeText. Napisali smo program, sa čime ćemo kompajlirati? Ovdje je sve jednostavno, možete koristiti besplatni GNU Fotran. Ako je planirana nekomercijalna upotreba, onda je dozvoljeno zamahnuti na kompajler od Intela, koji je dobro optimizovan za istoimene procesore i dolazi sa minimalno potrebnim IDE-om. One. ulazni prag je veoma povoljan.

    Prema mnogim korisnicima, najbolje razvojno okruženje Fortrana je Compaq Visual Fortran 6.6, čija je najnovija verzija objavljena početkom 2000-ih. Zašto se dogodilo da je okruženje bazirano na Visual Studio 6.0, koje se bez plesanja s tamburom, pokreće na Windows XP najviše 32 bita, i ima ograničenje u korištenoj memoriji, steklo toliku popularnost među Fortran programerima. Odgovor je prikazan na slici ispod.

    Ovo je Compaq Array Visualizer, koji je vrlo zgodan alat za vizualizaciju 1, 2 i 3-dimenzionalnih nizova dok se debuguje program direktno iz programa za otklanjanje grešaka. Kao što se kaže, jednom probajte, pojedite ga sada. Činjenica je da se Fortran sada koristi uglavnom u nauci (o čemu će biti reči kasnije), posebno u oblasti kojom se bavim, naime u atmosferskoj fizici. Prilikom otklanjanja grešaka u programima, nizovi predstavljaju različita meteorološka polja, kao što su temperatura, pritisak, brzina vjetra. Pronalaženje greške u grafičkim poljima je mnogo lakše nego u nizu brojeva, pogotovo jer se obično zna kako polje treba da izgleda, pa se očigledne greške trenutno odsječu.

    Nažalost, sav razvoj kompajlera prešao je sa Compaq-a na Intel. Intel je u početku podržavao Array Visualizer, međutim, te verzije su već bile blijedi odraz Compaq proizvoda, nije bilo zgodno raditi s njima kao prije, ali su barem minimalne performanse zadržane. Nažalost, Intel je prestao da razvija nove verzije Array Visualizer-a, čime je stao na kraj ovom najzgodnijem alatu.Zato zajednica Fortran najvećim dijelom piše programe i debuguje ih pod Compaq Visual Fortran na Windows-u, a pokreće borbene proračune na serverima pod Linuxom. koristeći Intel kompajlere Intel, molimo vas da saslušate molbe korisnika, vratite normalan alat za vizualizaciju niza svom debugeru!

    Fortranovo mjesto u modernom svijetu

    I sada dolazimo do same teme koja obično izaziva burnu diskusiju sa mojim kolegama koji koriste Matlab, koji tvrde da rijetki jezik opisan u ovom postu nije dobar ni za šta. Ovdje se ne slažem sa njima. Činjenica je da se Fortran historijski koristio u inženjerskim ili naučnim proračunima, pa je stoga s vremenom nabavio mnoge gotove biblioteke i kodove za programe za rješavanje određenog problema.

    Kod se doslovno prenosi s generacije na generaciju i dobro je dokumentiran. Možete pronaći mnoga gotova rješenja jednadžbi matematičke fizike, linearne algebre (ovdje treba napomenuti uspješnu implementaciju rada s matricama), integralne i diferencijalne jednadžbe i još mnogo, mnogo više. Verovatno je teško naći problem iz oblasti fizičkih i matematičkih nauka za koji ne bi bio implementiran algoritam na jeziku Fortran. A ako uzmemo u obzir odličnu optimizaciju Intelovih kompajlera za Intel procesore, podršku za paralelno računanje na klasterima visokih performansi, postaje jasno zašto ovaj jezik zauzima zasluženo prvo mjesto u naučnoj zajednici. Mislim da možete pronaći Fortran kompajler instaliran na bilo kojem superkompjuteru.

    Najozbiljniji modeli, barem iz oblasti atmosferske fizike, napisani su na Fortranu. Da, da, vremenska prognoza, za koju se s vremena na vrijeme svi zanimaju, dobija se tokom proračuna modela napisanih na ovom jeziku. Štaviše, jezik nije u stagnaciji, već se stalno usavršava. Dakle, nakon prethodno opisanih standarda 77 i 90, pojavila su se nova izdanja 95, 2003, 2008, čija je podrška implementirana u trenutnim kompajlerima. Najnovije verzije Fortrana donekle su osvježile stari provjereni jezik, dodajući podršku za moderni stil, dodajući objektno orijentirano programiranje, čiji je nedostatak bio gotovo glavni adut protivnika ovog jezika. Štaviše, Portland Grupa je objavila PGI CUDA Fortran Compiler, koji omogućava visoko paralelno računanje na video karticama. Dakle, pacijent je više nego živ, što znači da su Fortran programeri i dalje traženi.

    Umjesto pogovora

    A sada bih se želio vratiti na prvobitno pokrenutu temu podučavanja programiranja i pokušati sumirati glavne prednosti Fortrana pri odabiru njega kao prvog jezika.
    • Fortran je vrlo lak za naučiti, sintaksa je jasna i nespremnoj osobi. Nakon što ste naučili osnove, lako je ponovo naučiti bilo koji drugi jezik.
    • Besplatni set alata omogućava vam da ne primate nepotrebna pitanja od vlasnika autorskih prava.
    • Jezik je poznat nastavnicima, jer postoji dugo vremena, a naši nastavnici su uglavnom predstavnici starije generacije.
    • Rasprostranjen je širom svijeta i riznica je raznih biblioteka.
    • Standardiziran, višeplatformski i kompatibilan s ranijim revizijama.
    • Koristan je za studente tehničkih, a posebno fizičko-matematičkih specijalnosti, zbog usmjerenosti na naučne i inženjerske proračune.
    • Relevantno i traženo do danas.
    Pa zašto ne Fortran?

    Među naučnicima, na primer, postoji izreka da svaki matematički problem već ima rešenje u Fortranu, i zaista, među hiljadama Fortranovih paketa može se naći i paket za množenje matrice, i paket za rešavanje složenih integralnih jednačina, i mnogo, mnogo drugih. Nekoliko ovakvih paketa nastajalo je decenijama i do danas su popularni u naučnoj zajednici, na primjer - IMSL ( engleski).

    Većina ovih biblioteka je u stvari vlasništvo čovečanstva: dostupne su u izvornom kodu, dobro dokumentovane, otklonjene greške i veoma efikasne. Stoga je skupo mijenjati ih, a kamoli prepisivati ​​u druge programske jezike, uprkos činjenici da se redovno pokušavaju automatski pretvoriti FORTRAN kod u moderne programske jezike.

    Savremeni Fortran (Fortran 95 i Fortran 2003) je stekao karakteristike neophodne za efikasno programiranje za nove računarske arhitekture, omogućava korišćenje savremenih tehnologija programiranja, posebno OOP.

    Evolucija jezičkih standarda

    Fortran je visoko standardiziran jezik, zbog čega je lako prenosiv na različite platforme. Novi jezički standardi u velikoj mjeri zadržavaju kontinuitet sa starijim, što omogućava korištenje kodova prethodno napisanih programa i njihovo modificiranje.

    FORTRAN 66 (1972) Zasnovano na IBM standardu FORTRAN IV FORTRAN 77 (1980) Uvedena su mnoga poboljšanja: Fortran 90 (1991) Značajno revidiran jezički standard. Fortran 95 (1997) Ispravka prethodnog standarda. Uvedeni su FORALL operator i konstrukcija, omogućavajući veću fleksibilnost od operatora WHERE i konstrukcije za dodjelu nizova i zamjenu glomaznih petlji. FORALL vam omogućava da zamijenite bilo koju dodjelu sekcije ili operatora, a klauzula WHERE, posebno, omogućava pristup dijagonali matrice. Ovaj operator se smatra obećavajućim u paralelnom računarstvu, doprinoseći efikasnijoj implementaciji paralelizacije od petlji. Fortran 2003 (2004) Dalji razvoj OOP podrške na jeziku. Interakcija sa operativnim sistemom. Dodate su i sljedeće karakteristike: Fortran 2008 (2010) Standard pretpostavlja podršku putem jezika za paralelno računanje (Co-Arrays Fortran). Planirano je i povećanje maksimalne dimenzije nizova na 15, dodavanje ugrađenih specijalnih matematičkih funkcija itd.

    Kompajleri

    Od početnog razvoja jezika, kompajlere Fortran proizvodi IBM. Trenutno, IBM isporučuje kompajler za optimizaciju VS Fortran za IBM System z mainframe, čija istorija razvoja različitih verzija datira još od 1964. godine, kao i XL Fortran kompajler za platforme bazirane na PowerPC arhitekturi - AIX, Linux i superkompjuter Blue Gene (postojala je i verzija za Mac OS X, kada su Macintosh računari koristili PowerPC procesore). Oba ova kompajlera sadrže veoma sofisticirane optimizatore, rezultat pola veka kontinuiranog naučnog rada IBM stručnjaka. Na osnovu kompajlera IBM Fortran XL, Absoft, IBM poslovni partner, kreirao je i isporučuje Absoft Pro Fortran kompajler za sisteme bazirane na PowerPC (Linux, Mac OS X) i Intel (Linux, Mac OS X, Windows) procesorima .

    GNU Free Software Foundation objavila je open source Fortran 77 kompajler, g77, dostupan za gotovo svaku platformu i potpuno kompatibilan sa GCC-om. Sada je zamijenjen kompajlerom GFortran, koji implementira gotovo sve konstrukcije standarda Fortran-95 i mnoge konstrukcije standarda Fortran-2003 i Fortran-2008. Takođe je u potpunosti kompatibilan sa Fortranom-77 unatrag. Postoji i nezavisni g95 projekat za kreiranje Fortran-95 kompajlera zasnovanog na GCC-u.

    Karakteristike i struktura programa

    Fortran ima prilično veliki skup ugrađenih matematičkih funkcija, podržava rad s cijelim, realnim i kompleksnim brojevima visoke preciznosti. Izražajna sredstva jezika u početku su bila veoma loša, budući da je Fortran bio jedan od prvih jezika visokog nivoa. Kasnije su Fortran-u dodane mnoge leksičke konstrukcije koje su karakteristične za strukturno, funkcionalno, pa čak i objektno orijentirano programiranje.

    Bušena kartica sa oznakama kolona za Fortran.

    Struktura programa je prvobitno bila fokusirana na unos sa bušenih kartica i imala je niz svojstava koja su bila pogodna za ovaj konkretan slučaj. Dakle, 1. kolona je služila da se tekst označi kao komentar (sa simbolom C), od 1. do 5. bila je oblast oznake, a od 7. do 72. je bio stvarni tekst operatora ili komentara. Kolone od 73 do 80 mogle su poslužiti za numeriranje karata (da se vrati slučajno razbacan špil) ili za kratak komentar, prevodilac ih je ignorirao. Ako se tekst operatora ne uklapa u predviđeni prostor (od 7. do 72. kolone), u 6. kolonu sljedeće kartice stavlja se znak za nastavak, a zatim operater nastavlja na njega. Bilo je nemoguće postaviti dva ili više operatora u jednu liniju (mapu). Kada su bušene karte ušle u istoriju, ove prednosti su se pretvorile u ozbiljne neugodnosti.

    Zato Fortran standard, počevši od Fortrana 90, pored fiksnog formata izvornog teksta, ima i slobodan format koji ne reguliše poziciju linije, a takođe vam omogućava da upišete više od jednog operatora po redu. Uvođenje slobodnog formata omogućilo je stvaranje koda koji je čitljiv i jasan kao kod kreiran korištenjem drugih modernih programskih jezika, kao što je ili Java.

    Svojevrsna "vizit karta" starog Fortrana je ogroman broj oznaka koje su se koristile i u operatorima bezuslovnog skoka GOTO, i u operatorima petlje, i u operatorima opisa ulaza/izlaza formata FORMAT. Veliki broj oznaka i GOTO naredbi često je činio Fortran programe teško razumljivim.

    Upravo je ovo negativno iskustvo postalo razlog zašto su u brojnim modernim programskim jezicima (na primjer, Java) oznake i njima povezani operatori bezuvjetnog skoka uvelike modificirani.

    Međutim, moderni Fortran se riješio viška oznaka uvođenjem operatora DO ... END DO, DO WHILE, SELECT CASE. Štaviše, u modernim jezičkim standardima ostao je samo klasični GOTO operator, koji se i danas koristi u mnogim jezicima. Izračunati GOTO izraz, kao i konstrukcija ENTRY - višestruki ulazak u procedure, isključeni su.

    Takođe, pozitivne karakteristike modernog Fortrana uključuju veliki broj ugrađenih operacija sa nizovima i fleksibilnu podršku za nizove sa neobičnim indeksiranjem. primjer:

    Realna ,dimenzija (: ,: ) :: V ... dodijeli (V(- 2 : 2 ,0 : 10 ) ) ! Dodijelite memoriju za niz čiji indeksi mogu ! variraju od -2 do 2 (prvi indeks) ! a od 0 do 10 - drugi... V (2 ,2 : 3 ) = V(- 1 : 0 ,1 ) ! Rotirajte dio niza write(* ,* ) V(1 ,: ) ! Ispišite sve elemente niza V čiji je prvi indeks 1. odvojiti (V)

    Zdravo svijete!

    Fiksni format (razmaci u redovima od 1 do 6 označeni su znakovima "␣"):

    ␣␣␣␣␣␣PROGRAM zdravo ␣␣␣␣␣␣PRINT* , "Zdravo, svijet!" ␣␣␣␣␣␣END

    Slobodni format:

    Program hello print * , "Zdravo, svijet!" kraj

    Napomene.

    • Naredba PROGRAM je opciona. Strogo govoreći, jedina potrebna naredba u Fortran programu je naredba END.
    • Izbor velikih ili malih slova za pisanje programskih izraza je proizvoljan. Sa stanovišta modernih Fortran jezičkih standarda, mnoga velika i mnoga mala slova su ista pri pisanju jezičkih operatora.

    Interakcija sa drugim jezicima

    Mnogi programski sistemi vam omogućavaju da povežete objektne fajlove dobijene kao rezultat prevođenja Fortran programa sa objektnim fajlovima dobijenim od kompajlera sa drugih jezika, što vam omogućava da kreirate fleksibilnije i višefunkcionalne aplikacije. Za jezik Fortran je takođe dostupan veliki broj biblioteka koje sadrže i rutine za rešavanje klasičnih računarskih problema (LAPACK, IMSL, BLAS), zadatke za organizovanje distribuiranog računarstva (MPI, pvm) i zadatke za izgradnju grafičkih interfejsa (Quickwin, FORTRAN / TK) ili pristup DBMS-u (Oracle).

    Fortran u SSSR-u

    Bilješke

    1. Pogledajte na primjer: Netlib Repository na UTK i ORNL
    2. A. M. Gorelik. Evolucija programskog jezika Fortran (1957-2007) i izgledi za njegov razvoj // Računske metode i programiranje, 2008, vol. 9, str. 53-71
    3. Barteniev O.V. Moderni Fortran. - M.: Dialogue MEPhI, 2005. - ISBN 5-86404-113-0
    4. A. M. Gorelik. objektno orijentirano programiranje u modernom Fortranu
    5. S. D. Algazin, V. V. Kondratiev. Programiranje u Visual Fortranu. - M.: "MEPhI Dialogue", 2008. - 448 str. - ISBN 5-8243-0759-8
    6. Gorelik A. M. Vijesti
    7. VS FORTRAN
    8. XL Fortran za Linux
    9. Opšti pregled Absoft Pro Fortran Compiler Suites
    10. Sun Studio - Benchmarks
    11. Esej Aleksandra Rastorgueva o pojavi Fortrana u Dubni
    12. Istorija kompjuterske grafike u Rusiji

    Književnost

    • Fortran. Referentni priručnik programera Fortran automatski sistem kodiranja za IBM 704 EDPM - IBM Corp., 1956. - 51 str.
    • ISO/IEC 1539-2:2000 Informaciona tehnologija - Programski jezici - Fortran - Dio 2: nizovi znakova različite dužine
    • Robert W. Sebesta. 2.3. Računalo IBM 704 i jezik Fortran // Osnovni koncepti programskih jezika \u003d Koncepti programskih jezika / Per. sa engleskog. - 5. izd. - M.: Williams, 2001. - S. 63-69. - 672 str. - 5000 primjeraka. - ISBN 5-8459-0192-8 (ruski), ISBN 0-201-75295-6 (engleski)

    Linkovi

    • gfortran - Fortran 95/2003/2008 kompajler, dio GNU Compiler kolekcije
    • u Progopediji - enciklopediji programskih jezika (ruski)

    Top Related Articles