Limbajul de programare Fortran. Versiunea limbajului de programare Fortran

Alfabetul - în programare - un sistem de simboluri indecompuse, care se pot distinge cu încredere (litere, cifre, semne de punctuație etc.) utilizate pentru a construi limbaje de programare.

Sintaxa este partea unui limbaj de programare care descrie structura programelor ca seturi de caractere. Sintaxa unei limbi este contrastată cu semantica ei. Sintaxa unei limbi descrie limbajul „pur”, în timp ce semantica atribuie sens diferitelor construcții sintactice.

Semantica - în programare - un sistem de reguli pentru determinarea comportamentului constructelor individuale ale limbajului. Semantica determină sensul semantic al propozițiilor într-un limbaj algoritmic.

Limbaje de programare de nivel scăzut – Autocode, Assembly,

Limbaje de programare de nivel înalt - Fortran, Algol, Cobol, Pascal, BASIC, C++, Prolog

Limbaje de programare de nivel ultra-înalt – APL, ALGOL-68

Limbaje de programare computațională - Fortran, Pascal, Algol, BASIC, C

Limbaje de procesare simbolică – Lisp, Prolog, Snoball etc.

Limbi de prima generatie:

Codurile de mașină au fost limbajul de programare din prima generație

Limbi de a doua generație:

Asamblator

Limbi de generație a treia:

aceste limbi sunt adesea desemnate ca limbi de nivel „înalt”.

Limbi de generație a patra:

BASIC, COBOL, C și Pascal

Limbaje de programare de generația a cincea:

Prolog, LISP, C++, Visual Basic, Delphi.

Limbajul de programare Fortran

Primul limbaj de programare de nivel înalt cu un traducător. Creat între 1954 și 1957 de un grup de programatori condus de John Backus la IBM. Numele Fortran este un acronim pentru FORmula TRANslator (traducător 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. 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.

Fortran modern (Fortran 95 și Fortran 2003) a dobândit caracteristicile necesare pentru o programare eficientă pentru noile arhitecturi de calcul și 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 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 77 (1980)

Au fost introduse multe îmbunătățiri:

Au fost introduși operatori pentru deschiderea și închiderea unui fișier (OPEN, CLOSE) și scoaterea către un dispozitiv standard - PRINT.

S-au adăugat tipul de date șir și funcții pentru procesarea acestuia.

Au fost introduse operatorul bloc IF și construcția IF THEN - ELSE IF THEN - END IF, precum și operatorul de includere a fragmentelor de program INCLUDE.

A fost introdusă capacitatea de a lucra cu fișiere cu acces direct.

Dimensiunea maximă a matricei a fost mărită de la 3 la 7. Restricțiile privind indicii matricei au fost eliminate.

Capacitățile de lucru cu proceduri au fost îmbunătățite și extinse.

A fost introdus conceptul de fișier intern (care sunt matrice, variabile numerice și șir). Fișierele interne permit, în special, conversia număr în șir și linie în număr folosind operatorii standard de citire și scriere READ și WRITE.

Fortran 90 (1991)

Standardul lingvistic a fost revizuit semnificativ.

A fost introdus un format gratuit pentru scrierea codului. Au apărut descrieri suplimentare pentru IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST.

Se introduc operatori de control și construcții. S-a adăugat DO ... END DO (în loc de a încheia bucla cu o etichetă), DO WHILE, o instrucțiune de transfer de control la începutul buclei CYCLE, un construct de selecție SELECT CASE (pentru a înlocui constructele greoaie IF și instrucțiunile GOTO), ca precum și declarația finală a unei unități de program, procedură modulară sau internă END .

A fost introdus un set de instrumente și funcții pointer pentru lucrul cu RAM (similar cu limbajul C).

Au fost introduși operatori pentru lucrul cu memoria dinamică (ALLOCATE, DEALLOCATE, NULLIFY).

Componente software adăugate MODUL, PRIVAT, PUBLIC, CONȚINE, INTERFACĂ, UTILIZARE, INTENȚIE.

A fost introdusă mascarea asignărilor de matrice (atribuire la executarea unei condiții logice impuse elementelor de matrice fără a utiliza operatori de condiție), precum și lucrul cu secțiuni de matrice. Au fost introduse un operator și un construct WHERE pentru a înlocui parțial buclele (partea dreaptă a operatorului de atribuire nu se modifică). Mascarea atribuirii se aplică aproape tuturor operatorilor, constructelor și funcțiilor care operează pe tablouri.

Operațiile standard de atribuire, adunare, scădere, precum și împărțirea și înmulțirea cu un număr sunt extinse la matrice și secțiunile acestora definite prin secțiuni. În acest caz, se realizează atribuirea în funcție de elemente.

Au apărut noi funcții încorporate, în primul rând pentru lucrul cu matrice. Funcții pentru calcule în matrice: ALL (produs logic) și MASK (adunare logică), COUNT (număr de elemente adevărate), PRODUCT (produs al elementelor matricei), SUM (adunarea elementelor matricei), DOT_PRODUCT (produs scalar), MATMUL ( înmulțirea matriceală). Au fost adăugate funcții de ajutor, precum și funcții pentru reformarea și plierea matricelor.

Elementele OOP au apărut în limbaj. Au fost introduse tipuri de date derivate. A fost anunțată o listă separată de caracteristici de limbă învechite care urmează să fie eliminate în viitor.

S-au adăugat funcții suplimentare pentru lucrul cu datele șirului, în special funcțiile TRIM (eliminarea spațiilor din urmă) și REPEAT (copierea multiplă a unui șir) și funcțiile de aliniere stânga și dreapta.

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)

