Fortran

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Fortran
limbaj de programare
Fortran acs cover.jpeg
Sistemul de codare automată Fortran pentru IBM 704 (1956) , primul ghid pentru utilizarea limbajului FORTRAN
Autor John Backus , IBM
Data de origine 1957
Ultima versiune Fortran 2018 (ISO / IEC 1539-1: 2018) / 28 noiembrie 2018
Utilizare Scop general
Paradigme Programare procedurală , orientată obiect
Tastare Puternic
Extensii comune .f , .for , .f90 , .f95
Influențată de Speedcoding
A influențat ALGOL 58 , BASIC , C , PL / I , MUMPS , Ratfor
Implementare referință
Implementare gfortran
Site-ul web fortran-lang.org

Fortran (sau FORTRAN [1] - acronim al FOR mula TRAN slation (sau TRANslator) sau „traducerea (sau traducătorul) formulelor [2] ” - este unul dintre primele limbaje de programare , dezvoltat începând din 1954 de un grup de lucru condus de John Backus ; primul manual de referință pentru programatori din FORTRAN I, sistemul de codare automată FORTRAN pentru IBM 704 EPDM , scris de Backus însuși, este din 1956, în timp ce compilatorul a fost publicat în 1957 .

Istorie

Primul compilator FORTRAN a fost dezvoltat începând cu 1954 pentru computerul IBM 704 de către o echipă condusă de John Backus . A fost un compilator de optimizare (sau optimizator), deoarece designerii credeau că nimeni nu va folosi un limbaj a cărui eficiență nu se apropia de cea a limbajelor de asamblare .

Limbajul a fost utilizat pe scară largă, în principal pentru a scrie programe care au efectuat o mulțime de calcule matematice și acest lucru a încurajat proiectanții să creeze compilatoare care au generat coduri foarte rapide. Includerea tipului de număr complex a făcut din Fortran limba preferată în comunitatea științifică. Noile compilatoare Fortran sunt încă proiectate astăzi, cu performanțe din ce în ce mai mari. Nu trebuie uitat că multe progrese în teoria și proiectarea compilatoarelor au apărut tocmai din nevoia de a obține compilatoare Fortran capabile să genereze cod „bun”.

Au apărut mai multe versiuni Fortran: FORTRAN I în 1957, FORTRAN II în 1958, FORTRAN III în 1958 (folosit de aproximativ douăzeci de clienți IBM, dar niciodată lansat ca produs comercial din cauza lipsei sale de portabilitate), FORTRAN IV în 1961 (cel mai larg versiune uzată), FORTRAN 66 în 1966, FORTRAN 77 în 1977, Fortran 90 în 1990, Fortran 95 în 1995, Fortran 2003 în 2003 și Fortran 2008 în 2008.

FORTRAN II a introdus posibilitatea unor compilații separate, FORTRAN III posibilitatea de a utiliza expresii booleene (sau logice) și aceea de a insera cod "on-line" în limbajul asamblatorului (adică amestecarea instrucțiunilor Fortran și instrucțiunilor în limbajul asamblătorului). Acesta a fost ceea ce l-a făcut non-portabil, deoarece fiecare asamblator este evident specific unui computer dat, în cele din urmă nu fiind altceva decât o formă simbolică a limbajului său de mașină . Expresiile booleene au fost, de asemenea, introduse în FORTAN IV, împreună cu noua declarație condițională IF logică capabilă să testeze veridicitatea unei expresii booleene, care a fost adăugată la afirmația condițională IF aritmetică anterioară din FORTRAN II (care la rândul său l-a moștenit de la FORTRAN I, așa cum se poate vedea în exemplul de program, prezentat mai jos, care calculează maximul de N numere). În schimb, aceasta a evaluat o expresie numerică și a inclus trei salturi diferite în funcție de valoarea ei negativă, nulă sau pozitivă.

Primele programe FORTRAN au fost preponderent perforate pe cărți cu 80 de coloane, cu reguli foarte stricte privind formatul instrucțiunii unice. În special: o linie de cod nu poate depăși 72 de caractere, care au fost perforate în coloane de la 1 la 72, dacă coloana 1 conținea un C, următoarele caractere constituiau un comentariu, coloanele de la 1 la 5 erau rezervate pentru o etichetă numerică care identifica și care ar putea fi folosită pentru a trece la instrucțiunea însăși dintr-un alt punct al programului, coloanele 7 până la 72 conțineau instrucțiunea reală, coloana 6 (în mod normal goală) dacă conținea orice caracter (adesea un *) indica faptul că instrucțiunea era un continuare a instrucțiunii pumnului din cartea anterioară. Pe de altă parte, coloanele de la 73 la 80 au fost adesea folosite pentru numerotarea cărților și, astfel, permit reordonarea acestora în cazul în care au fost amestecate accidental.

Odată cu apariția Fortran 90, o revizuire „majoră” a limbii, aceste reguli stricte au fost abandonate în favoarea codului de formă liberă. Alte inovații notabile introduse de Fortran 90 sunt „ alocarea dinamică a memoriei , operațiile pe matrice , tipurile de date abstracte , operatorii de„ supraîncărcare (sau supraîncărcare), indicatoarele și modulele (acestea din urmă pentru a grupa subprogramele și datele conexe).

Fortran 95, o revizie „minoră” a limbajului, a introdus în esență posibilitatea programării paralele.

Cel mai recent standard formal al limbii este Fortran 2003 (deși documentul care îl definește a fost publicat în 2004). Este o extensie proprietară a Fortran 95, care include aritmetica IEEE 754 în virgulă mobilă, gestionarea excepțiilor, construcții de programare orientate obiect și interoperabilitate îmbunătățită cu limbajul C.

Descriere

Mulțumită atât nenumăratelor programe de aplicații dezvoltate de-a lungul anilor, cât și imenselor biblioteci de funcții (care pot fi amintite și din programe scrise cu alte limbaje de programare), Fortran este încă un limbaj utilizat pe scară largă [3] . Există variante ale acestuia pentru calcul paralel (utilizat în calculul științific : simulare a fluidelor , interacțiuni între particule , prognoze meteorologice etc.); în plus, chiar dacă inițial a fost conceput ca un limbaj procedural , unele dintre versiunile sale mai recente permit, de asemenea, utilizarea constructelor tipice programării orientate pe obiecte .

Caracteristici

Fortran este aproape întotdeauna un limbaj compilat , imperativ , cu tastarea statică a variabilelor, conceput în primul rând pentru calculul științific și numeric ; cu toate acestea, au existat și implementări cu cod interpretat . Un tip special de Fortran compilat este Fortran FLAG ( Fortran Load And Go ), dezvoltat de Bob Richardson, programator la Universitatea Rice , utilizat pe scară largă în anii șaptezeci pentru executarea programelor nu prea complexe.

Primele programe din Fortran, așa cum am menționat deja, trebuiau scrise cu reguli foarte stricte (impuse de utilizarea cărților cu pumn). De asemenea, au folosit intens etichetele numerice și instrucțiunile de salt GOTO . Aceste „necesități” au fost eliminate de cele mai recente versiuni ale limbajului. Au fost introduse și concepte de programare „moderne” (de exemplu, construcția IF-THEN-ELSE, începând de la FORTRAN 77), totuși fără a pierde din vedere obiectivele conciziei codului sursă și eficiența codului executabil. Multe limbi specializate au fost, de asemenea, scrise în Fortran, inclusiv SAS , pentru generarea de rapoarte statistice și SIMSCRIPT , pentru simularea sistemelor în coadă.

Producătorii de calculatoare științifice de înaltă performanță (cum ar fi Burroughs , CDC , Cray , Honeywell , IBM , Texas Instruments , UNIVAC ) au adăugat extensii limbajului pentru a exploata caracteristicile specifice ale mașinilor lor (ca exemplu vă puteți aminti FORTRAN VI G, FORTRAN IV H și FORTRAN IV H Extended de la IBM sau FORTRAN V de la UNIVAC). Soarta extensiilor trebuie abandonată sau încorporată în versiunile ulterioare ale limbajului. În cele din urmă, se poate aminti că se dezvoltă un nou limbaj, Fortress , care ar trebui, în intențiile designerilor, să-l înlocuiască pe Fortran.

Standard

Documentele enumerate mai jos se referă la cele mai recente standardizări Fortran.

  • ANSI X3.198-1992 (R1997). Titlu: Limbaj de programare „Fortran” extins . Cunoscut informal ca Fortran 90. Publicat de ANSI .
  • ISO / IEC 1539-1: 1997. Titlu: Tehnologia informației - Limbaje de programare - Fortran - Partea 1: Limbaj de bază . Cunoscut informal ca Fortran 95. Există alte două părți ale acestui standard. Partea 1 a fost adoptată oficial de ANSI.
  • ISO / IEC 1539-1: 2004. Titlu: Tehnologia informației - Limbaje de programare - Fortran - Partea 1: Limbaj de bază . Cunoscut informal ca Fortran 2003.
  • ISO / IEC 1539-1: 2010. Titlu: Tehnologia informației - Limbaje de programare - Fortran - Partea 1: Limbaj de bază . Cunoscut informal ca Fortran 2008.

Variante și extensii

ALTRAN a fost o extensie a limbajului care i-a adăugat algebră rațională, dezvoltată de WS Brown la Bell Laboratories în jurul anului 1968.

Sintaxă

Fiind primul limbaj de programare la nivel înalt , Fortran are o sintaxă care poate părea obscură pentru programatorii care sunt familiarizați doar cu limbaje mult mai noi, cum ar fi C de exemplu. Cu toate acestea, cele mai recente versiuni ale limbajului iau în considerare progresele înregistrate în domeniul limbajelor de programare și încearcă să descurajeze această sintaxă în favoarea unei mai transparente și mai robuste. Sintaxa „veche” face de fapt foarte dificilă proiectarea unui analizor lexical și chiar și un singur caracter greșit poate fi suficient pentru a genera erori detectabile numai în execuție, mai degrabă decât în ​​compilare. Construcțiile introduse în cele mai recente versiuni, precum și posibilitatea de a scrie cod în format liber (adică nu mai sunt legate de formalismul rigid inițial impus de cardurile perforate) au redus mult problemele, chiar dacă o bună programare este întotdeauna cea mai bună modalitate pentru a continua.

De asemenea, ar trebui să se ia în considerare faptul că caracteristicile Fortran au fost adaptate în esență calculelor științifice și numerice, mai degrabă decât dezvoltării de software. Astfel, în Fortran 95, de exemplu, există comenzi foarte scurte care vă permit să efectuați operații matematice pe tablouri , care nu numai că fac programele mult mai lizibile, dar ajută și compilatorul, dacă acesta din urmă este capabil să genereze cod care să realizeze matematică. operațiuni în paralel. Din motivele menționate, Fortran, chiar dacă este puțin utilizat pentru aplicații care nu au legătură cu calculul științific și numeric, rămâne în continuare limbajul ales în aceste domenii, mai mult, deoarece chiar și persoanele fără abilități de programare pot învăța cu ușurință să scrie cod eficient.

Întrucât Fortran există de jumătate de secol, programele scrise în această limbă (în special în FORTRAN 77, cel mai important dialect al său) sunt folosite și astăzi. Fortran rămâne, de asemenea, limbajul de alegere pentru programele destinate să ruleze pe supercalculatoare , cum ar fi cele utilizate pentru prognoza meteo, bazate pe modele matematice ale fizicii atmosferice.

Exemple de programe

Salut Lume!

Următorul exemplu imprimă textul „ Bună ziua, lume! ”.

 BUNA PROGRAM
 PRINT * , „Bună, lume!”
SFÂRȘIT

Unul dintre primele programe din Fortran

Următorul program, scris de Backus, este listat în Manualul programatorului FORTRAN I menționat mai sus. Programul citește N numere și calculează maximul.

 MĂRIME A ( 999 ) 
   FRECVENȚA 30 ( 2 , 1 , 10 ), 5 ( 100 ) 
   CITIȚI 1 , N , ( A ( I ), I = 1 , N ) 
 1 FORMAT ( I3 / ( 12 F6 . 2 )) 
   BIGA = A ( 1 ) 
 5 DO 20 I = 2 , N 
30 IF ( BIGA - A ( I )) 10 , 20 , 20
10 BIGA = A ( I )
20 CONTINUAȚI
PRINT 2 , N , BIGA 
 2 FORMAT ( 22 H1 CEL MAI MARE DIN ACESTE NUMERE ESTE F7 . 2 ) 
   STOP 77777

Minimul și maximul unui tablou

Următorul program FORTRAN 90 calculează valorile maxime și minime ale unui tablou cu extensia 5

 PROGRAM minimum_max_array

NICI IMPLICIT
INTEGRU , PARAMETRU :: extensie = 5
INTEGER , DIMENSION ( extensie ) :: matrice
INTEGER :: i
INTEGER :: Min
INTEGER :: Max

WRITE ( * , * ) 'Insert i' , extensie , 'array array:'
 DO i = 1 , extensie
  CITIȚI ( * , * ) matrice ( i )
 FINALIZARE
 
min = matrice ( 1 )
max = matrice ( 1 )
DO i = 2 , extensie
 IF ( matrice ( i ) < min ) min = matrice ( i )
 IF ( array ( i ) > max ) max = array ( i )
FINALIZARE

WRITE ( * , * ) "Valoarea minimă a matricei este:" , Min
WRITE ( * , * ) "Valoarea maximă a tabloului este:" , Max

STOP
END PROGRAM minimum_max_array



! Versiune modernă care profită de funcțiile din matrice
! și afișarea utilizării modulului intrinsec iso_fortran_env
program minimum_max_array
	utilizați , intrinsec :: iso_fortran_env , numai : ip => int32 , input_unit , output_unit
	nici unul implicit
	
	întreg ( kind = ip ), parametru :: extension = 5_ip
	întreg ( kind = ip ), dimension ( extension ) :: array
	întreg ( kind = ip ) :: j
	
	print "(a, i4, a)" , "Insert" , extensie , "valori întregi"
	
	faceți j = 1_ip , extensie
		write ( output_unit , "(i4, a)" , avans = 'nu' ) j , ":"
		citire ( input_unit , * ) array ( j )
	sfârșitul face
	
print "(a, i4)" , "Matrice de valoare minimă:" , minval ( matrice )
	print "(a, i4)" , "Matrice de valori maxime:" , maxval ( matrice )
	
sfârșitul programului minimum_max_array

Notă

  1. ^ Numele cu majuscule a fost înlocuit cu cel cu litere majuscule începând doar cu Fortran 90 .
  2. ^ concepute ca formule matematice în algoritmi de calcul
  3. ^ Eugene Loh, Limbajul de programare HPC ideal , în Coadă , vol. 8, nr. 6, Asociația mașinilor de calcul, 18 iunie 2010.

Bibliografie

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh85050987 · GND (DE) 4017984-9 · BNF (FR) cb11931442r (dată) · BNE (ES) XX531008 (dată)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT