Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • In contact cu
  • De ce fizicienii încă folosesc Fortran. Limbajul de programare Fortran - descriere, comenzi de bază și funcții

De ce fizicienii încă folosesc Fortran. Limbajul de programare Fortran - descriere, comenzi de bază și funcții

Ministerul Educației și Științei al Federației Ruse

Universitatea Federală Ural

numit după primul președinte al Rusiei

BAZELE PROGRAMĂRII

ÎN LIMBA FORTRAN

Tutorial

Ekaterinburg

Introducere. 3

Referință istorică. 5

Structura programului .. 8

Diferențele dintre Fortran 90 și Fortran 77.11

Acces la resurse de calcul. 15

Rularea sarcinilor pe un cluster. 17

Rescrieți textele programului pe server. 17

Compilare de programe. 17

Lansarea programului în cont. nouăsprezece

Tipuri de date. 22

Constanta intreaga. 22

O constantă reală. 23

Dublă precizie reală constantă. 23

Constanta complexa. 23

Constanta complexa de dubla precizie. 24

constantă booleană. 24

Constanta text. 24

Operatori de descriere a tipurilor de date. 26

INTEGER de tip întreg. 26

PRECIZIE REALĂ și DUBLĂ de tip real. 27

COMPLEX și DUBLE COMPLEX tip complex. 28

CARACTER este un tip de caracter. 29

tip boolean LOGIC. 29

DIMENSIUNEA matricelor. treizeci

PARAMETRE Atribut .. 32

Varietăți de tipuri de date încorporate. 35

Expresii, operații și sarcini. 36

Expresii aritmetice. 36

Expresii de atitudine. 37

Expresii logice. 38

Reguli de evaluare a expresiei. 38

Operatori de intrare/ieșire. 39

Operator de intrare DATE .. 39

Instrucțiunea de intrare READ .. 40

Instrucțiunea de ieșire WRITE. 41

Operator de afișare PRINT. 42

Declarație de specificație a formatului de intrare/ieșire (FORMAT) 43

Specificații X, T. 43

Specificatorul I 44

Separatoare. 45

Specificația F. 46

Repetoare. 49

Specificația E. 50

Specificația G .. 51

Descriptori de date. 52

Operatori de condiție. 53

Operatorul logic al condiției. 53

Operator condițional aritmetic. 57

SELECTARE CAZ. 60

Operatori de buclă. 62

Operator buclă DO .. 62

Operatorul de buclă DO WHILE. 64

Opriți operatorul STOP. 65

Instrucțiunea de ieșire în buclă EXIT. 66

Operatori de tranziție. 67

GOTO .. ​​​​67 operator de sărituri de cuvânt cu magistrală

Operator de sucursală calculat GOTO .. ​​​​67

Operator de ramură condiționat IF ... GOTO .. ​​​​68

Lucrul cu matrice. 69

Intrarea de matrice. 69

Afișarea matricelor. 71

Prelucrarea matricelor. 73

Subprograme .. 76

Operator de funcție. 78

Funcția de subrutină FUNCȚIE .. 81

Procedura subrutine SUBRUTINĂ. 83

Lucrul cu fișiere externe. 85

Operatorul de deschidere fișier OPEN .. 85

CLOSE instrucțiune de închidere a fișierului. 86

Exemple de lucru cu fișiere. 86

Literatură. 89

Introducere

O trăsătură caracteristică a computerelor paralele este capacitatea de a utiliza simultan un număr mare de procesoare pentru a procesa informații. Utilizarea sistemelor de calcul multiprocesor (MCS) presupune două sarcini pentru construirea de algoritmi paraleli: paralelizarea algoritmilor secvenţiali existenţi şi crearea de noi algoritmi cu accent pe sistemele de calcul paralele.

Cea mai comună tehnologie de programare pentru calculatoarele paralele cu memorie distribuită este în prezent MPI. Principala modalitate de interacțiune a proceselor paralele în astfel de sisteme este de a transmite mesaje unul altuia. Acest lucru se reflectă în numele acestei tehnologii - Message Passing Interface. Standardul MPI fixează interfața care trebuie respectată atât de sistemul de programare de pe fiecare platformă de calcul, cât și de către utilizator la crearea programelor. Biblioteca de comunicații MPI a devenit un standard general acceptat în programarea paralelă folosind mecanismul de transmitere a mesajelor.

Un program MPI este o colecție de procese independente, fiecare dintre ele rulează propriul program (nu neapărat același), scris în C sau FORTRAN. În FORTRAN, majoritatea procedurilor MPI sunt subrutine (numite cu instrucțiunea CALL) și un cod de eroare este returnat printr-un ultim parametru opțional la procedură. Mai multe proceduri, concepute ca funcții, nu returnează un cod de eroare. Nu sunt necesare majuscule stricte în numele subrutinelor și constantelor numite. Matricele sunt indexate de la 1. Obiectele MPI, care sunt structuri în C, sunt reprezentate în FORTRAN ca și tablouri de tip întreg.

IMM este programat în FORTRAN. Principala dificultate în utilizarea acestuia pentru sarcini mari este coordonarea interacțiunii părților unei sarcini mari. Fortran 90 include mecanisme pentru interacțiunea obiectelor în conformitate cu tehnologia de programare orientată pe obiecte, care facilitează munca în echipă pe un proiect mare. Acestea sunt module pentru decorarea bibliotecilor, structurilor și tipurilor de date derivate pentru organizarea datelor complexe, alocarea dinamică a memoriei, precum și o serie de mecanisme de procesare a tablourilor, inclusiv formarea diferitelor felii (secțiuni). Capacitatea de a combina într-o singură familie (în gen) proceduri tipice de procesare care diferă în tipurile de argumente poate fi un instrument util într-o serie de sarcini. Tipurile (familiile) de tipuri de date vă permit să personalizați cu ușurință implementarea unui tip ținând cont de proprietățile hardware-ului (de exemplu, un tip INTEGER poate fi declarat lung sau scurt prin controlul de vizualizare KIND). Unele reguli de stil pot ajuta la proiectare, de exemplu, declararea parametrilor de intrare, de ieșire și modificabili ai unei proceduri vă poate ajuta să găsiți erori de interoperabilitate. Regulile de scriere a proprietăților datelor, comentariilor și altor elemente facilitează citirea programelor scrise, ceea ce grăbește căutarea erorilor.

Referință istorică

1954 - IBM, traducătorul de prima limbă Fortran.

1958 - FortranII.

1962 - FortranIV.

1966 - Fortran 66.

1978 - Fortran 77.

A fost numită o modificare a limbii Fortran, care a apărut în 1958 FortranIIși conținea conceptul de subrutine și variabile partajate pentru a asigura comunicarea între segmente.

Până în 1962, apariția limbii cunoscute ca Fortran IV... În 1966, dezvoltarea standardului american pentru limba ANSI (American National Standards Institute) a fost finalizată, limba se numește Fortran 66... În 1978, a fost dezvoltată a doua versiune a standardului ANSI - limbajul Fortran 77, inclusiv elemente de programare structurată, de exemplu, FI structurat, tipuri de caractere.

A treia versiune a standardului ANSI este Fortran 90, realizată în 1991. Fortran 90 este dezvoltarea limbajului Fortran 77 deci un program scris în Fortran 77, poate fi compilat și rulat ca program în Fortran 90... Standard Fortran 90 Standard introduce multe facilități noi pentru operații pe matrice, noi metode de specificare a preciziei, format de cod sursă liber, recursivitate, matrice dinamice etc.

Programe în limba curentă a standardului Fortran 77 poate fi compilat cu succes de către compilatori Fortran 90 fara nici o modificare. Cu toate acestea, structura unui program în limbaj Fortran 90 poate diferi semnificativ de structura unui program echivalent pe Fortran 77... Programatorul trebuie să se ferească de amestecarea celor două stiluri.

În egală măsură, compilatorul cu Fortran 90 necesită furnizarea de explicații pentru raportarea unor coduri de nepotrivire (nepotrivire), adică utilizarea de operatori sau variabile care sunt permise dincolo de setul de reguli din afara standardului.