Dezvoltarea în continuare a suportului OOP în limbaj. Interacțiunea cu sistemul de operare. Au fost adăugate și următoarele caracteristici:

Intrare/ieșire asincronă a datelor.

C Instrumente de interfață

Îmbunătățirea plasării dinamice a datelor

Standardul presupune suport prin intermediul limbajului de 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.

Istoria creării limbajului de programare Fortran. Standardele existente. Versiunea limbajului de programare Fortran.

Programatorii au scris programe pentru primele computere în limbaje de comandă pentru mașini. Acesta este un proces foarte intens și îndelungat. A trecut o perioadă semnificativă de timp între începutul compilării programului și începerea utilizării acestuia. Această problemă ar putea fi rezolvată doar prin crearea de instrumente de programare automată.
Primele „instrumente” care au salvat munca programatorilor au fost subrutinele. În august 1944, prima subrutină pentru calcularea sinx a fost scrisă pentru mașina de releu Mark I sub conducerea lui Grace Hopper (o femeie programatoare și ofițer naval în Marina SUA).
Grace Hopper nu a fost singura preocupată de problema ușurării muncii programatorilor. În 1949, John Mauchly (unul dintre creatorii computerului ENIAC) a dezvoltat sistemul SHORT Code, care poate fi considerat predecesorul limbajelor de programare de nivel înalt. Programatorul a notat problema de rezolvat sub formă de formule matematice și a convertit formulele în coduri de două litere. Ulterior, un program special a tradus aceste coduri în cod mașină binar. Astfel, J. Mauchly a dezvoltat unul dintre primii interpreți primitivi. Și în 1951, G. Hopper a creat primul compilator A-0. Ea a fost prima care a introdus acest termen.

Primele limbi de nivel înalt: Cobol și Fortran
În anii 50 ai secolului trecut, un grup condus de G. Hopper a început să dezvolte un nou limbaj și compilator B-0. Nou limba ar permite programarea într-o limbă apropiată de engleza obișnuită. Dezvoltatorii limbajului au selectat aproximativ 30 de cuvinte englezești, pentru recunoașterea cărora G. Hopper a venit cu o metodă care a fost păstrată în operatorii viitoarelor limbaje de programare: fiecare cuvânt conține o combinație unică a primei și a treia litere. Acest lucru permite compilatorului să ignore toate celelalte litere dintr-un cuvânt atunci când generează codul de mașină pentru un program.
G. Hopper a asociat necesitatea apariției unui astfel de sistem, a cărui limbă este apropiată de limba vorbită, cu faptul că domeniul de aplicare al aplicațiilor informatice se va extinde și, prin urmare, va crește și numărul de utilizatori. Potrivit lui G. Hopper, ar trebui abandonate încercările de „a le transforma pe toate în matematicienii".
În 1958, sistemul B-0 se numea FLOW-MATIC și era concentrat pe prelucrarea datelor comerciale. În 1959, a fost dezvoltat limbajul COBOL (Common Business Oriented Language) independent de mașină limbaj de programare nivel înalt pentru traducătorul corespunzător din această limbă. G. Hopper a acționat din nou ca consultant la crearea limbajului COBOL.
În 1954, a fost publicat un mesaj despre crearea limbajului FORTRAN (FORmula TRANslation) (Fortran). Locul de naștere al limbii a fost sediul IBM din New York. Unul dintre principalii dezvoltatori este

John Backus. De asemenea, a devenit autorul NFB (Backus Normal Form), care este folosit pentru a descrie sintaxa multor limbaje de programare. În aceeași perioadă, limba ALGOL a devenit populară în țările europene și în URSS. La fel ca FORTRAN, a fost orientat spre probleme matematice. A implementat tehnologia de programare avansată de la acea vreme, programarea structurată.

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 EC, care au apărut în 1972, aveau deja inițial un traducător Fortran („împrumutat” de la IBM/360 împreună cu alte programe).

Standarde

Limbajul a fost standardizat în cadrul ANSI și ISO

Au fost dezvoltate standarde - Fortran 66, Fortran 77, Fortran 90, Fortran 95, Fortran 2003 și Fortran 2008.

Standardizarea limbajelor de programare creează premisele pentru creșterea portabilității software-ului pentru computere de orice arhitectură. Standardizarea Fortran este unul dintre motivele longevității limbii, deoarece datorită standardizării a fost asigurată posibilitatea utilizării unui fond uriaș de programe de aplicație care au fost create de-a lungul deceniilor de existență a limbii.

Fortran este un limbaj foarte standardizat, motiv pentru care este ușor de portat pe diverse platforme. Există mai multe standarde lingvistice internaționale:

