De ce fizicienii încă folosesc Fortran. Primele limbaje de programare de nivel înalt

  • gfortran
    • gfortran 4.5.0
  • Limbaj de programare

    Fortran - primul limbaj de programare care a fost implementat nivel inalt(după), însă, cu o mică rezervă - pentru mașinile construite după schema clasică von Neumann. Creat între 1954 și 1957 de un grup de programatori condus de John Backus la IBM. Câțiva ani mai târziu, au început livrările sale comerciale. Înainte de aceasta, programarea se desfășura fie direct în coduri de mașină, fie în asamblatori simbolici. Numele Fortran este o abreviere pentru FORmula TRANslator, adică translator de formule.

    Fortran este utilizat pe scară largă în principal pentru calculul științific și de inginerie. Unul dintre avantajele Fortranului modern este numărul mare de programe și biblioteci de subrutine scrise în el. Printre oamenii de știință, de exemplu, se spune că orice problemă matematică are deja o soluție în Fortran și, într-adevăr, puteți găsi printre mii de pachete Fortran un pachet pentru înmulțirea matricelor, un pachet pentru rezolvarea ecuațiilor integrale complexe și multe, multe altele. Un număr de astfel de pachete au fost create de-a lungul deceniilor și sunt încă populare astăzi (în principal în comunitatea științifică).

    Majoritatea acestor biblioteci sunt de fapt proprietatea umanității: sunt disponibile în codurile sursă, bine documentat, depanat și foarte eficient. Prin urmare, este costisitor să le schimbați, cu atât mai puțin să le rescrieți în alte limbaje de programare, în ciuda faptului că se încearcă în mod regulat convertirea automată a codului FORTRAN în limbaje de programare moderne.

    Un fel de „carte de vizită” a vechiului Fortran este o cantitate mare etichete care au fost utilizate atât în ​​instrucțiunile GOTO, cât și în bucla, precum și în instrucțiunile de declarație de intrare/ieșire în format FORMAT. Numărul mare de etichete și declarații GOTO au făcut adesea programele Fortran dificil de înțeles.

    Această experiență negativă a devenit motivul pentru care într-un număr de limbile moderne programarea (de exemplu, Java), etichetele și operatorii de salt necondiționați asociați sunt complet absente.

    Cu toate acestea, Fortran modern scapă de excesul de etichete introducând operatori precum DO ... END DO, DO WHILE, SELECT CASE. De asemenea, caracteristicile pozitive ale Fortran modern includ un număr mare de operațiuni încorporate cu matrice și suport flexibil pentru matrice cu indexare neobișnuită.

    Interacțiunea cu alte limbi

    Multe sisteme de programare vă permit să legați fișierele obiect rezultate din traducerea unui program Fortran cu fișierele obiect obținute de la compilatoare în alte limbi, ceea ce vă permite să creați aplicații mai flexibile și mai bogate în caracteristici. Un număr mare de biblioteci sunt disponibile și pentru limbajul Fortran, care conțin subrutine pentru rezolvarea clasică sarcini de calcul(LAPACK, IMSL, BLAS), sarcini de organizare a calculatoarelor distribuite (MPI, pvm) și sarcini de construcție interfețe grafice(Quickwin, FORTRAN/TK) sau acces la un DBMS (Oracle).

    Moștenirea Fortran

    Fortran a fost folosit de peste cincizeci de ani și există o mare parte din el încă în uz astăzi. Fortran este limbajul principal pentru unele probleme de calcul intensiv, cum ar fi modelarea vremii și climatului, dinamica fluidelor, chimia computațională, cromodinamica cuantică, modelarea dinamică. sistem solar, calculul orbitei sateliți artificialiși multe alte sarcini.

    Portabilitate

    La început, portabilitatea pentru Fortran a fost o problemă foarte presantă, deoarece nu exista un standard unic sau măcar informații de referință de la IBM. Și companiile de calculatoare au concurat între ele pentru a asigura incompatibilitatea între diferiți compilatori. Apariția standardelor a corectat problema. Standardul din 1966 a stabilit sintaxa și semantica, dar vânzătorii au continuat să introducă extensii incompatibile. Programatorii atenți și-au dat seama că utilizarea extensiilor incompatibile ar cauza probleme de portabilitate și au folosit adesea programe precum The PFORT Verifier pentru a identifica extensiile incompatibile.

    Extensiile incompatibile nu au fost singura problemă. Au existat o serie de probleme cu calculele numerice. Mai târziu, ideea aproape universală a aritmeticii binare în virgulă mobilă a fost dezvoltată și introdusă.

    Acces la mediul executabil (de exemplu, Linie de comanda, variabile de mediu) a fost destul de dificil până când a fost abordat în standardul din 2003.

    Acum este relativ ușor să implementezi un program complet portabil în Fortran.

    Elemente de sintaxă:

    Comentează până la sfârșitul rândului ! sau * în primul caracter al rândului
    Caz sensibil Nu
    ID variabil Expresie regulată [_a-zA-Z0-9](0-n)
    Atribuirea unei valori unei variabile =
    Declarație variabilă tip::variabil
    Declararea unei variabile cu atribuire de valoare tip::variabilă = valoare
    Gruparea expresiilor ()
    bloc face ... sfârşit face
    Egalitatea = sau.EQ.
    Inegalitate /= sau.NE.
    Comparaţie == < > <= >= <>sau.LT. .GT. .LE. .GE.
    Apelarea unei funcții Apelați f(a,b...)
    Apelarea unei funcții fără parametri APEL f
    Urmare sfârşitul rândului
    Daca atunci dacă condiția atunci ... termina dacă
    Dacă – atunci – altfel dacă condiție atunci ... else ... endif
    Bucla cu postcondiție FĂ... CÂND (condiție)
    For - următoarea buclă pentru un interval de numere întregi incrementat cu 1 etichetați i = 1, 10
    For - următoarea buclă pentru un interval de numere întregi decrementat cu 1 faceți eticheta i = 10, 1, -1

    Exemple:

    Salut Lume!:

    Exemplu pentru versiunile Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Acest exemplu este scris într-un format gratuit acceptat de Fortran 90 și standardele ulterioare, precum și de .

    Programul de comentarii în stil Fortran 90 HelloWorld print * , „Bună, lume!” finalizează programul HelloWorld

    factorial:

    Exemplu pentru versiunile Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Se utilizează determinarea iterativă a factorialului și un format de program liber. Specificațiile de format I și A sunt utilizate pentru a scoate numere zecimale și, respectiv, șiruri. Când se calculează factorii 13-16, are loc depășirea aritmetică, nu provocând o eroare, deci sunt ieșite valori greșite:

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

    program Număr întreg factorial :: f , n f = 1 n = 0 imprimă „(I2, A, I10)” , n , „! = " , f n = n + 1 f = f * n dacă (n == 17 ) atunci exit end if end do end program Factorial

    numerele Fibonacci:

    Exemplu pentru versiunile Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Se folosește determinarea iterativă a numerelor Fibonacci. Cel mai dificil lucru din acest exemplu este afișarea valorilor calculate în în formatul cerut, într-o singură linie și fără spații suplimentare. Specificația formatului (I3, A, $) înseamnă că mai întâi tipărește un număr întreg în format zecimal, cu lățime de exact trei caractere, apoi tipărește un șir și, în final, $ suprimă avansul de linie folosit de comanda de imprimare în mod implicit, astfel încât totul este tipărit pe o linie. Rețineți că specificatorul de format $ nu este standard în dialect; Programul funcționează, dar în timpul compilării afișează un avertisment despre acest lucru.

    program Fibonacci întreg :: f1 , f2 , f3 , i i = 1 f1 = 0 f2 = 1 do f3 = f2 + f1 f1 = f2 f2 = f3 i = i + 1 if (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

    Ecuația pătratică:

    Exemplu pentru versiunile g95 0.93, gfortran 4.5.0

    Exemplul folosește tipul de date complex încorporat. // — operator de concatenare a șirurilor. Numărul de dinaintea parantezelor din descrierea formatului indică de câte ori este repetat formatul dintre paranteze (în în acest caz, de două ori - pentru prima și a doua rădăcină).

    program Număr întreg patratic :: a , b , c real :: d , p1 , p2 complex :: cp2 citește (* , * ), a if (a == 0 ) apoi scrie (* , * ) "Nu este o ecuație pătratică" stop final if read (* , * ) b read (* , * ) c d = b * b - 4 * a * c p1 = - b / 2.0 / a if (abs (d )< 1.0e-9 ) then write (* , "(A, F8.3)" ) "x = " , p1 elseif (d >0 ) apoi p2 = sqrt (d ) / 2.0 / a scrie (* , "(2(A, F8.3))" ) "x1 = " , p1 + p2 , char (13 ) // char (10 ) / / "x2 = " , p1 - p2 else cp2 = sqrt (cmplx (d )) / 2.0 / a scrie (* , "(2(A, F8.3, F8.3), A)" ) "x1 = ( " , p1 + cp2 , ")" // char (13 ) // char (10 ) // "x2 = (" , p1 - cp2 , ")" end if end

    Salut Lume!:

    Exemplu pentru versiunile f2c 20090411, g95 0.93, gfortran 4.5.0

    FORTRAN 77); Primele șase caractere ale fiecărei linii sunt rezervate pentru informațiile de serviciu - marchează că linia este un comentariu sau o continuare a celei precedente, etichete și numere de rând. Set standard Caracterele Fortran nu conțin litere mici, așa că toate programele sunt scrise cu majuscule. Excepția de la această regulă sunt constantele de caractere - ele pot conține orice caractere care sunt acceptate de sistem.

    Prima linie dă acestei bucăți de cod numele HELLO și indică faptul că este programul principal. Numele programului este supus acelorași reguli ca și orice nume de identificare, de exemplu. trebuie să înceapă cu o literă și să nu conțină mai mult de 6 caractere.

    Comanda WRITE implementează tipărirea. O listă de parametri de control care configurează ieșirea este trecută în paranteze: UNIT selectează fișierul de ieșire (consola implicit), FMT selectează formatul de ieșire. Asteriscurile indică setările implicite. Nu este necesar să treci nume de parametri pe scurt, aceeași comandă ar arăta ca WRITE (*, *) ....

    În majoritatea implementărilor, o constantă șir poate fi închisă fie între ghilimele simple, fie duble.

    Un simplu Salut, lume! program PROGRAM HELLO WRITE (UNIT =* , FMT =* ) "Bună ziua, lume!" Sfârşit

    factorial:

    Exemplu pentru versiunile f2c 20090411, g95 0.93, gfortran 4.5.0

    Acest exemplu este scris în format fix (stil FOTRAN 77) și folosește calcul factorial iterativ.

    Fortran vă permite să omiteți declarațiile variabilelor; în acest caz, deduce tipurile lor în sine, dar, spre deosebire de limbile ulterioare, nu după contextul de utilizare a variabilei, ci după numele acesteia - dacă prima literă a numelui este I..N, tipul este selectat INTEGER, altfel - REAL. În acest caz, ambele variabile sunt numere întregi.

    Ciclul DO în acest caz corespunde bucla FORÎn limbile ulterioare, contorul de bucle N rulează secvenţial prin toate valorile de la 0 la 16. Corpul buclei se termină la linia etichetată 1, care este indicată în antetul buclei.

    Comanda PRINT folosește un format implicit de ieșire, care variază în funcție de compilatorul utilizat.

    PROGRAM) C . Din această cauză, după completarea liniei CC care conține rezultatul caracter cu caracter, restul liniei trebuie să fie completat manual cu spații.

    Verificarea faptului că următorul caracter din șirul sursă este o literă este prea lungă pentru a se potrivi pe o singură linie (toate caracterele din linia programului începând de la poziția a 73-a sunt ignorate), așa că trebuie să fie împărțit în două rânduri, iar al doilea marcat ca o continuare a primei (prin orice simbol în poziţia a 6-a).

    Operatorii de comparație din FORTRAN 77 sunt scriși ca .LE. ,.GE. etc. datorită faptului că > şi< не входят в набор символов языка; они были добавлены только в Fortran 90.

    PROGRAM CAMELC CARACTER TEXT * 30 , CC * 30 LOGIC LSPACE CITE (* , "(A)" TEXT 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 ) THEN IF (LSPACE ) THEN IF (NC .GE. 97 .AND. NC .LE. 122 ) THEN NC = NC - 32 END IF ELSE IF (NC .GE. 65 .AND. NC .LE. 90 ) ATUNCI NC = NC + 32 END IF END IF NCC = NCC + 1 CC (NCC : NCC ) = CHAR (NC ) LSPACE = .FALSE. ELSE LSPACE = .TRUE. END IF 1 CONTINUE DO 2, I = NCC + 1, LEN (CC) 2 CC (I: I) = "" SCRIE (*, *) CC END



    Am auzit prima dată despre Fortran în copilărie de la tatăl meu. El a spus că în anii 70 a trebuit să stea ore întregi la coadă la aproape singurul computer din universitate pentru a rula un cod primitiv folosind un card perforat. Recunosc sincer, de atunci și până de curând (în ciuda educației tehnice pe care am primit-o) am avut deplină încredere că Fortran a rămas undeva departe acolo, într-o lume în care suporturile de informații sunt cutii ciudate de carton cu găuri, iar computerele sunt atât de scumpe, încât sunt percepută ca o adevărată atracție.

    Imaginați-vă surpriza mea când am aflat că Fortran nu numai că este încă folosit undeva, ci este în curs de dezvoltare, este solicitat și este încă relevant. Dacă și tu ai crezut până în acest moment că Fortran a murit de mult, atunci iată câteva fapte interesante despre motivul pentru care încă mai merge.

    A supraviețuit la cel puțin 10 actualizări

    De fapt, Fortranul despre care auziți de la profesorii de la școală sau universitate a fost creat între 1954 și 1957. A intrat în istorie ca primul limbaj de nivel înalt implementat complet, a făcut o mică descoperire în lumea IT, dar în esență nu a fost foarte convenabil și funcțional. IBM a început să-l „termine” aproape imediat în 1958 a apărut FORTRAN II și, în paralel, FORTRAN III. Dar a căpătat un aspect mai mult sau mai puțin decent abia în anii 70, când au apărut mașini destul de portabile, când a fost dezvoltat un standard IBM FORTRAN IV cu drepturi depline și a apărut FORTRAN 66 cu bucle, etichete, instrucțiuni condiționale, comenzi de intrare/ieșire și altele. conform standardelor moderne capabilități primitive.

    Cea mai recentă versiune a apărut în 2010, numele ei este Fortran 2008 (cum puteți vedea, de-a lungul istoriei, numele a încetat să fie scris exclusiv cu litere mari), trăsătură distinctivă care sunt tot felul de calcule paralele, care au un efect pozitiv atât asupra vitezei de prelucrare a datelor, cât și asupra dimensiunii tablourilor procesate. În plus, lansarea Fortran 2015 este planificată pentru 2018. Din anunț rezultă că va îmbunătăți integrarea cu C și, de asemenea, va elimina deficiențele actuale.

    Printre cele mai populare 30 de limbaje de programare

    Până în prezent, 0,743% din solicitări în motoare de căutareÎn ceea ce privește limbajele de programare, acesta este dedicat în mod specific Fortran. Pentru a vă face o idee despre cât de tare este, imaginați-vă că limbi precum Lisp, Scala, Clojure, LabVIEW, Haskell, Rust și VHDL sunt clasate mai jos.

    Poate funcționa pe Android (și mai mult)

    De-a lungul istoriei sale lungi, compilatoarele pentru Fortana au fost dezvoltate de companii precum IBM, Microsoft, Compaq, HP, Oracle, datorită cărora limbajul este astăzi compatibil cu Windows, Mac OS și Linux. Mai mult, o aplicație de compilare convenabilă poate fi acum luată cu tine datorită aplicației CCTools pentru Android. Puteți rula compilatorul pe iPhone, dar în acest caz trebuie să faceți puțină magie.

    Concurează cu MATLAB

    Până acum, acest text nu a spus principalul lucru, și anume domeniul de aplicare al Fortran. Deci, acesta este un limbaj solicitat în știință și inginerie, folosit în întregime sau parțial pentru prognoza meteo, oceanografie, dinamică moleculară și analiză seismologică. În general, acesta este un adevărat limbaj „Data Science” din momentul în care calculatorul a fost pentru prima dată la vânzare în masă.

    Merită să recunoaștem că Fortran își datorează o parte din popularitate moștenirii sale. De-a lungul anilor, practic fără concurență, limba a crescut bază imensă clienți, biblioteci și suplimente. În plus, fiecare următoarea versiune Fortran le susține inevitabil pe cele precedente. Prin urmare, a apărut o situație în care nu există factori semnificativi pentru ca oamenii de știință și ingineri să abandoneze această alianță.

    De fapt, principalul concurent al Fortran astăzi este MATLAB, care este mai universal, mai funcțional și mai convenabil. Cu toate acestea, MATLAB are limitări stricte cu privire la software-ul utilizat, este destul de scump și, în majoritatea cazurilor, este pur și simplu inutil.

    Are un viitor relativ luminos

    Desigur, nu putem prezice ce se va întâmpla peste 10-20 de ani și cum se va schimba lumea IT în acest timp. Cu toate acestea, dacă te uiți la posibili noi concurenți pentru Fortran (cum ar fi Go), lor dezavantajul principal- universalizare. Adică, creatorii Fortranului au conturat foarte repede public țintă sub forma oamenilor de știință, opiniile și dorințele lor au prioritate. Prin urmare, este greu de imaginat că mâine își vor abandona „comanda specială” de dragul unei tendințe de modă. Pe această bază putem spune că o altă generație de Fortran pleacă cu îndrăzneală.

    Și apoi vor lansa o nouă versiune.

    Printre oamenii de știință, de exemplu, se spune că orice problemă matematică are deja o soluție în Fortran și, într-adevăr, printre mii de pachete Fortran puteți găsi un pachet pentru înmulțirea matricelor, un pachet pentru rezolvarea ecuațiilor integrale complexe și multe, multe altele. Un număr de astfel de pachete au fost create de-a lungul deceniilor și sunt încă populare în comunitatea științifică până în prezent, de exemplu - IMSL ( Engleză).

    Majoritatea acestor biblioteci sunt de fapt proprietatea umanității: sunt disponibile în cod sursă, bine documentate, depanate și foarte eficiente. Prin urmare, este costisitor să le schimbați, cu atât mai puțin să le rescrieți în alte limbaje de programare, în ciuda faptului că se încearcă în mod regulat convertirea automată a codului FORTRAN în limbaje de programare moderne.

    Modern Fortran (Fortran 95 și Fortran 2003) a dobândit caracteristicile necesare pentru programare eficientă pentru altele noi arhitecturi de calcul, vă permite să utilizați tehnologii moderne programare, în special OOP.

    Evoluția standardelor lingvistice

    Fortran este un limbaj foarte standardizat, motiv pentru care este ușor de portat diverse platforme. Noile standarde de limbaj mențin în mare măsură continuitatea cu cele mai vechi, ceea ce face posibilă utilizarea codurilor din programele scrise anterior și modificarea acestora.

    FORTRAN 66 (1972) Bazat pe standardul IBM FORTRAN IV FORTRAN 77 (1980) Au fost introduse multe îmbunătățiri: Fortran 90 (1991) Standardul lingvistic a fost revizuit semnificativ. Fortran 95 (1997) Corectarea standardului anterior. Operatorul și construcția FORALL au fost introduse, permițând mai multă flexibilitate decât operatorul și construcția WHERE pentru a atribui matrice și înlocui bucle greoaie. FORALL vă permite să înlocuiți orice atribuire de secțiune sau clauză WHERE, în special, oferă acces la diagonala unei matrice. Acest operator este considerat promițător în calculul paralel, facilitând paralelizarea mai eficient decât buclele. Fortran 2003 (2004) Dezvoltare în continuare Suport OOP în limbă. Interacţiune sistem de operare. Au fost adăugate și următoarele caracteristici: Fortran 2008 (2010) Standardul presupune suport prin intermediul limbajului calcul paralel(Co-Arrays Fortran). De asemenea, este planificată creșterea dimensiunii maxime a tablourilor la 15, adăugarea de funcții matematice speciale încorporate etc.

    Compilatoare

    De la dezvoltarea inițială a limbajului, compilatoarele Fortran au fost produse de IBM. IBM furnizează în prezent compilatorul de optimizare VS Fortran pentru mainframe IBM System z, istoric de dezvoltare versiuni diferite care datează din 1964, precum și un compilator XL Fortran pentru platforme bazate pe arhitectura PowerPC - AIX, Linux și supercomputerul Blue Gene (a fost lansată și o versiune pentru Mac OS X, când calculatoarele Macintosh foloseau procesoare PowerPC). Ambele compilatoare conțin optimizatori foarte complexe, rezultatul muncii științifice continue a specialiștilor IBM de peste o jumătate de secol. Pe baza compilatorului IBM Fortran XL, Absoft, un partener de afaceri IBM, a creat și furnizat compilatorul Absoft Pro Fortran pentru sisteme bazate pe procesoare PowerPC (Linux, Mac OS X) și Intel (Linux, Mac OS X, Windows).

    GNU Free Software Foundation a produs un compilator Fortran-77 open-source, g77, disponibil practic pentru orice platformă și complet compatibil cu GCC. Acum a fost înlocuit de compilatorul GFortran, care implementează aproape toate constructele standardului Fortran 95 și multe constructii ale standardelor Fortran 2003 și Fortran 2008. De asemenea, este complet compatibil cu Fortran 77. Există, de asemenea, un proiect independent numit g95 pentru a crea un compilator Fortran-95 bazat pe GCC.

    Caracteristicile și structura programului

    Fortran are destule set mare incorporat functii matematice, acceptă lucrul cu numere întregi, reale și complexe precizie ridicata. Mijloace expresive limbile au fost inițial foarte sărace, deoarece Fortran a fost una dintre primele limbi de nivel înalt. Ulterior, la Fortran au fost adăugate multe structuri lexicale caracteristice programării structurale, funcționale și chiar orientate pe obiecte.

    Card perforat cu marcaje pe coloană pentru Fortran.

    Structura programelor s-a concentrat inițial pe introducerea de la carduri perforate și avea o serie de proprietăți convenabile pentru acest caz particular. Astfel, prima coloană a servit la marcarea textului ca comentariu (cu simbolul C), de la 1 la 5 a fost localizată zona etichetei, iar de la 7 la 72 a fost localizat textul propriu-zis al operatorului sau al comentariului. Coloanele de la 73 la 80 puteau fi folosite pentru a numerota cărțile (pentru a restabili un pachet împrăștiat aleatoriu) sau pentru un scurt comentariu, acestea au fost ignorate de traducător; Dacă textul operatorului nu s-a încadrat în spațiul alocat (de la a 7-a la a 72-a coloană), a fost plasat un semn de continuare în coloana a 6-a a următoarei carduri, iar apoi operatorul a continuat pe el. Era imposibil să plasați două sau mai multe declarații pe o singură linie (hartă). Pe măsură ce cărțile perforate au devenit un lucru de istorie, aceste avantaje s-au transformat în inconveniente serioase.

    De aceea standardul Fortran, începând cu Fortran 90, pe lângă formatul fix text sursă a apărut un format liber care nu reglementează pozițiile liniilor și, de asemenea, vă permite să scrieți mai mult de un operator pe linie. Introducerea unui format liber a făcut posibilă crearea unui cod a cărui lizibilitate și claritate nu este inferioară codului creat folosind alte limbaje de programare moderne, precum Java.

    Un fel de „carte de vizită” a vechiului Fortran este numărul imens de etichete care au fost folosite atât în ​​operatorii de salt necondiționat GOTO și în operatorii de buclă, cât și în operatorii de descriere de intrare/ieșire format FORMAT. Numărul mare de etichete și declarații GOTO au făcut adesea programele Fortran dificil de înțeles.

    Această experiență negativă a devenit motivul pentru care într-o serie de limbaje de programare moderne (de exemplu, Java) etichetele și operatorii de salt necondiționați asociați sunt foarte modificați.

    Cu toate acestea, Fortran modern scapă de excesul de etichete datorită introducerii unor operatori precum DO ... END DO, DO WHILE, SELECT CASE. În plus, standardele de limbă moderne păstrează doar operatorul clasic GOTO, care este încă folosit în multe limbi astăzi. Instrucțiunea GOTO calculată, precum și constructul ENTRY - intrare multiplă în proceduri, au fost eliminate.

    De asemenea, caracteristicile pozitive ale Fortran modern includ un număr mare de operațiuni încorporate cu matrice și suport flexibil pentru matrice cu indexare neobișnuită. Exemplu:

    Dimensiunea reală (: ,: ) :: V ... alocă (V(- 2 : 2 ,0 : 10 ) ) ! Alocați memorie pentru o matrice ai cărui indecși pot ! variază de la -2 la 2 (primul indice) ! și de la 0 la 10 - secunde... V (2 .2 : 3 ) = V (- 1 : 0 .1 ) ! Rotiți o bucată dintr-o matrice scrie(* ,* ) V(1 ,: ) ! Tipăriți toate elementele matricei V al căror prim indice este 1. dealocare (V)

    Salut Lume!

    Format fix (spațiile din pozițiile rândului 1 până la 6 sunt marcate cu caractere „␣”):

    ␣␣␣␣␣␣PROGRAM salut ␣␣␣␣␣␣PRINT* , „Salut, lume!” ␣␣␣␣␣␣ÎNCHEIAȚI

    Format gratuit:

    Program hello print * , "Hello, World!" Sfârşit

    Note.

    • Declarația PROGRAM este opțională. Strict vorbind, singura instrucțiune necesară într-un program Fortran este instrucțiunea END.
    • Alegerea literelor mari sau mici pentru scrierea instrucțiunilor programului este arbitrară. Din punct de vedere standarde moderne Limba Fortran, multe litere mari iar multe litere mici coincid la scrierea operatorilor de limbă.

    Interacțiunea cu alte limbi

    Multe sisteme de programare vă permit să combinați fișierele obiect obținute ca urmare a traducerii unui program Fortran cu fișiere obiect obținute de la compilatoare din alte limbi, ceea ce vă permite să creați aplicații mai flexibile și mai bogate în caracteristici. Un număr mare de biblioteci sunt disponibile și pentru limbajul Fortran, care conțin atât rutine pentru rezolvarea problemelor clasice de calcul (LAPACK, IMSL, BLAS), probleme de organizare a calculului distribuit (MPI, pvm), cât și sarcini pentru construirea de interfețe grafice (Quickwin, FORTRAN/). TK) sau accesarea DBMS (Oracle).

    Fortran în URSS

    Note

    1. Vezi, de exemplu: Depozitul Netlib la UTK și ORNL
    2. A. M. Gorelik. Evoluția limbajului de programare Fortran (1957-2007) și perspectivele dezvoltării acestuia // Metode de calcul și programare, 2008, Vol. 9, p. 53-71
    3. Bartenyev O.V. Fortran modern. - M.: Dialogue MEPhI, 2005. - ISBN 5-86404-113-0
    4. A. M. Gorelik. programarea orientată pe obiecte în Fortran modern
    5. S. D. Algazin, V. V. Kondratiev. Programare în Visual Fortran. - M.: „Dialog MEPhI”, 2008. - 448 p. - ISBN 5-8243-0759-8
    6. Stiri Gorelik A. M.
    7. VS FORTRAN
    8. XL Fortran pentru Linux
    9. Absoft Pro Fortran Compiler Suites Prezentare generală
    10. Sun Studio - Benchmarks
    11. Eseu de Alexander Rastorguev despre apariția lui Fortran la Dubna
    12. Istoria graficii pe computer în Rusia

    Literatură

    • Fortran. Manual de referință pentru programator The Fortran Automatic Coding System pentru IBM 704 EDPM - IBM Corp., 1956. - 51 p.
    • ISO/IEC 1539-2:2000 Tehnologia informației - Limbaje de programare - Fortran - Partea 2: Șiruri de caractere cu lungime variabilă
    • Robert W. Sebesta. 2.3. Calculatorul IBM 704 și limbajul Fortran // Concepte de bază ale limbajelor de programare = Concepte ale limbajelor de programare / Transl. din engleza - Ed. a 5-a. - M.: Williams, 2001. - p. 63-69. - 672 s. - 5000 de exemplare. - ISBN 5-8459-0192-8 (rusă), ISBN 0-201-75295-6 (engleză)

    Legături

    • gfortran - compilatorul Fortran 95/2003/2008, parte a colecției de compilatori GNU
    • în Progopedia - enciclopedia limbajelor de programare (rusă)

    Mi s-a cerut să încerc să scriu prima mea postare aici, unde sugerează utilizarea C++ pentru învățare. Da, multe copii au fost sparte pe acest subiect.

    Eu, la fel ca probabil majoritatea elevilor din vastitatea vastei noastre Patrie Mamă, am început să înțeleg elementele de bază prin ecran albastru, dar nu moartea, ci Turbo Pascal 7.0. A existat, desigur, Basic, pe care l-am întâlnit prima dată vârsta preșcolară pe computerul sovietic „Electronics”. Apoi mi s-a părut un editor de text ciudat, pentru că un computer prin ochii unui copil a fost creat pentru jocuri. Cu toate acestea, deja la institut m-am familiarizat cu limba Fortran, după ce am aflat despre ea, încă mă întreb de ce nu este folosită pentru predare.

    Da, mulți vor spune că limba este moartă, nu corespunde realităților moderne, iar manualele cu titlu ca în imagine nu fac decât să zâmbești. Voi încerca să explic de ce această limbă este atât de minunată și de ce o recomand ca primă limbă. Dacă ești interesat, bine ai venit la cat.

    Cred că bazele de bază ale programării ar trebui puse în anii de școală, cel puțin în liceu. Chiar dacă în viață computerul va fi folosit doar pentru tastarea textului în Word sau pentru comunicare în rețelele sociale, cunoștințe minime despre ce este un algoritm și cum să structurați o secvență de acțiuni pentru a obține rezultatul dorit, cel puțin nu vor face rău băiețelului la vârsta adultă și, cel mai probabil, vor ajuta la formarea unei mentalități speciale.

    Pentru ca lecțiile de informatică să fie o bucurie și nu un coșmar, elevul trebuie să înțeleagă ce face, cum o face și de ce iese așa și nu altfel. La urma urmei, în esență, trebuie să transmiteți corect informații despre ciclu și operator condițional astfel încât o persoană să poată scrie programe în mod independent. În același timp, cu cât sintaxa limbajului este mai simplă, cu atât este mai ușor de înțeles logica scrierii codului. Dacă o persoană învață să compună algoritm corect, apoi pentru a programa în alte limbi, va trebui doar să învețe sintaxa acestui limbaj, iar baza va fi deja pusă.

    Ce este atât de special la Fortran?

    Să ne întoarcem la istoria creării acestei limbi. A apărut în îndepărtații ani 50 ai secolului trecut, când computerele erau încă mari, erau puțini programatori, iar informatica nu era predată la școală și era în general considerată o pseudoștiință. Ceea ce era nevoie era un limbaj simplu care să ajute inginerii și oamenii de știință să „alimenteze” formulele scrise pe hârtie către computere, chiar și prin carduri perforate.

    De aici și numele limbii în sine: Pentru mula Tran slator sau „traducător de formule”. Acestea. iniţial limba era destinată oamenilor fără antrenament special, ceea ce înseamnă că trebuia să fie cât se poate de simplu.

    Ei bine, creatorii au reușit în simplitate. Primul program clasic arată astfel:

    Programul hw write(*,*) „Bună, lume!” Sfârşit
    Sintaxa este chiar mai simplă decât Pascal, nu este nevoie să puneți „la sfârșitul liniei”; ; " sau " : " înaintea semnului egal. Mai mult, oameni cu cunoștințe minime în limba engleză, înțelegeți sensul cel mai simplu program nu va fi dificil.

    Aici vreau să remarc că Fortran are mai multe revizuiri ale standardelor, principalele fiind 77 și 90 (în același timp menținând continuitatea). 77 Fortran este cu adevărat arhaic, există o limită a lungimii liniei și este necesară indentarea începutului liniei, ceea ce poate provoca șoc cultural pentru un tânăr candidat programator. Nu degeaba programele scrise în Fortran 77 au primit numele succint „Codul Brejnev” de pe buzele prietenului meu. Prin urmare, tot textul meu se referă la standardul de limbă 90 și mai nou.

    Ca exemplu, voi da un cod pentru calcularea sumei numerelor întregi nenegative de la 1 la n, introduse de la tastatură, scris de studenta mea absolventă în timp ce îi predau programarea de la zero. A fost locul unde am experimentat predarea Fortranului ca primă limbă. Sper că acest lucru a fost benefic pentru ea și că experimentul meu a fost un succes. Ea a învățat cel puțin elementele de bază în câteva ore, dintre care prima a fost o prelegere despre limbă.

    Numărul programului implicit nici unul ! Variabile întregi n,i,s ! Corpul lui chisla s=0 scrieți (*,*) „Introduceți n” citiți (*,*) n dacă (n.le.0) apoi scrieți (*,*) „Negativ sau zero” altfel face i=1,n s =s+i sfârşitul scrie (*,*) „Suma=", s end dacă sfârşitul
    Este ușor de observat că modul în care gândim este modul în care scriem codul. În principiu, elevul nu poate întâmpina dificultăți. Cititorul atent va întreba, desigur, ce este implicit nici unul și două asteriscuri între paranteze separate prin virgule. implicit niciunul nu ne spune că specificăm în mod explicit tipul variabilelor, în timp ce fără această intrare compilatorul va ghici tipul în sine. Primul asterisc înseamnă că intrarea și ieșirea apar pe ecran, iar al doilea indică faptul că formatul de intrare și ieșire este detectat automat. De fapt, programul Fortran nu pare mai complicat decât fragmentul de cod scris mai sus.

    Dar mediul software?

    În școli și în orice agenție guvernamentală, se pune adesea întrebarea despre software, în special despre licențierea acestuia. Pentru că banii nu sunt alocați în mod special pentru aceste nevoi. Cel puțin pe vremea mea, asta era o problemă, poate acum situația s-a schimbat în bine.

    Oricine poate scrie programe în Fortran. editor de text. Dacă doriți evidențierea sintaxei, puteți utiliza Notepad++ (suporta doar sintaxa standard 77) sau SublimeText. Am scris programul, cum îl vom compila? Totul este simplu aici, puteți folosi gratuit GNU Fotran. Dacă intenționați să îl utilizați necomercial, atunci puteți utiliza și un compilator de la Intel, care este bine optimizat pentru procesoare cu același nume și vine cu IDE minim necesar. Acestea. Pragul de intrare este foarte preferenţial.

    Potrivit multor utilizatori, cel mai bun mediu de dezvoltare pentru Fortran rămâne Compaq Visual Fortran 6.6, cea mai recentă versiune a căruia a fost lansată la începutul anilor 2000. De ce s-a întâmplat ca un mediu bazat pe Visual Studio 6.0, care rulează pe Windows XP pe 32 de biți cel mult fără să danseze cu tamburina, și are o limită de memorie folosită, să fi câștigat atât de popular în rândul utilizatorilor Fortran. Răspunsul este prezentat în figura de mai jos.

    Acesta este Compaq Array Visualizer, care este un instrument foarte convenabil pentru vizualizarea matricelor 1, 2 și 3-dimensionale în timpul depanării programului direct din depanator. După cum se spune, după ce l-am încercat o dată, îl mănânc acum. Cert este că Fortran este folosit acum mai ales în știință (despre care vom discuta mai târziu), în special în domeniul cu care mă ocup, și anume în fizica atmosferei. La depanarea programelor, matricele reprezintă diverse câmpuri meteorologice, cum ar fi temperatura, presiunea, viteza vântului. Găsirea unei erori în câmpurile grafice este mult mai ușoară decât într-un set de numere, mai ales că de obicei știi cum ar trebui să arate câmpul, astfel încât erorile evidente sunt tăiate instantaneu.

    Din păcate, toate evoluțiile compilatorului au fost transferate de la Compaq la Intel. Intel a acceptat inițial Array Visualizer, cu toate acestea, acele versiuni erau deja o reflexie palidă a produsului de la Compaq, lucrul cu ele nu era la fel de convenabil ca înainte, dar funcționalitatea minimă a fost menținută. Din păcate, Intel a încetat să mai dezvolte noi versiuni de Array Visualizer, punând capăt acestui instrument cel mai convenabil. De aceea, cea mai mare parte a comunității Fortran scrie programe și le depanează sub Compaq Visual Fortran pe Windows și rulează calcule de luptă pe servere sub Linux. folosind compilatoare Intel, vă rugăm să ascultați rugămințile utilizatorilor, returnați un instrument normal pentru vizualizarea matricelor în depanatorul dvs.

    Locul lui Fortran în lumea modernă

    Și acum ajungem la subiectul care provoacă de obicei discuții aprinse cu colegii mei care folosesc Matlab, care susțin că este descris în acest post o limbă rară nu e bună de nimic. Aici nu sunt de acord cu ei. Faptul este că Fortran a fost folosit din punct de vedere istoric în calcule de inginerie sau științifice și, prin urmare, de-a lungul timpului a dobândit multe biblioteci gata făcute și coduri de program pentru rezolvarea unei anumite probleme.

    Codul este literalmente transmis din generație în generație și este, de asemenea, bine documentat. Puteți găsi multe soluții gata făcute ecuații ale fizicii matematice, algebră liniară (aici trebuie remarcată implementarea cu succes a lucrului cu matrici), integrală și ecuatii diferentiale si mult, mult mai mult. Probabil că este dificil de găsit o problemă în domeniul științelor fizice și matematice pentru care nu ar fi implementat un algoritm în Fortran. Și dacă țineți cont de optimizarea excelentă a compilatoarelor Intel pentru procesoarele Intel, suportul pentru calculul paralel pe clustere de înaltă performanță, atunci devine clar de ce acest limbaj ocupă un binemeritat primul loc în comunitatea științifică. Cred că puteți găsi un compilator Fortran instalat pe orice supercomputer.

    Cele mai serioase modele, cel puțin din domeniul fizicii atmosferice, sunt scrise în Fortran. Da, da, prognoza meteo, de care toată lumea este interesată din când în când, se obține prin calcule de modele scrise în această limbă. Mai mult, limbajul nu stagnează, ci se îmbunătățește constant. Astfel, după standardele descrise anterior 77 și 90, au apărut noi ediții 95, 2003, 2008, suport pentru care a fost introdus în compilatoarele actuale. Cele mai recente versiuni de Fortran au reîmprospătat oarecum vechiul limbaj testat în timp, oferind suport pentru stilul modern, adăugând programare orientată pe obiecte, a cărei absență era aproape cel mai important atu al oponenților acestui limbaj. Mai mult, The Portland Group a lansat PGI CUDA Fortran Compiler, care permite calcule extrem de paralele pe plăcile video. Astfel, pacientul este mai mult decât în ​​viață, ceea ce înseamnă că programatorii Fortran sunt încă solicitați.

    În loc de postfață

    Și acum aș dori să revin la subiectul abordat inițial despre învățarea programării și să încerc să formulez pe scurt principalele avantaje ale Fortran atunci când îl aleg ca primă limbă.
    • Fortran este foarte ușor de învățat, sintaxa este de înțeles pentru o persoană neinstruită. Odată ce cunoașteți elementele de bază, este ușor să reînvățați orice altă limbă.
    • Un set gratuit de instrumente vă permite să nu primiți întrebări inutile de la deținătorii drepturilor de autor.
    • Limba este familiară profesorilor, deoarece există de mult timp, iar profesorii noștri sunt în principal reprezentanți ai generației mai în vârstă.
    • Distribuit pe scară largă în întreaga lume și este o comoară pentru toate tipurile de biblioteci.
    • Standardizat, multiplatform și compatibil cu revizuirile anterioare.
    • Util pentru studenții de la specializările tehnice, și în special de fizică și matematică, datorită concentrării sale pe calculele științifice și de inginerie.
    • Relevant și solicitat până astăzi.
    Deci de ce nu Fortran?

    Mijlocul anilor 50 caracterizat prin progrese rapide în domeniul programării. Rolul programării în codurile mașinilor a început să scadă și au început să apară noi tipuri de limbaje de programare, acționând ca intermediar între mașini și programatori. A sosit timpul pentru a doua și a treia generație de limbaje de programare

    De la mijlocul anilor '50. secolul XX a început să creeze primele limbaje de programare de nivel înalt. Aceste limbi au fost independente de mașină (nu sunt legate de un anumit tip de computer).

    Dar fiecare limbă și-a dezvoltat propriile compilatoare - un program care realizează compilarea.

    Compilarea este traducerea unui program compilat într-o limbă sursă de nivel înalt într-un program echivalent într-un limbaj de nivel scăzut apropiat de Codul mașinii(cod absolut, modul obiect, uneori în limbaj de asamblare)

    limbaj de programare FORTRAN

    Primul limbaj de nivel înalt a fost creat între 1954 și 1957 de un grup de programatori condus de John Backus la IBM Corporation și aceasta a devenit următoarea etapă în dezvoltarea limbajelor de programare. Era limbajul de programare FORTRAN. A fost destinat calculelor științifice și tehnice. Numele Fortran este prescurtarea de la FORmulaTRANslator (traducător de formule).

    Istoria limbii

    La sfârșitul anului 1953, John Backus a propus să înceapă dezvoltarea unei alternative eficiente la asamblare pentru programarea pe computerul IBM 704. Până la jumătatea anului 1954, a fost finalizată un proiect de specificație Limba Fortran. Primul manual pentru Fortran a apărut în octombrie 1956, împreună cu primul compilator, livrat în aprilie 1957. Compilatorul era un compilator de optimizare, deoarece clienții erau reticenți să folosească un limbaj de programare de nivel înalt care nu putea genera cod cu performanțe mai mici decât asamblarea. limba.

    La acea vreme, comunitatea era sceptică cu privire la noul mod de programare și nu credea că Fortran va permite o programare mai rapidă și mai eficientă. Potrivit însuși John Backus, cea mai mare parte a lucrării sale a avut ca scop „a fi leneș”. Nu-i plăcea să scrie programe pentru IBM 701 în asamblare.

    Limbajul a fost adoptat pe scară largă de oamenii de știință pentru scrierea de programe intensive de calcul. Includere tip complex datele l-au făcut deosebit de potrivit pentru aplicații tehnice.

    Până în 1960, existau versiuni de Fortran pentru calculatoare IBM 709, 650, 1620, 7090. Popularitatea sa mare a încurajat producătorii de computere concurenți să creeze compilatoare Fortran pentru computerele lor. Astfel, până în 1963 existau peste 40 de compilatori pentru platforme diferite. Acesta este motivul pentru care Fortran este considerat primul limbaj de programare utilizat pe scară largă.

    Fortran în URSS

    Fortran a apărut în URSS mai târziu decât în ​​Occident, deoarece la început Algol a fost considerat o limbă mai promițătoare. Comunicarea dintre fizicienii sovietici și colegii lor de la CERN a jucat un rol major în introducerea Fortran, unde în anii 1960 aproape toate calculele au fost efectuate folosind programe Fortran.

    Primul compilator sovietic Fortran a fost creat în 1967 pentru mașina Minsk-2, dar nu a câștigat prea multă popularitate. Introducerea pe scară largă a Fortran a început după crearea în 1968 a compilatorului FORTRAN-DUBNA pentru mașina BESM-6. Calculatoarele ES, care au apărut în 1972, aveau deja inițial un traducător Fortran („împrumutat” de la IBM/360 împreună cu alt software)

    Fortran modern. Virtuțile limbajului

    Fortran a fost utilizat pe scară largă în principal pentru calculul științific și de inginerie. Este perfect pentru rezolvarea problemelor numerice, deoarece multe biblioteci au fost scrise de peste 50 de ani, astfel încât limbajul este folosit acum și nu este în pericol de a fi uitat în viitorul apropiat. Este folosit și astăzi, însă, nu atât datorită designului său de succes, cât și pentru că cantitate mare programe scrise pe el, schimbare și, mai ales, rescrie care nu are sens.

    Probabil, dacă doriți să calculați rapid ceva, atunci Fortran va fi unul dintre cele mai bune opțiuni. Tocmai de aceea a fost inventat limbajul.

    Structura sa permite compilatorului să optimizeze calculele foarte bine.

    Printre oamenii de știință, de exemplu, se spune că orice problemă matematică are deja o soluție în Fortran și, într-adevăr, puteți găsi printre mii de pachete Fortran un pachet pentru înmulțirea matricelor, un pachet pentru rezolvarea ecuațiilor integrale complexe și multe, multe altele.