Fortran se mândrește printre limbajele de programare moderne. Este unul dintre primele limbaje de programare de nivel înalt și, de la începuturile sale, a fost conceput pentru a rezolva probleme complexe de calcul. Fortran a fost inițial întâmpinat cu scepticism în rândul programatorilor aplicați, deoarece se credea că costul programării într-un limbaj de nivel înalt ar avea o pierdere semnificativă a vitezei de calcul. Când vine vorba de modelarea proceselor complexe sau procesarea unor cantități mari de informații, viteza de calcul este un factor decisiv în determinarea alegerii limbajului, platformei de calcul și tehnologiei de programare.

  • gfortran
    • gfortran 4.5.0
  • Limbaj de programare

    Fortran este primul limbaj de programare la nivel înalt implementat (după), deși cu o mică avertizare - pentru mașinile construite conform schemei clasice von Neumann. Creat între 1954 și 1957 de un grup de programatori condus de John Backus la IBM Corporation. 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 un acronim pentru FORmula TRANslator, adică traducătorul 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, există o astfel de zicală că orice problemă matematică are deja o soluție în Fortran și, într-adevăr, se poate găsi printre mii de pachete Fortran atât un pachet pentru înmulțirea matricei, cât și un pachet pentru rezolvarea ecuațiilor integrale complexe, si multe, multe altele. Un număr de astfel de pachete au fost create de-a lungul deceniilor și sunt populare până în prezent (în principal în comunitatea științifică).

    Majoritatea acestor biblioteci sunt de fapt proprietatea omenirii: sunt disponibile în coduri 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.

    Un fel de „carte de vizită” a vechiului Fortran este un număr mare de etichete, care au fost folosite atât în ​​ramura necondiționată GOTO, cât și în instrucțiunile buclei, cât și în instrucțiunile care descriu formatul de intrare/ieșire 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 lipsesc deloc.

    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 de matrice încorporate și suport flexibil pentru matrice cu indexare neobișnuită.

    Interacțiunea cu alte limbi

    Multe sisteme de programare permit legarea fișierelor obiect obținute ca urmare a traducerii unui program Fortran cu fișierele obiect obținute de la compilatoare din alte limbaje, ceea ce face posibilă crearea de aplicații mai flexibile și mai multifuncționale. Pentru limbajul Fortran sunt disponibile și un număr mare de biblioteci, care conțin atât subrutine 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 acces la DBMS (Oracle).

    Moștenirea Fortran

    Fortran a fost folosit de peste cincizeci de ani și există o mare parte din el care încă mai trăiește. Fortran este limbajul principal pentru unele sarcini intensive din punct de vedere computațional, cum ar fi modelarea vremii și a climei, dinamica fluidelor, chimia computațională, cromodinamica cuantică, modelarea dinamicii sistemului solar, calcularea orbitelor sateliților artificiali și multe altele.

    Portabilitate

    Portabilitatea pentru Fortran a fost o problemă presantă în primele zile, deoarece nu exista un standard unic sau măcar referință de la IBM. Și firmele de calculatoare au concurat între ele pentru a oferi incompatibilitate între compilatoare. 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 prudenț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 calculul numeric. Mai târziu, ideea aproape universală a aritmeticii binare în virgulă mobilă a fost dezvoltată și implementată.

    Accesul la mediul executabil (de ex. linia de comandă, variabilele de mediu) a fost destul de dificil până când a fost observat în standardul din 2003.

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

    Elemente de sintaxă:

    Comentariu la sfârșitul rândului ! sau * în primul caracter al rândului
    Sensibil la majuscule Nu
    Regex identificator de variabilă [_a-zA-Z0-9] (0-n)
    Atribuirea unei valori unei variabile =
    Declarație variabilă tip :: variabilă
    Declarație variabilă cu atribuire tip :: variabilă = valoare
    Gruparea expresiilor ()
    bloc face ... sfârşit face
    Egalitate = sau.EQ.
    Inegalitate / = sau.NE.
    Comparaţie == < > <= >= <>sau .LT. .GT. .LE. .GE.
    Apel de funcție Apelați f (a, b...)
    Apelarea unei funcții fără parametri APEL f
    Secvenţă 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)
    Bucla For-next pentru un interval de numere întregi incrementat cu 1 etichetați i = 1, 10
    Bucla For-next 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 liber acceptat de standardele și dialectul Fortran 90 și ulterioare.

    Programul de comentarii în stil Fortran 90 HelloWorld print *, „Hello, World!” termina 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 formatul liber al programului. Specificațiile de format I și A sunt utilizate pentru a scoate numere zecimale și, respectiv, șiruri. La calcularea factorilor 13-16, are loc o depășire aritmetică care nu provoacă o eroare, astfel încât valorile incorecte sunt tipărite:

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

    program Număr întreg factorial :: f, nf = 1 n = 0 imprimă „(I2, A, I10)”, n, „! =", fn = 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 utilizează determinarea iterativă a numerelor Fibonacci. Cel mai dificil lucru din acest exemplu este ieșirea valorilor calculate în formatul dorit, pe o singură linie și fără spații suplimentare. Specificația formatului (I3, A, $) înseamnă că mai întâi este tipărit un număr întreg zecimal, cu lățime de exact trei caractere, apoi este tipărit un șir și, în final, $ suprimă avansul de linie implicit utilizat de comanda de imprimare, astfel încât totul este imprimat pe unul singur. linie... Rețineți că specificatorul de format $ nu este standard în dialect; programul funcționează, dar când este compilat, afișează un avertisment despre acesta.

    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ție cuadratică:

    Exemplu pentru versiunile g95 0.93, gfortran 4.5.0

    Exemplul folosește complexul de tip de date încorporat. // - operator de concatenare a șirurilor. Numărul din fața parantezelor din descrierea formatului înseamnă de câte ori se repetă formatul dintre paranteze (î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 dacă (a == 0) apoi scrie (*, *) „Nu este o ecuație pătratică” stop sfârșit dacă se citește (*, *) b citește (*, *) cd = b * b - 4 * a * c p1 = - b / 2.0 / a dacă (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. Setul de caractere standard Fortran nu conține caractere 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 denumește această bucată de cod HELLO și indică faptul că este programul principal. Numele programului urmează aceleași reguli ca orice nume de identificare, adică. trebuie să înceapă cu o literă și să nu conțină mai mult de 6 caractere.

    Comanda WRITE implementează tipărirea. Lista parametrilor de control care personalizează ieșirea este trecută între paranteze: UNIT selectează fișierul de ieșire (implicit - consola), FMT - formatul de ieșire. Asteriscurile reprezintă opțiunile implicite. Numele parametrilor nu trebuie să fie transmise; pe scurt, aceeași comandă ar arăta ca WRITE (*, *) ....

    În majoritatea implementărilor, o constantă șir poate fi inclusă fie între ghilimele simple, fie între ghilimele 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 într-un format fix (stil FORTRAN 77) și folosește un calcul iterativ al factorialului.

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

    Bucla DO în acest caz corespunde buclei FOR a limbilor 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 formatul implicit de ieșire, care variază în funcție de compilatorul utilizat.

    PROGRAM) C. Din acest motiv, după completarea liniei CC care conține rezultatul caracter cu caracter, restul rândului trebuie completat manual cu spații libere.

    Verificarea că următorul caracter al liniei inițiale este o literă este prea lungă pentru a se potrivi pe o singură linie (toate caracterele liniei de program, începând cu a 73-a poziție, sunt ignorate), așa că trebuie împărțit în două rânduri și marcați al doilea ca o continuare a primului (orice personaj aflat în poziţia a 6-a).

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

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



    Fortran(de asemenea FORTRAN) este limbaj de programare dezvoltat la începutul anilor 1950 și încă folosit în prezent. Numele este prescurtarea pentru „FORmula TRANslator”. Versiunile timpurii ale limbii erau cunoscute ca FORTRAN, dar literele nu mai erau scrise cu majuscule în Fortran 90. Standardele de limbă oficială se referă acum la limbă ca „FORTRAN”.

    > Fortran este utilizat în principal pentru calcul științific și analiză numerică. Deși inițial a fost un limbaj procedural, versiunile recente de Fortran au inclus câteva caracteristici pentru a sprijini programarea orientată pe obiecte pentru începători.

    Primul compilator FORTRAN a fost dezvoltat pentru IBM 704 în 1954-57 de o echipă IBM condusă de John W. Backus. A fost un compilator de optimizare, deoarece autorii au motivat că nimeni nu ar folosi limbajul, chiar și atunci când învață programarea pentru manechin, dacă performanța sa nu ar fi comparabilă cu limbajul de asamblare.

    Limbajul a devenit larg răspândit în rândul oamenilor de știință și a fost folosit pentru a scrie programe cu operații numerice intensive, ceea ce i-a forțat pe creatorii compilatoarelor Fortran să rescrie cu sârguință codul compilatorului, astfel încât să genereze cod mai rapid. Există mulți furnizori de compilatoare de înaltă performanță pentru Fortran astăzi. Multe progrese în teoria și designul compilatorului au fost motivate de nevoia de a genera cod Fortran bun, corespunzător pentru programarea de bază.

    Sunt cunoscute mai multe versiuni ale limbii, inclusiv binecunoscutul FORTRAN IV (cunoscut și ca FORTRAN 66), Fortran 77 și Fortran 90. Ultimul standard formal pentru limbaj, publicat în 1997, este cunoscut sub numele de Fortran 95. IBM versiunile limbii nu au fost niciodată atât de populare ca cele dezvoltate de alte companii, iar acest lucru este valabil mai ales pentru FORTRAN IV - WATFOR, versiunea FORTRAN IV, dezvoltată la Universitatea din Waterloo din Canada, a fost cea mai solicitată, deoarece s-a afișat mai bine. decât restul mesajelor de eroare de compilare. De asemenea, software-ul pentru a genera automat diagrame de flux din programele FORTRAN a fost dezvoltat în afara IBM.

    Inițial, limbajul s-a bazat pe precizie în formatarea codului sursă și pe utilizarea intensă a stărilor numerice și a instrucțiunii GOTO. Aceste ciudatenii au fost eliminate din versiunile mai noi ale limbii. Versiunile ulterioare au introdus, de asemenea, concepte de programare „moderne”, cum ar fi comentariile codului sursă și ieșirea textului, instrucțiunile IF-THEN-ELSE (în FORTRAN 77), recursiunea (în Fortran 90) și calculul paralel, în timp ce încercarea de a salva în Fortran are un nivel slab. profil și performanță ridicată. Printre cele mai populare limbaje bazate pe Fortran se numără SAS pentru raportarea statistică și SIMSCRIPT pentru modelarea proceselor de așteptare.

    Furnizorii de calculatoare științifice de înaltă performanță (Burroughs, CDC, Cray, IBM, Texas Instruments) au adăugat extensii la Fortran pentru a permite utilizarea unor caracteristici hardware speciale, cum ar fi: cache de instrucțiuni, conexiuni ale conductelor procesorului, matrice vectoriale etc. De exemplu, una dintre Compilatoarele IBM Fortran (H Extended IUP) au conținut un strat de optimizare care a forțat instrucțiunile de cod de mașină să mențină mai multe blocuri aritmetice interne ocupate în orice moment. Un alt exemplu este CFD, o „variantă” specială a Fortran concepută special pentru supercomputerul ILLIAC IV de la Centrul de Cercetare Ames al NASA. Aceste extensii fie au dispărut în timp, fie aceste elemente au fost încorporate în standardul principal; extensia principală este OpenMP, care este o extensie multiplatformă pentru acces la memoria partajată. O altă extensie nouă, CoArray Fortran, își propune să stimuleze dezvoltarea programării paralele și.

    Prima încercare a unui începător de a dezvolta Erlang poate fi foarte frustrantă, deoarece sintaxa acestui limbaj este considerată criptografică de mulți programatori care au început să învețe cu limbi moderne. Este dificil să scrieți un analizor lexical când doar un caracter greșit poate duce la o eroare de rulare, mai degrabă decât la o eroare de compilare, dacă constructele specificate nu sunt utilizate. În unele dintre cele mai vechi versiuni, nu existau obiecte (OOP), care sunt considerate atribute de programare utile în timpurile moderne sau, de exemplu, nu exista o alocare dinamică de memorie. În același timp, sintaxa lui Fortran a fost aplicabilă lucrărilor științifice și calculelor care implică operații pe numere, iar multe dintre deficiențele sale au fost abordate în versiunile ulterioare. De exemplu, Fortran 95 are instrucțiuni foarte scurte pentru efectuarea de operații matematice pe matrice și tablouri, care nu numai că îmbunătățesc foarte mult lizibilitatea programului, dar oferă și informații utile compilatorului pentru a vectoriza operațiile. Din aceste motive, Fortran nu este adesea folosit în afara calculului științific și ingineresc, rămâne un limbaj pentru calculul numeric de înaltă performanță.

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

    Eu, ca majoritatea școlarilor din vastitatea vastei noastre Patrie Mamă, am început să înțeleg elementele de bază prin ecranul albastru, dar nu moartea, ci Turbo Pascal 7.0. A existat, desigur, Basic, pe care l-am întâlnit prima dată la vârsta preșcolară pe computerul sovietic „Electronics”. Apoi părea un editor de text ciudat, pentru că computerul a fost creat pentru jocuri prin ochii unui copil. Cu toate acestea, deja la institut m-am familiarizat cu limba Fortran, după ce am învățat care, î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, provoacă doar un zâmbet. 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 sub cat.

    Cred că baza pentru bazele programării ar trebui să fie pusă înapoi în anii de școală, cel puțin în liceu. Chiar dacă în viață un computer va fi folosit doar pentru tastarea Word sau pentru comunicarea pe rețelele de socializare, cunoștințele minime despre ce este un algoritm și cum se structurează o secvență de acțiuni pentru a obține rezultatul dorit cel puțin nu va dăuna unui tânăr adolescent, deoarece un adult, și cel mai probabil va ajuta la formarea unei mentalități speciale.

    Pentru ca lecțiile de informatică să fie o bucurie și să nu viseze în coșmaruri, elevul trebuie să înțeleagă ce face, cum o face și de ce iese așa și nu altfel. La urma urmei, de fapt, trebuie să transmiteți corect informații despre buclă și operatorul condiționat, astfel încât o persoană să poată scrie programe pe cont propriu. Mai mult, 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ă algoritmul corect, atunci pentru programarea în alte limbi, trebuie doar să învețe sintaxa acestui limbaj, iar baza va fi deja pusă.

    De ce este Fortran atât de minunat?

    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 se preda la școală și, în general, era 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, limbajul era destinat persoanelor fără pregătire specială, ceea ce înseamnă că trebuia să fie cât mai simplu.

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

    Programul hw scrie (*, *) „Hello, World!” Sfârșit
    Sintaxa este chiar puțin mai simplă decât Pascal, nu este nevoie să puneți la sfârșitul rândului " ; " sau " : „înainte de semnul egal. Mai mult, persoanelor cu cunoștințe minime de limba engleză nu le va fi greu să înțeleagă sensul celui mai simplu program.

    Aici vreau să remarc că Fortran are mai multe revizuiri ale standardelor, dintre care principalele sunt 77 și 90 (în același timp menținând continuitatea). Fortran este cu adevărat arhaic, există o limită a lungimii liniei și este necesară indentarea începutului liniei, ceea ce poate da unui tânăr candidat programator un șoc cultural. Nu fără motiv, programele scrise în Fortran 77 au primit de la prietenul meu numele încăpător „Codul Brejnev”. 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. Acolo am experimentat predarea Fortranului ca primă limbă. Sper că a fost bine pentru ea și că experimentul meu a fost un succes. Cel puțin ea a învățat elementele de bază în câteva lecții, dintre care prima a fost petrecută pe o prelegere despre limbă.

    Program chisla 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, ns = s + i sfârșit scrieți (*, *) „Suma =", s sfârșit dacă sfârșit
    După cum puteți vedea, scriem codul așa cum gândim. În principiu, stagiarul nu poate avea 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 de variabile, în timp ce fără această intrare, compilatorul va ghici tipul în sine. Primul asterisc înseamnă că intrarea și ieșirea se întâmplă pe ecran, iar al doilea înseamnă că formatul I/O este detectat automat. De fapt, un program Fortran nu pare mai complicat decât o bucată de cod scrisă mai sus.

    Dar mediul software?

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

    Orice editor de text este potrivit pentru scrierea programelor Fortran. Dacă doriți evidențierea sintaxelor, puteți utiliza Notepad ++ (suportă doar 77 de standarde de sintaxă) sau SublimeText. Programul a fost scris, cu ce vom compila? Este simplu, poți folosi gratuit GNU Fotran. Dacă utilizarea este planificată pentru utilizare necomercială, atunci este permis să vizăm compilatorul de la Intel, care este bine optimizat pentru procesoarele cu același nume și vine cu IDE-ul 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 intamplat ca mediul bazat pe Visual Studio 6.0, care fara sa danseze cu tamburina porneste cel mult pe Windows XP 32 de biti, si are o limitare a memoriei folosite, sa aiba o asemenea popularitate printre fortrans. 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 procesul de depanare a unui program 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. Este mult mai ușor să cauți o eroare în câmpurile grafice decât într-un set de numere, mai ales că de obicei știi cum ar trebui să arate aproximativ câmpul, astfel încât erorile evidente sunt tăiate instantaneu.

    Din păcate, toată munca compilatorului a fost transmisă de la Compaq la Intel. Intel a susținut inițial Array Visualizer, deși acele versiuni erau deja o reflectare palidă a produsului Compaq, nu era la fel de convenabil să lucrezi cu ele ca înainte, dar cel puțin performanța minimă a fost acceptată. Din păcate, Intel a încetat să mai dezvolte noi versiuni ale Array Visualizer, renunțând la acest instrument cel mai convenabil. De aceea, comunitatea Fortran în cea mai mare parte scrie programe și le depanează pentru Compaq Visual Fortran pe Windows și lansează calcule de luptă pe serverele Linux folosind Compilatoare Intel Intel, vă rugăm să ascultați rugămințile utilizatorilor, returnați un instrument normal de redare a matricei la depanator!

    Locul lui Fortran în lumea modernă

    Și acum ajungem la subiectul care provoacă de obicei o discuție aprinsă cu colegii mei care folosesc Matlab, care susțin că limbajul rar descris în această postare este inutil pentru orice. Aici nu sunt de acord cu ei. Faptul este că Fortran a fost folosit din punct de vedere istoric în inginerie sau calcule ș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 chiar bine documentat. Puteți găsi multe soluții gata făcute la ecuații ale fizicii matematice, algebrei liniare (aici ar trebui să remarcăm implementarea cu succes a lucrului cu matrice), ecuații integrale și diferențiale și multe, multe altele. Probabil că este greu de găsit o problemă din domeniul fizicii și matematicii, pentru care nu ar fi fost implementat un algoritm în limbajul Fortran. Și dacă luăm în considerare 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.

    Majoritatea modelelor serioase, 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 în timpul calculelor modelelor scrise în această limbă. Mai mult decât atât, limba nu este în stagnare, ci este în continuă perfecționare. Deci, după standardele 77 și 90 descrise mai devreme, au apărut noi ediții 95, 2003, 2008, al căror suport a fost introdus în compilatoarele actuale. Cele mai recente versiuni de Fortran au împrospătat oarecum vechiul limbaj testat în timp, adăugând suport pentru stilul modern, adăugând programare orientată pe obiecte, a cărei absență a fost aproape principalul atu al oponenților acestui limbaj. Mai mult, The Portland Group a lansat Compilatorul PGI CUDA Fortran, 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 rămân la cerere până acum.

    În loc de postfață

    Și acum aș dori să revin la subiectul ridicat inițial al predării programării și să încerc să rezum 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 ai învățat elementele de bază, este ușor să reînveț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ă.
    • Este răspândit pe scară largă în întreaga lume și este un tezaur pentru toate tipurile de biblioteci.
    • Standardizat, multi-platformă și compatibil cu versiunea inversă.
    • Este util studenților specialităților tehnice, și în special de fizică și matematică, datorită orientării către calcule științifice și inginerești.
    • Este relevant și solicitat până astăzi.
    Deci de ce nu Fortran?

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

    Majoritatea acestor biblioteci sunt de fapt proprietatea omenirii: sunt disponibile în coduri 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.

    Fortran modern (Fortran 95 și Fortran 2003) a dobândit caracteristicile necesare pentru o programare eficientă pentru noile arhitecturi de calcul, permite utilizarea tehnologiilor moderne de programare, în special, OOP.

    Evoluția standardelor lingvistice

    Fortran este un limbaj foarte standardizat, motiv pentru care este ușor de portat pe diferite platforme. Noile standarde de limbaj păstrează în mare măsură continuitatea cu cele mai vechi, ceea ce permite utilizarea codurilor programelor scrise anterior și modificarea acestora.

    FORTRAN 66 (1972) Bazat pe standardul IBM FORTRAN IV FORTRAN 77 (1980) A introdus 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 constructul WHERE pentru a atribui matrice și înlocui buclele voluminoase. FORALL vă permite să înlocuiți orice atribuire de secțiuni sau operatorul și clauza WHERE, în special, oferă acces la diagonala matricei. Acest operator este considerat promițător în calculul paralel, contribuind la o paralelizare mai eficientă decât buclele. Fortran 2003 (2004) Dezvoltarea în continuare a suportului OOP în limbaj. Interacțiunea cu sistemul de operare. Au fost adăugate și următoarele caracteristici: Fortran 2008 (2010) Standardul presupune suport prin intermediul limbajului de calcul paralel (Co-Arrays Fortran). De asemenea, ar trebui să mărească dimensiunea maximă a tablourilor la 15, să adauge funcții matematice speciale încorporate etc.

    Compilatoare

    De la dezvoltarea inițială a limbajului, compilatoarele Fortran au fost fabricate de IBM. În prezent, IBM furnizează compilatorul de optimizare VS Fortran pentru mainframes-urile IBM System z, a cărui istorie a dezvoltării diferitelor versiuni datează din 1964, precum și compilatorul XL Fortran pentru platforme bazate pe arhitectura PowerPC - AIX, Linux și supercomputerul Blue Gene (o versiune pentru Mac OS X când computerele Macintosh foloseau procesoare PowerPC). Ambele compilatoare conțin optimizatori extrem de sofisticați, care sunt rezultatul cercetării și dezvoltării continue la IBM de peste jumătate de secol. Pe baza compilatorului IBM Fortran XL, Absoft, un partener de afaceri IBM, a creat și furnizează compilatorul Absoft Pro Fortran pentru sisteme bazate pe PowerPC (Linux, Mac OS X) și Intel (Linux, Mac OS X, Windows) procesoare.

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

    Caracteristicile și structura programului

    Fortran are un set destul de mare de funcții matematice încorporate, acceptă lucrul cu numere întregi, reale și complexe de înaltă precizie. Mijloacele de expresie ale limbii au fost inițial foarte slabe, deoarece Fortran a fost una dintre primele limbi de nivel înalt. Mai târziu, la Fortran au fost adăugate multe construcții lexicale tipice 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. Deci, prima coloană a servit pentru a marca textul ca comentariu (simbol C), de la 1 la 5 a fost zona marcajelor, iar de la 7 la 72 a fost textul propriu-zis al operatorului sau al comentariului. Coloanele de la 73 la 80 puteau fi folosite pentru numerotarea cărților (pentru a restabili un pachet împrăștiat accidental) 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 pus un semn de continuare în coloana a 6-a a cardului următor, iar apoi operatorul a continuat pe el. Era imposibil să plasați doi sau mai mulți operatori pe o linie (hartă). Pe măsură ce cărțile perforate au intrat în istorie, aceste virtuți s-au transformat în inconveniente serioase.

    De aceea, în standardul Fortran, începând cu Fortran 90, pe lângă formatul fix al textului 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 formatului liber a permis crearea unui cod, a cărui lizibilitate și claritate nu este inferioară codului creat folosind alte limbaje de programare moderne, precum sau Java.

    Un fel de „carte de vizită” a vechiului Fortran este un număr mare de etichete, care au fost folosite atât în ​​ramura necondiționată GOTO, cât și în instrucțiunile buclei, cât și în instrucțiunile care descriu formatul de intrare/ieșire 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 au fost modificați foarte mult.

    Cu toate acestea, Fortran modern scapă de excesul de etichete datorită introducerii unor operatori precum DO ... END DO, DO WHILE, SELECT CASE. Mai mult, în standardele de limbă moderne, a rămas doar operatorul clasic GOTO, care este încă folosit în multe limbi. Instrucțiunea GOTO calculată, precum și constructul ENTRY - intrări multiple în proceduri au fost eliminate.

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

    Real, dimensiune (:,:) :: V ... alocă (V (- 2: 2, 0: 10)) ! Alocați memorie pentru o matrice ai cărui indici pot ! variază de la -2 la 2 (primul indice) ! iar de la 0 la 10 - al doilea... V (2, 2: 3) = V (- 1: 0, 1) ! Rotiți o porțiune dintr-o matrice scrie (*, *) V (1,:) ! Tipăriți toate elementele matricei V al căror prim indice este 1. dealocarea (V)

    Salut Lume!

    Format fix (caracterele „” sunt folosite pentru a separa spațiile la pozițiile liniilor de la 1 la 6):

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

    Format gratuit:

    Program hello print *, „Hello, World!” Sfârșit

    Observatii.

    • 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 punctul de vedere al standardelor moderne de limbaj Fortran, multe litere mari și multe litere mici sunt aceleași atunci când scriu operatori de limbă.

    Interacțiunea cu alte limbi

    Multe sisteme de programare permit legarea fișierelor obiect obținute ca urmare a traducerii unui program Fortran cu fișierele obiect obținute de la compilatoare din alte limbaje, ceea ce face posibilă crearea de aplicații mai flexibile și mai multifuncționale. Pentru limbajul Fortran, sunt disponibile și un număr mare de biblioteci, care conțin atât subrutine pentru rezolvarea problemelor clasice de calcul (LAPACK, IMSL, BLAS), sarcini pentru organizarea calculului distribuit (MPI, pvm), cât și sarcini pentru construirea de interfețe grafice (Quickwin, FORTRAN / TK) sau acces la DBMS (Oracle).

    Fortran în URSS

    Note (editare)

    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, V. 9, p. 53-71
    3. Bartenev 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. Kondrat'ev. Programare vizuală 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. Manualul de referință al programatorului. Sistemul de codare automată Fortran 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. Calculator IBM 704 și limbajul Fortran // Concepte de bază ale limbajelor de programare = Concepte ale limbajelor de programare / Per. din engleza - Ed. a 5-a. - M .: Williams, 2001 .-- S. 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 Protopedia - Enciclopedia limbajelor de programare (rusă)

    Top articole similare