FORTRAN IV(utilizat ulterior ca bază FORTRAN 66 (1966);

FORTRAN 77(1978) multe îmbunătățiri: tipul de date șir și funcții pentru procesarea acestora, instrucțiuni bloc IF, ELSE IF, ELSE, END IF, instrucțiune INCLUDE etc.

Fortran 90(1991) au revizuit semnificativ standardul lingvistic. A fost introdus un format gratuit pentru scrierea codului. Au apărut descrieri suplimentare: IMPLICIT NONE, TYPE, ALOCATABLE, POINTER, TARGET, NAMELIST; structuri de control DO ... END DO, DO WHILE,CYCLE, SELECT CASE, WHERE; lucrul cu memorie dinamică (ALLOCATE, DEALLOCATE, NULLIFY); componente software MODUL, PRIVAT, PUBLIC, CONTINE, INTERFATA, UTILIZARE, INTENȚIE. Au apărut noi funcții încorporate, în primul rând, au apărut elemente OOP în limbajul de lucru cu matrice

Fortran 95(1997) - corectarea standardului anterior Fortran 2003(2004) Dezvoltarea în continuare a suportului OOP în limbaj. Interacțiunea cu sistemul de operare Au fost introduse operatorul și constructul FORALL, permițând mai multă flexibilitate decât operatorul și constructul 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) Dezvoltarea în continuare a suportului OOP în limbaj. Interacțiunea cu sistemul de operare. Au fost adăugate și următoarele caracteristici: 1. Intrare/ieșire asincronă a datelor 2. Mijloace de interacțiune cu limbajul. 3. Îmbunătățirea plasării dinamice a datelor. Fortran 2008(2010) Standardul presupune suport prin intermediul limbajului de 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.

Versiunea limbajului de programare Fortran

Programatorii care au dezvoltat programe exclusiv în limbaj de asamblare și-au exprimat îndoieli serioase cu privire la posibilitatea unui limbaj de înaltă performanță la nivel înalt, astfel încât principalul criteriu la dezvoltarea compilatoarelor Fortran a fost eficiența codului executabil. Un număr mare de biblioteci au fost create pentru acest limbaj, variind de la complexe statistice la pachete de control prin satelit, astfel încât Fortran continuă să fie utilizat în mod activ. Există o versiune standard a Fortran, WF (High Performance Fortran), pentru supercalculatoare paralele cu mai multe procesoare.

Cobol (Cobol). Este un limbaj compilat pentru utilizare în probleme economice și de afaceri, dezvoltat la începutul anilor '60. Se caracterizează printr-o mare „verbositate” - declarațiile sale arată uneori ca fraze obișnuite în engleză. Cobol a furnizat instrumente foarte puternice pentru lucrul cu cantități mari de date stocate pe diverse medii externe. Au fost create o mulțime de aplicații în acest limbaj, care sunt încă utilizate activ și astăzi.

Algol (Algol). Un limbaj compilat creat în 1960. A fost destinat să înlocuiască Fortran, dar datorită structurii sale mai complexe nu a fost utilizat pe scară largă. În 1968, a fost creată o versiune a Algol 68, care, în posibilitățile sale, este încă înaintea multor limbaje de programare astăzi, dar din cauza lipsei de computere suficient de eficiente pentru acesta, nu a fost posibil să se creeze compilatoare bune pentru acesta într-un timp util.

Pascal. Limbajul Pascal, creat la sfârșitul anilor 70 de către fondatorul multor idei moderne de programare, Niklaus Wirth, amintește în multe privințe de Algol, dar a înăsprit o serie de cerințe pentru structura programului și are capabilități care îi permit să fie cu succes. folosit la crearea unor proiecte mari.

De bază. Există atât compilatori, cât și interpreți pentru această limbă și se află pe primul loc în lume ca popularitate. A fost creat în anii 60 ca limbă educațională și este foarte ușor de învățat. Acesta este unul dintre limbajele de programare promițătoare.

C (Si). Acest limbaj a fost creat la Laboratorul Bell și nu a fost considerat inițial un limbaj de masă. S-a planificat înlocuirea limbajului de asamblare pentru a putea crea programe la fel de eficiente și compacte și, în același timp, să nu depindă de un anumit tip de procesor. În anii 70, multe programe de aplicații și de sistem și o serie de sisteme de operare cunoscute (Unix) au fost scrise în acest limbaj.

Java (Java, Java). Acest limbaj a fost creat de Sun la începutul anilor 90 pe baza C++. Este conceput pentru a simplifica dezvoltarea aplicațiilor bazate pe C++, eliminând toate caracteristicile de nivel scăzut din acesta. Dar principala caracteristică a acestui limbaj este compilarea nu în codul mașinii, ci în bytecode independent de platformă (fiecare comandă ocupă un octet). Acest bytecode poate fi executat folosind un interpret - Java Virtual Machine, ale cărei versiuni sunt create astăzi pentru toate platformele. Datorită disponibilității multor mașini Java, programele Java pot fi portabile nu numai la nivel de text sursă, ci și la nivel de bytecode binar, astfel încât limbajul Java este astăzi pe locul al doilea ca popularitate în lume, după BASIC.

Recent, sistemele de programare s-au concentrat pe creare aplicații Windows:

· punga de plastic Borland Delphi (Delphi) este un succesor strălucit al familiei de compilatoare Borland Pascal, oferind instrumente de dezvoltare vizuală de înaltă calitate și foarte convenabile. Compilatorul său excepțional de rapid vă permite să rezolvați practic orice problemă de programare a aplicațiilor în mod eficient și rapid.

· punga de plastic Microsoft Visual Basic - un instrument convenabil și popular pentru crearea de programe Windows folosind instrumente vizuale. Conține instrumente pentru creare diagrameȘi prezentări.

· punga de plastic Borland C++ - unul dintre cele mai comune instrumente pentru dezvoltarea aplicațiilor DOS și Windows.

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.

Fortran modern (Fortran 95 și Fortran 2003) a dobândit caracteristicile necesare pentru o programare eficientă pentru noile arhitecturi de calcul și 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 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) 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, 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. În prezent, IBM furnizează compilatorul de optimizare VS Fortran pentru mainframe-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 Supercomputer Blue Gene (a fost produsă și o versiune pentru Mac OS X, când computerele 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 un set destul de mare de funcții matematice încorporate și 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. 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 intrarea 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, î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 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 indici 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 punctul de vedere al standardelor moderne de limbaj Fortran, setul de litere mari și setul de litere mici coincid la scrierea declarațiilor 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 for 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 - a 5-a ed. - 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ă)

Curs 3. Structura programului. Implementarea algoritmului de structura liniara in Fortran.

Structura programului Fortran

Un program constă în general dintr-un program principal (PRINCIPAL) și subprograme (SUBRUTINE și (sau) FUNCTION).

    ÎN cap programat toate algoritm pentru rezolvarea problemei.

    Programul este întotdeauna începeȘi completează execuție în capprogram.

    ÎN subrutină programat parte logic completă algoritm.

    Subgrama se efectuează numai atunci când apel iar după ce se transferă controlul execuţiei înapoi.

    Subrutine facilita programare prin ruperea algoritmului în părți (programare structurată).

    Subrutinele vă permit să creați spaţii libere problemele tipice cel mai frecvent rezolvate.

    Bibliotecile standard de programe constau în rutine scrise de profesioniști.

STRUCTURA FORTRAN - PROGRAME

Structura generală principal (cap) programe Fortran ( PROGRAM PRINCIPAL):

[ PROGRAMnumele programului]

[ ! COMENTARII]

[ declarații neexecutabile- reclame]

[ instrucțiuni executabile]

Sfârşit[ PROGRAM[numele programului] ]

    – PARTEA OPȚIONALĂ A CONSTRUCȚII

    TEXT, ÎN IMAGINE AICI ÎN ITALIC ROȘU ARE UN SENS COMPLET DEFINIT ȘI ESTE SCRIS ÎN CONFORMITATE CU CERINȚELE LIMBAJULUI

    TERMINAT OPERATORUL TREBUIE SĂ ÎNCHEIE PROGRAMUL

Definiție. Operatori– o secvență de caractere care specifică anumite acțiuni. Operatorii sunt împărțiți în: executabili și neexecutabili.

Executabil operatorii specifică acțiuni asupra datelor. Se disting următoarele tipuri de astfel de operatori:

1. Operatori de prelucrare a informațiilor.

    Operatori de atribuire

    Operatori de citire (de intrare).

    Operatori de scriere (ieșire).

2. Operatori care controlează în timp funcționarea programului.

Neexecutabil instrucțiunile servesc pentru a descrie un tip de date sau un element de program, așa că sunt adesea numite declarații de descriere sau pur și simplu descrieri sau declarații.

Comentarii sunt destinate oamenilor pentru a documenta programul și pentru a îmbunătăți înțelegerea algoritmului și a operatorilor.

Algoritm de structură liniară

Algoritmul este liniar, dacă toți pașii algoritmului sunt executați secvenţialîn lor ordinea naturală Pentru orice sursă de date, posibil în această problemă. În acest caz, pașii algoritmului sunt înregistrați secvențial.

Să luăm în considerare acțiunile posibile în astfel de algoritmi (pașii algoritmului și operatorii Fortran corespunzători).

Instrucțiuni de început și de sfârșit de program

Prima linie a unui program este considerată a fi începutul programului. În versiunile moderne de Fortran, se obișnuiește să formateze un program cu o instrucțiune de pornire a programului, urmată de numele programului:

PROGRAM (numele programului)

De obicei, numele programului este ales astfel încât să reflecte scopul (conținutul) programului. De exemplu, PRIMER, SUMMA etc.:

PROGRAM PRIMER_1 ! numele programului PRIMER_1

CĂUTARE PROGRAM! numele programului indică conținutul acestuia

Instrucțiunea de pornire a programului nu este necesară, dar programul trebuie să se încheie cu instrucțiunea de încheiere a programului - END (a se vedea secțiunea „Structura programului Fortran”). În Fortran 90, fiecare declarație ocupă de obicei o linie separată. Dacă pe o linie sunt scrise mai multe instrucțiuni, acestea sunt separate prin punct și virgulă " ; ».

Operatori I/O

La executarea algoritmului, este necesar ca datele inițiale ale sarcinii să fie disponibile executantului, adică. erau în memoria computerului. Pentru a face acest lucru, este adesea folosit următorul pas al algoritmului, care implică introducere a datelor de la un dispozitiv de intrare extern (de exemplu, o tastatură).

Să luăm în considerare introducerea simplă a datelor de la tastatură, pentru care este folosită instrucțiunea READ, iar instrucțiunea PRINT este folosită pentru a afișa rezultatele pe ecran.

Vederea generală a operatorilor și regulile de lucru cu aceștia sunt prezentate mai jos. De exemplu, trebuie să introduceți valorile a patru variabile t, y, k și f:

CITIT * , t, y, k, f! În lista de intrare, numele variabilelor sunt separate prin virgule

Un astfel de operator înseamnă introducerea a patru valori variabile secvenţial de la tastatură. În etapa de execuție a programului, valorile sunt introduse de la tastatură, acestea trebuie separate între ele fie prin virgule, fie prin spații, fie prin apăsarea ENTER. Până când sunt introduse toate valorile din listă, execuția programului va fi blocată. Exemple de introducere a valorilor:

0,56 -2,756 100 0,003 ! Numerele sunt separate printr-un spațiu sau

0,56, -2,756, 100, 0,003 ! Numerele sunt separate prin virgulă sau

0,56! Numerele sunt separate cu tasta ENTER

Ca rezultat al executării instrucțiunii de intrare, variabila t va obține valoarea 0,56, y va obține valoarea -2,756, k va fi egal cu 100 și f – 0,003. În lista de introducere, puteți utiliza numai numele variabilelor și constantelor, iar acestea sunt introduse în aceeași secvență de la tastatură așa cum este specificat în operator.

Pentru a afișa rezultatele, algoritmul oferă un pas special - ieșire:

CONCLUZIE lista de ieșiri

Aici lista de ieșiri reprezintă, în cel mai simplu caz, o listă de nume de variabile ale căror valori ar trebui tipărite. De exemplu,

Lista de ieșire poate conține și șiruri de text care explică rezultatul, de exemplu, ieșirea ′q=′, q, ′ masa m=′, m

Într-un program Fortran, acest pas al algoritmului în cel mai simplu caz este înlocuit de operator

IMPRIMARE * , lista de ieșiri

În lista de ieșiri, puteți utiliza, pe lângă variabile și constante, text explicativ care este închis între apostrofe sau ghilimele. De exemplu, este specificat operatorul de afișare

PRINT *,’x=’,x,’ y=’,y

Să fie, ca urmare a efectuării unor calcule de program, X a devenit egal cu 3,09 și y = 5,01. Apoi va apărea următoarea linie pe ecranul computerului:

Astfel, textul luat în apostrofe în instrucțiunea de ieșire va fi tipărit fără modificări, iar valorile acestora vor fi afișate în locul numelor variabilelor.

Este necesară prezența unui asterisc și a unei virgule după cuvântul READ/PRINT! Stea * înseamnă că valorile variabilelor sunt introduse/afișate pe ecran „în mod implicit”, în forma standard codificată în Fortran.

Lista de ieșire a instrucțiunii PRINT poate conține:

    nume de variabile,

    constante de șir (scrise între ghilimele simple sau duble) pentru a explica rezultatele și pentru a afișa text,

    expresii aritmetice. În acest caz, valoarea expresiei aritmetice este mai întâi calculată, iar apoi valoarea calculată este afișată pe ecran.

Exemple:

IMPRIMARE *, ″WWOD M,N″ ! afișarea solicitărilor de text pentru introducere

IMPRIMARE *, z, y! Produceți numai valorile variabilelor z și y

IMPRIMARE *, ″ Z= ″, z, ″ Y= ″, y ! Afișarea valorilor variabilelor z și y cu explicații

Aflarea valorii rădăcinii pătrate a numărului 2 cu o explicație:

IMPRIMARE *, " SQRT(2,0) = " , SQRT(2,0)

    Fiecare instrucțiune de ieșire produce o înregistrare.

    Pentru textele explicative (până la 256 de caractere), cât spațiu este alocat așa cum este specificat în constanta de caractere, textul este apăsat spre marginea stângă. Prin urmare, este recomandat să adăugați spații la sfârșitul și începutul textului pentru a îmbunătăți aspectul.

Operator de atribuire

Unul dintre cei mai des întâlniți pași ai algoritmilor în problemele matematice este calculele folosind formule. Rezultatele calculelor care utilizează formule sunt adesea atribuite propriilor denumiri (nume de variabile) pentru a le utiliza în viitor.

Pentru a scrie operația de atribuire, vom folosi în continuare simbolul = (a nu se confunda cu semnul egal normal).

De asemenea, vom folosi operația de atribuire pentru a seta în mod explicit valorile inițiale ale cantităților și a reatribui valori.

Etapa algoritmului în care calculele folosind formule sunt descrise sau valorile sunt specificate în mod explicit se va numi atribuire. Într-o diagramă bloc, un astfel de pas al algoritmului este reprezentat folosind un bloc de procesare. Într-un program Fortran este înlocuit cu operatorul de atribuire aritmetică.

Operator de atribuire aritmetică

Acesta este un operator executabil cu ajutorul căruia calculele sunt efectuate folosind formule, valorile inițiale sunt setate și valorile sunt „trimise” de la o celulă de memorie la alta (valorile sunt reatribuite).

Vedere generală a acestui operator: X = AB,

Unde X – numele variabilei (simplu sau cu indici), AB - expresie aritmetică (partea dreaptă a formulei), = semn de atribuire.

Pentru un computer, această declarație este o instrucțiune pentru a efectua următoarele acțiuni:

1) calculati valoarea expresiei aritmetice ( AB)în partea dreaptă a operatorului cu valorile curente ale variabilelor incluse în acesta;

2) aduce valoarea rezultatului rezultat la tipul de variabilă situată în partea dreaptă a operatorului;

3) atribui variabila situată în partea dreaptă a operatorului este valoarea rezultatului calculată și convertită în tipul variabilei.

Exemple

REAL:: A=3,4, F=5,25, B=9,7

A=F! valoarea variabilei F este atribuită variabilei A

J=B! valoarea variabilei B este atribuită variabilei J

PRINT*, „A=”,A,” F=”,F,” J=”,J ! afișarea rezultatelor pe ecran

A=5,25 F=5,25 J=9

INTEGER:: J=2, I

REAL:: A=3,3, F=5,25, B

Variabilei B i se atribuie rezultatul calculului! expresia J*A+F convertită în tip real

PRINT*, „B=”, B ! afișarea rezultatului pe ecran

Variabilei I i se atribuie rezultatul calculului! expresia J*A+F convertită în tip întreg

PRINT*, „I=”, I ! afișarea rezultatului pe ecran

Ca urmare a executării programului, vom vedea următorul rezultat pe ecran:

Să ne uităm la exemple de programe compilate pe baza unui algoritm liniar.

Pentru valorile x=0,2, , , d = X + b.

Diagrama bloc al algoritmului:

Program exemplu 3:

T=(B*Z-SIN(Z)) / (Y+C*D*(Y*Z)**(1./7.))

PRINT*,”T=”,T

Vă rugăm să rețineți că în acest program variabilele Z și Y sunt introduse suplimentar pentru a nu calcula cele repetate în formula pt. t expresii. În plus, operația de exponențiere este înlocuită aici cu o operație de înmulțire, pentru care computerul petrece mai puțin timp decât pentru exponențiere. În principiu, puteți folosi operația de exponențiere, iar la programele mici acest lucru nu este esențial. Totuși, dacă programul este complex și conține câteva mii de instrucțiuni cu calcule complexe, atunci se recomandă, acolo unde este posibil, înlocuirea operației de exponențiere cu o operație de multiplicare, care va reduce costurile computerului și va crește viteza de execuție a programului.

Exemplul 4. Scrieți un program pentru a calcula aria unui cerc înscris într-un triunghi, rază , unde este perimetrul triunghiului.

Datele inițiale ale problemei sunt laturile triunghiului a, b, c. Faceți singur o diagramă a algoritmului.

Program exemplu 4:

program primer_4

parametru (pi=3.14159) !operator pentru setarea constantelor

print*, „Vvedite a, b, c” ! afișarea textului explicativ pe ecran

citeste*, a,b,c ! intrând lungimile laturilor triunghiului

p=a+b+c ! calcularea perimetrului unui triunghi

r=sqrt((p – a)*(p – b)*(p – c))/p) ! calculul razei, cerc înscris

s=pi*r**2 ! determinarea ariei unui cerc

print*,”s=”,s ! rezultatul ieșirii

În exemplul de mai sus, numărul π este numit pi, deoarece numai litere latine pot fi folosite în Fortran.

Întrebări pentru cursul 3:

    Care este structura unui program Fortran?

    Pentru ce sunt folosite subrutinele?

    Ce conține programul principal Fortran (MAIN)?

    Desenați o diagramă a structurii generale a unui program Fortran.

    Ce este o subrutină?

    Ce este stocat în bibliotecile standard de programe?

    Definiți operatorul.

    Ce sunt instrucțiunile executabile?

    Ce operatori sunt numiți neexecutabili?

    Ce operatori sunt clasificați ca operatori de prelucrare a informațiilor?

    De ce sunt necesare comentarii într-un program?

    Ce se numește algoritm cu structură liniară?

    Ce secvență de acțiuni este tipică pentru un program care implementează un algoritm liniar?

    Cum este scrisă declarația de pornire a programului? Este necesar?

    Scrieți sfârșitul instrucțiunii de program în formă generală. Este necesar acest operator atunci când scrieți un program?

    Pentru ce este folosit operatorul de intrare? Cum este scris corect?

    Cum arată imaginea generală a operatorului de afișare?

    De ce este folosit asteriscul * în instrucțiunile I/O?

    Cum puteți separa variabilele când le introduceți valorile de la tastatură?

    În ce ordine trebuie introduse variabilele?

    Ce date pot fi ieșite folosind instrucțiunea de intrare?

    Care este scopul declarației de ieșire?

    Cum poți afișa text pe ecranul unui computer?

    Notați operatorul pentru ieșirea a două variabile a=4,5, k=3.

    Cum se formatează un operator pentru ieșirea a două variabile a=4.5, k=3 cu text explicativ?

    Ce este un operator de atribuire?

    Ce este un operator de atribuire aritmetică?

    Notați forma generală a operatorului de atribuire.

    Ce acțiuni ar trebui să efectueze computerul ca urmare a operatorului de atribuire?

    De ce tip este valoarea rezultată a unei variabile obţinută ca urmare a evaluării unei expresii aritmetice?

    De ce programele înlocuiesc adesea, acolo unde este posibil, operația de exponențiere cu operația de înmulțire?

* „PC Magic” 2000 nr. 6(28), pp. 49–50.

În 1955, a fost lansat primul limbaj algoritmic de nivel înalt. FORTRAN(FORmula TRANslator – translator de formule). A fost folosit în principal pentru a rezolva probleme științifice, tehnice și de inginerie și a fost dezvoltat de angajații IBM sub conducerea John Backus. Puțin mai târziu, în 1957, John Backus și angajații săi au instalat primul compilator Fortran la IBM (Bestinghouse). Programatorii care anterior lucrau exclusiv în Assembly erau sceptici cu privire la capacitățile unui limbaj de nivel înalt, de înaltă performanță, astfel încât principalul criteriu la dezvoltarea standardelor Fortran și la crearea compilatoarelor din acest limbaj a fost eficiența codului executabil. Apropo, termenul „compilator” nu era încă folosit pe scară largă, deși fusese deja introdus de Grace Hopper, singura femeie amiral din Statele Unite, care era numită și „prima doamnă a programării și bunica lui Cobol. ”
Majoritatea operatorilor Fortran au tradus direct în una sau două instrucțiuni de mașină și utilizarea extensivă a etichetelor și goto a permis codul foarte rapid și, ca rezultat, programele Fortran rulau uneori mai repede decât cele de asamblare. Structura internă a programului tradus în sine era, de asemenea, foarte simplă - tot codul, toate subrutinele și toate datele, împreună cu un bloc comun, erau localizate exclusiv în memoria statică, ceea ce, totuși, făcea imposibilă utilizarea recursiunii.
Deoarece Fortran a fost primul limbaj de nivel înalt care a satisfăcut nevoile majorității utilizatorilor din acea vreme și a fost, de asemenea, ușor de învățat, s-a răspândit foarte repede.
Datorită utilizării pe scară largă a acestui limbaj și apariției multor programe Fortran (în principal de natură computațională), problema standardizării acestuia a devenit urgentă. La început a fost standard Fortran IV 1964, apoi, pe măsură ce au apărut noi idei, un nou standard a fost adoptat în 1978 Fortran 77(f77) cu un număr mare de extensii sintactice mai moderne și mai flexibile. Astăzi, cea mai comună variantă de Fortran este Fortran 90(f90) și Fortran 95. Un grup de entuziaști termină munca la o super versiune a limbajului F2k, care va fi publicată anul acesta.
Deși versiunile noi ale limbajului includeau uneori atât adăugiri inutile (de exemplu, extensii legate de alocarea dinamică a memoriei) cât și utile, cum ar fi organizarea modulară a programului, lucrul cu părți ale matricelor etc., astăzi acest limbaj nu poate fi numit promițător. pentru învățare, deoarece sintaxa sa este semnificativ depășită.
Cu toate acestea, pentru cei care destul de des trebuie să rezolve diverse probleme de calcul, nu este deloc necesar să ridice un manual de matematică de fiecare dată și „începe de la zero”. În 90% din astfel de cazuri, ceea ce căutați a fost de mult implementat și depanat în Fortran. Prin urmare, cel mai probabil, viața lui Fortran este asigurată pentru o lungă perioadă de timp.
Există o altă nișă, relativ tânără, pentru Fortran - calculul paralel, unde semantica strictă a limbajului vă permite să obțineți programe de înaltă performanță. De obicei se folosește standardul f90, ușor extins cu un set de operatori pentru a indica părți ale programului potrivite pentru paralelizare. Parallel Fortran are propriul standard HPF(Fortran de înaltă performanță). Cu toate acestea, fanii Fortran, al căror motto era legenda legenda „De ce ar trebui să învăț alte limbi atunci când pot scrie totul în Fortran”, au simțit că este evident inadecvată pentru proiecte la scară largă din cauza atașării la sintaxa anilor 50 și au încercat pentru a-l introduce idei OOP la modă, dar obiectul Fortran nu a apărut niciodată ca standard.
Dintre versiunile Fortran distribuite gratuit, cea mai cunoscută este f2c, implementată pentru toate sistemele UNIX și care convertește textul unui program Fortran în cod C. Pentru DOS există o versiune bcf77, distribuită gratuit. Dintre versiunile comerciale, primele care trebuie remarcate sunt Microsoft Fortran, care vă permite să creați biblioteci dll, și Watcom Fortran, care generează cod foarte eficient. Pentru sarcini care necesită calcule de mare precizie, compilatorul MicroWay este proiectat. În general, compilatoarele Fortran de diferite calități sunt disponibile pe absolut toate platformele computerizate.
Cu toate acestea, principalul merit al lui Fortran se află în altă parte. Când a apărut nevoia de a dezvolta proiecte foarte mari, deficiențele Fortran, asociate în primul rând cu depanarea „grea”, au devenit inutil de împovărătoare. Prin urmare, Fortran a servit ca un stimulent puternic pentru dezvoltarea teoriei programelor de depanare și testare. Au apărut sute de verificatori sintactici pentru textele Fortran, surprinzând erori logice ascunse. Ulterior, astfel de domenii teoretice de programare, cum ar fi echivalentul de optimizare a transformărilor programelor, compilarea la nivel înalt, testarea automată etc., au crescut din această direcție. Deci nu poți uita de Fortran. Probabil că nu are sens să-l folosești ca instrument pentru sarcinile de integrare a sistemului, dar ceea ce a fost dezvoltat de cei mai buni programatori în 30-40 de ani poate grăbi procesul de dezvoltare. Cel puțin, acum există incomparabil mai multe „blocuri de construcție” software pentru Fortran decât pentru alte limbaje de programare. ■

* * *
John Backus născut la 3 decembrie 1924 în Philadelphia, Pennsylvania, într-o familie bogată, și-a petrecut copilăria în Wilmington. După ce a absolvit școala în 1942, a intrat la Universitatea din Virginia pentru a studia chimia (la insistențele tatălui său, chimist), dar după un timp a încetat să mai studieze și în 1943 a fost chemat la serviciul militar.
Backus a început să servească în brigada de apărare aeriană la Fort Stewart, Georgia, dar ulterior a fost trimis la facultate pentru a studia medicina.
O vreme a lucrat cu entuziasm la spitalul orașului, dar în 1946 și-a pierdut interesul pentru această muncă, a părăsit armata și s-a mutat la New York, deși nu știa ce să facă și cum să trăiască mai departe.
După ceva timp, Backus a intrat într-o școală de pregătire a ingineriei radio. "Am avut un profesor foarte bun și mi-a cerut să calculez caracteristicile unor circuite. A fost teribil de plictisitor, dar extrem de interesant."
Curând, Backus a intrat la Universitatea Columbia (New York) pentru a studia matematica, unde a absolvit (1949). Cu puțin timp înainte de absolvire, a vizitat un centru de calculatoare IBM pe Madison Avenue. Și aici norocul i-a zâmbit pentru a doua oară - în 1950, Backus a devenit programator pentru IBM.
Dominanța IBM în industria computerelor a fost discutată pentru prima dată în 1952. Totul a început cu 701, cunoscut și sub numele de Calculator de Apărare. Imediat după lansarea modelului 701, specialiștii de la Divizia de Cercetare Aplicată au început să-l îmbunătățească (1955–1956).

Cele mai serioase modificări au fost propuse de John Backus, care mai târziu a luat parte activ la crearea computerului 704 În special, datorită lui, a apărut așa-numita tehnologie de „codare a vitezei”, care a făcut posibilă simplificarea semnificativă. scrierea de programe pentru 701. „Posibilitatea generării accelerate a codului pentru 701, care era un computer cu virgulă fixă ​​uniadresă, fără registre de index, l-a transformat într-un sistem de adresare aleatorie cu virgulă mobilă cu registre de index”, Backus. „Așa că utilizatorii nu au mai trebuit să se lupte cu codul binar.”
Chiar și atunci au apărut primele componente ale tehnologiei de scriere rapidă a programelor, care este folosită astăzi. De fapt, acest sistem a devenit predecesorul unor complexe similare care au fost lansate în anii 50 și 60 și au fost ulterior înlocuite cu limbaje de nivel înalt.
Și în 1955, Backus a „inventat” Fortran, primul limbaj de mașină de nivel înalt. Ulterior, amintind această perioadă, Backus va spune: „Nu am știut pentru ce să ne străduim și nu am știut cum să o facem”. Inițial, toate lucrările erau planificate să fie finalizate la începutul anului 1954, dar dezvoltarea limbii a fost finalizată aproape doi ani mai târziu.
Prima versiune a compilatorului a constat din 25.000 de linii de cod de mașină scrise pe bandă magnetică. Fiecare IBM 704 a primit o copie a programului cu un manual de programare de 51 de pagini.
În 1959, Backus a dezvoltat reguli gramaticale pentru a descrie sintaxa limbilor de nivel înalt (forma normală Backus-Naur, abreviată BNF).
În 1976, John Backus a primit Medalia Națională pentru contribuțiile sale la știință, iar în 1991 a încetat să mai lucreze în informatică.

Vladimir Buslaev

OCR: fir-vst, 2016

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva