Fortran-taal. De wandelende doden. Fortran

  • gfortran
    • gfortran 4.5.0
  • Programmeertaal

    Fortran - de eerste programmeertaal die werd geïmplementeerd hoog niveau(na), echter met een klein voorbehoud - voor auto's gebouwd volgens klassiek schema von Neumann. Gemaakt tussen 1954 en 1957 door een groep programmeurs onder leiding van John Backus bij IBM. Een paar jaar later begonnen de commerciële leveringen. Voordien werd het programmeren rechtstreeks in machinecodes of in symbolische assemblers uitgevoerd. De naam Fortran is een afkorting voor FORmula TRANslator, dat wil zeggen formulevertaler.

    Fortran wordt veel gebruikt, voornamelijk voor wetenschappelijk en technisch computergebruik. Een van de voordelen van het moderne Fortran is groot aantal programma's en bibliotheken met subroutines die erop zijn geschreven. Onder wetenschappers is er bijvoorbeeld een gezegde dat elk wiskundig probleem al een oplossing heeft in Fortran, en inderdaad, je kunt tussen de duizenden Fortran-pakketten een pakket vinden voor matrixvermenigvuldiging, een pakket voor het oplossen van complexe integraalvergelijkingen, en nog veel meer. vele anderen. Een aantal van dergelijke pakketten zijn in de afgelopen decennia ontwikkeld en zijn nog steeds populair (vooral in de wetenschappelijke gemeenschap).

    De meeste van deze bibliotheken zijn feitelijk eigendom van de mensheid: ze zijn beschikbaar in de broncode, goed gedocumenteerd, voorzien van foutopsporing en zeer effectief. Daarom is het duur om ze te veranderen, laat staan ​​te herschrijven in andere programmeertalen, ondanks het feit dat er regelmatig pogingen worden ondernomen om FORTRAN-code automatisch om te zetten in moderne programmeertalen.

    Een soort ‘visitekaartje’ van het oude Fortran is het enorme aantal labels dat werd gebruikt in zowel de onvoorwaardelijke sprongoperatoren GOTO als in lusoperatoren, en in format-invoer/uitvoerbeschrijvingsoperatoren FORMAT. Het grote aantal labels en GOTO-verklaringen maakten Fortran-programma's vaak moeilijk te begrijpen.

    Het was deze negatieve ervaring die in een aantal gevallen de reden werd moderne talen programmeerlabels (bijvoorbeeld Java) en bijbehorende onvoorwaardelijke sprongoperatoren zijn volledig afwezig.

    Het moderne Fortran maakt echter een einde aan het teveel aan labels door operatoren te introduceren zoals DO ... END DO, DO WHILE, SELECT CASE. De positieve kenmerken van het moderne Fortran omvatten ook een groot aantal ingebouwde bewerkingen met arrays en flexibele ondersteuning arrays met ongebruikelijke indexering.

    Interactie met andere talen

    Bij veel programmeersystemen kunt u objectbestanden die het resultaat zijn van de vertaling van een Fortran-programma koppelen aan objectbestanden die zijn verkregen van compilers in andere talen, waardoor u flexibelere en veelzijdige toepassingen kunt creëren. Er is ook een groot aantal bibliotheken beschikbaar voor de Fortran-taal, die zowel routines bevatten voor het oplossen van klassieke computerproblemen (LAPACK, IMSL, BLAS), problemen bij het organiseren van gedistribueerd computergebruik (MPI, pvm) als problemen bij het bouwen van grafische interfaces (Quickwin, FORTRAN/TK ) of toegang tot DBMS (Oracle).

    Fortran-erfenis

    Fortran is al meer dan vijftig jaar in gebruik en een groot deel ervan is nog steeds in gebruik. Fortran is de primaire taal voor een aantal rekenintensieve problemen, zoals weer- en klimaatmodellering, vloeistofdynamica, computationele chemie, kwantumchromodynamica, modellering van de dynamiek van het zonnestelsel, orbitale berekeningen kunstmatige satellieten en vele andere taken.

    Draagbaarheid

    In eerste instantie was portabiliteit voor Fortran een zeer dringende kwestie, omdat die er niet was uniforme standaard en zelfs referentie-informatie van IBM. En computerbedrijven concurreerden met elkaar om de incompatibiliteit tussen verschillende compilers te garanderen. Het verschijnen van normen corrigeerde de zaak. De standaard uit 1966 legde de syntaxis en semantiek vast, maar leveranciers bleven incompatibele extensies introduceren. Zorgvuldige programmeurs realiseerden zich dat het gebruik van incompatibele extensies portabiliteitsproblemen zou veroorzaken en gebruikten vaak programma's zoals The PFORT Verifier om incompatibele extensies te identificeren.

    Incompatibele extensies waren niet het enige probleem. Er waren een aantal problemen met numerieke berekeningen. Later werd een bijna universeel idee ontwikkeld en geïntroduceerd binaire rekenkunde drijvende punt.

    Toegang tot runtime-omgeving(bijvoorbeeld naar opdrachtregel, omgevingsvariabelen) was behoorlijk moeilijk totdat het in de standaard van 2003 werd aangepakt.

    Het is nu relatief eenvoudig om een ​​volledig draagbaar programma in Fortran te implementeren.

    Syntaxiselementen:

    Commentaar tot het einde van de regel ! of * in het eerste teken van de regel
    Hoofdlettergevoelig Nee
    Variabele ID Reguliere expressie [_a-zA-Z0-9](0-n)
    Een waarde aan een variabele toekennen =
    Variabele declaratie type::variabel
    Een variabele declareren met waardetoewijzing type::variabele = waarde
    Expressies groeperen ()
    Blok doen... einde doen
    Gelijkwaardigheid = of.EQ.
    Ongelijkheid /= of.NE.
    Vergelijking == < > <= >= <>of.LT. .GT. .LE. .GE.
    Een functie aanroepen OPROEP f(a,b...)
    Een functie aanroepen zonder parameters BEL f
    Vervolg einde van de lijn
    Als-dan if voorwaarde dan ... einde if
    Als - dan - anders if voorwaarde dan... anders... endif
    Lus met postvoorwaarde DOEN ... TERWIJL (voorwaarde)
    For - volgende lus voor een bereik van gehele getallen verhoogd met 1 noem i = 1, 10
    For - volgende lus voor een bereik van gehele getallen verlaagd met 1 noem i = 10, 1, -1

    Voorbeelden:

    Hallo wereld!:

    Voorbeeld voor versies Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Dit voorbeeld is geschreven in een gratis formaat dat wordt ondersteund door Fortran 90 en daaropvolgende standaarden, evenals de .

    Fortran commentaarprogramma in 90-stijl HelloWorld print * , "Hallo, wereld!"

    eindprogramma HelloWorld

    Voorbeeld voor versies Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Factoriaal: Er wordt gebruik gemaakt van iteratieve bepaling van de faculteit en een vrij programmaformaat. De I- en A-formaatspecificaties worden gebruikt om respectievelijk decimale getallen en tekenreeksen uit te voeren. Bij het berekenen van faculteiten 13-16 treedt een rekenkundige overloop op, maar niet waardoor een fout ontstaat

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

    , dus de verkeerde waarden worden uitgevoerd:

    programma Factoriaal geheel getal :: f , n f = 1 n = 0 do print "(I2, A, I10)" , n , "! = " , f n = n + 1 f = f * n if (n == 17 ) then exit end als end do end programma Factorial

    Voorbeeld voor versies Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0

    Fibonacci-getallen: Er wordt gebruik gemaakt van iteratieve bepaling van Fibonacci-getallen. Het moeilijkste in dit voorbeeld is het uitvoeren van de berekende waarden in in het gewenste formaat , in één regel en zonder extra ruimtes

    . De formaatspecificatie (I3, A, $) betekent dat het eerst een geheel getal in decimaal formaat afdrukt, precies drie tekens breed, vervolgens een tekenreeks afdrukt, en ten slotte $ de regelinvoer onderdrukt die standaard door de afdrukopdracht wordt gebruikt, zodat alles wordt afgedrukt op één lijn. Merk op dat de $-formaatspecificatie niet standaard is in het dialect; Het programma werkt, maar tijdens het compileren wordt hierover een waarschuwing weergegeven.< 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

    programma Fibonacci geheel getal :: f1 , f2 , f3 , i i = 1 f1 = 0 f2 = 1 do f3 = f2 + f1 f1 = f2 f2 = f3 i = i + 1 if (f1

    Kwadratische vergelijking:

    Voorbeeld voor versies g95 0.93, gfortran 4.5.0 In het voorbeeld wordt het ingebouwde complexe gegevenstype gebruikt. // — operator voor het samenvoegen van tekenreeksen. Het getal vóór de haakjes in de formaatbeschrijving geeft aan hoe vaak het formaat tussen haakjes wordt herhaald (in in dit geval

    programma Kwadratisch geheel getal :: a , b , c real :: d , p1 , p2 complex :: cp2 lees (* , * ), a if (a == 0 ) schrijf dan (* , * ) "Geen kwadratische vergelijking" stop einde indien gelezen (* , * ) b gelezen (* , * ) c d = b * b - 4 * a * c p1 = - b / 2.0 / a if (abs (d )< 1.0e-9 ) then write (* , "(A, F8.3)" ) "x = " , p1 elseif (d >0 ) dan p2 = sqrt (d ) / 2.0 / a write (* , "(2(A, F8.3))" ) "x1 = " , p1 + p2 , char (13 ) // char (10 ) / / "x2 = " , p1 - p2 anders cp2 = sqrt (cmplx (d )) / 2.0 / a write (* , "(2(A, F8.3, F8.3), A)" ) "x1 = ( " , p1 + cp2 , ")" // char (13 ) // char (10 ) // "x2 = (" , p1 - cp2 , ")" end if end

    Hallo wereld!:

    Voorbeeld voor versies f2c 20090411, g95 0.93, gfortran 4.5.0

    FORTRAN 77); de eerste zes tekens van elke regel zijn gereserveerd voor service-informatie - geeft aan dat de regel een commentaar of voortzetting is van de vorige, labels en regelnummers. Standaardset symbolen Fortran bevat geen symbolen kleine letters, dus alle programma's worden in hoofdletters geschreven. De uitzondering op deze regel is karakter constanten- ze kunnen alle tekens bevatten die door het systeem worden ondersteund.

    De eerste regel geeft dit stukje code de naam HELLO en geeft aan dat dit het hoofdprogramma is. De programmanaam is onderworpen aan dezelfde regels als alle identificatienamen, d.w.z. moet beginnen met een letter en mag niet meer dan 6 tekens bevatten.

    Het WRITE-commando implementeert het afdrukken. Een lijst met controleparameters die de uitvoer configureren, wordt tussen haakjes doorgegeven: UNIT selecteert het uitvoerbestand (standaard console), FMT selecteert het uitvoerformaat. Sterretjes geven standaardinstellingen aan. Het is niet nodig om parameternamen door te geven; kortom, hetzelfde commando zou er uitzien als WRITE (*, *) ....

    In de meeste implementaties kan een stringconstante worden ingesloten zoals in enkele aanhalingstekens, en dubbel.

    Een eenvoudige Hallo wereld! programma PROGRAMMA HELLO WRITE (UNIT =* , FMT =* ) "Hallo wereld!"

    eindprogramma HelloWorld

    Voorbeeld voor versies f2c 20090411, g95 0.93, gfortran 4.5.0

    EINDE

    Dit voorbeeld is geschreven in een vast formaat (FOTRAN 77-stijl) en maakt gebruik van iteratieve factoriële berekeningen. Met Fortran kunt u variabele declaraties overslaan; in dit geval leidt het zelf hun typen af, maar, in tegenstelling tot latere talen, niet op basis van de gebruikscontext van de variabele, maar op basis van de naam ervan - als de eerste letter van de naam I..N is geselecteerd typ INTEGER

    , anders - ECHT. In dit geval zijn beide variabelen gehele getallen. De DO-cyclus komt in dit geval overeen met In latere talen loopt de lusteller N opeenvolgend door alle waarden van 0 tot 16. De kern van de lus eindigt op de regel met het label 1, die wordt aangegeven in de luskop.

    De opdracht PRINT gebruikt een standaarduitvoerformaat, dat varieert afhankelijk van de gebruikte compiler.

    PROGRAMMA) C. Hierdoor moet, nadat de CC-regel met het resultaat teken voor teken is ingevuld, de rest van de regel handmatig met spaties worden gevuld.

    Controleren of het volgende teken in de bronreeks een letter is, is te lang om op één regel te passen (alle tekens op de programmaregel vanaf de 73e positie worden genegeerd), dus moet deze in twee regels worden gesplitst en de tweede gemarkeerd als voortzetting van de eerste (door een willekeurig symbool op positie 6).

    Vergelijkingsoperatoren in FORTRAN 77 worden geschreven als .LE. ,.GE. enz. vanwege het feit dat de > en< не входят в набор символов языка; они были добавлены только в Fortran 90.

    PROGRAMMA CAMELC TEKEN TEKST * 30 , CC * 30 LOGISCHE LSPACE LEZEN (* , "(A)" TEKST NCC = 0 LSPACE = .TRUE.



    DO 1 , I = 1 , LEN (TEKST ) NC = ICHAR (TEKST (I : I )) IF (NC .GE. 65 .AND. NC .LE. 90 .OR. > NC .GE. 97 .AND. NC .LE 122 ) THEN ALS (LSPACE ) THEN ALS (NC .GE. 97 .EN. NC .LE. 122 ) THEN NC = NC - 32 EINDE ALS ANDERS ALS (NC .GE. 65 .AND. NC .LE. 90 ) THEN NC = NC + 32 END IF END IF NCC = NCC + 1 CC (NCC : NCC ) = CHAR (NC ) LSPACE = .FALSE. ELSE LSPACE = .TRUE.).

    De meeste van deze bibliotheken zijn feitelijk eigendom van de mensheid: ze zijn beschikbaar in de broncode, goed gedocumenteerd, voorzien van foutopsporing en zeer effectief. Daarom is het duur om ze te veranderen, laat staan ​​te herschrijven in andere programmeertalen, ondanks het feit dat er regelmatig pogingen worden ondernomen om FORTRAN-code automatisch om te zetten in moderne programmeertalen.

    EINDE ALS 1 DOORGAAT DOEN 2, I = NCC + 1, LEN (CC) 2 CC (I: I) = "" SCHRIJF (*, *) CC EINDE Onder wetenschappers is er bijvoorbeeld een gezegde dat elk wiskundig probleem al een oplossing heeft in Fortran, en inderdaad, onder de duizenden Fortran-pakketten kun je een pakket vinden voor matrixvermenigvuldiging, een pakket voor het oplossen van complexe integraalvergelijkingen, en vele, vele anderen. Een aantal van dergelijke pakketten zijn in de afgelopen decennia gemaakt en zijn tot op de dag van vandaag nog steeds populair in de wetenschappelijke gemeenschap, bijvoorbeeld - IMSL ( Engels

    Modern Fortran (Fortran 95 en Fortran 2003) heeft de functies verworven die nodig zijn voor

    efficiënte programmering voor nieuwe computerarchitecturen, maakt het gebruik van moderne programmeertechnologieën mogelijk, in het bijzonder OOP. Evolutie van taalstandaarden

    Fortran is een sterk gestandaardiseerde taal en daarom gemakkelijk overdraagbaar FORTRAN IV FORTRAN 77 (1980) Er zijn veel verbeteringen aangebracht: Fortran 90 (1991) De taalstandaard is aanzienlijk herzien. Fortran 95 (1997) Correctie van de vorige standaard. De FORALL-operator en -constructie zijn geïntroduceerd, waardoor meer flexibiliteit mogelijk is dan de WHERE-operator en -constructie om arrays toe te wijzen en omslachtige lussen te vervangen. Met FORALL kunt u elke sectietoewijzing of WHERE-clausule vervangen, in het bijzonder biedt het toegang tot de diagonaal van een matrix. Deze exploitant wordt als veelbelovend beschouwd bij parallel computergebruik, waardoor parallellisatie efficiënter wordt vergemakkelijkt dan lussen. Fortran 2003 (2004) Verdere ontwikkeling van OOP-ondersteuning in de taal. Interactie met besturingssysteem . Ook zijn de volgende features toegevoegd:

    Fortran 2008 (2010) De standaard gaat uit van ondersteuning door middel van de parallelle rekentaal (Co-Arrays Fortran). Het is ook de bedoeling om de maximale afmeting van arrays te vergroten tot 15, ingebouwde speciale wiskundige functies toe te voegen, enz.

    Samenstellers Sinds de initiële ontwikkeling van de taal zijn Fortran-compilers geproduceerd door IBM. IBM levert momenteel de VS Fortran-optimalisatiecompiler voor IBM System z-mainframes, ontwikkelingsgeschiedenis verschillende versies

    die dateert uit 1964, evenals een XL Fortran-compiler voor platforms gebaseerd op de PowerPC-architectuur - AIX, Linux en de Blue Gene-supercomputer (er werd ook een versie uitgebracht voor Mac OS X toen Macintosh-computers PowerPC-processors gebruikten). Beide compilers bevatten zeer complexe optimizers, het resultaat van voortdurend wetenschappelijk werk door IBM-specialisten gedurende een halve eeuw. Gebaseerd op de IBM Fortran XL-compiler heeft Absoft, een zakenpartner van IBM, de Absoft Pro Fortran-compiler gemaakt en geleverd voor systemen gebaseerd op PowerPC (Linux, Mac OS X) en Intel (Linux, Mac OS X, Windows) processors.

    De GNU Free Software Foundation produceerde een open-source Fortran-77-compiler, g77, beschikbaar voor vrijwel elk platform en volledig compatibel met GCC. Nu is het vervangen door de GFortran-compiler, die bijna alle constructies van de Fortran 95-standaard en vele constructies van de Fortran 2003- en Fortran 2008-standaarden implementeert. Het is ook volledig achterwaarts compatibel met Fortran 77. Er is ook een onafhankelijk project genaamd g95 om een ​​Fortran-95-compiler te maken op basis van GCC.

    Kenmerken en structuur van het programma complexe getallen hoge precisie. De expressieve middelen van de taal waren aanvankelijk erg slecht, aangezien Fortran een van de eerste talen op hoog niveau was. Vervolgens werden veel lexicale structuren die kenmerkend zijn voor structureel, functioneel en zelfs objectgeoriënteerd programmeren aan Fortran toegevoegd.

    Ponskaart met kolommarkeringen voor Fortran.

    De structuur van de programma's was aanvankelijk gericht op de invoer van ponskaarten en had een aantal eigenschappen die voor dit specifieke geval handig waren. Zo diende de 1e kolom om de tekst als commentaar te markeren (met het symbool C), van 1 tot 5 werd het labelgebied gelokaliseerd, en van 7 tot 72 werd de feitelijke tekst van de operator of opmerking gelokaliseerd. De kolommen 73 tot en met 80 konden worden gebruikt om kaarten te nummeren (om een ​​willekeurig verspreid kaartspel te herstellen) of voor een kort commentaar; ze werden door de vertaler genegeerd. Als de tekst van de operator niet in de toegewezen ruimte paste (van de 7e tot de 72e kolom), werd een vervolgteken in de 6e kolom van de volgende kaart geplaatst en ging de operator daarop verder. Het was onmogelijk om twee of meer uitspraken op één regel (kaart) te plaatsen. Toen ponskaarten tot de geschiedenis behoorden, veranderden deze voordelen in ernstige ongemakken.

    Daarom de Fortran-standaard, beginnend met Fortran 90, naast het vaste formaat brontekst er is een gratis formaat verschenen dat de lijnposities niet regelt, en waarmee u ook meer dan één operator per regel kunt schrijven. De introductie van een vrij formaat maakte het mogelijk code te creëren waarvan de leesbaarheid en duidelijkheid niet onderdoen voor code die is gemaakt met andere moderne programmeertalen, zoals Java.

    Een soort ‘visitekaartje’ van het oude Fortran is het enorme aantal labels dat werd gebruikt in zowel de onvoorwaardelijke sprongoperatoren GOTO als in de lusoperatoren, en in de formaatinvoer/uitvoerbeschrijvingsoperatoren FORMAT. Het grote aantal labels en GOTO-verklaringen maakten Fortran-programma's vaak moeilijk te begrijpen.

    Het was deze negatieve ervaring die de reden werd waarom in een aantal moderne programmeertalen (bijvoorbeeld Java) labels en bijbehorende onvoorwaardelijke sprongoperatoren sterk zijn gewijzigd.

    Het moderne Fortran schrapt echter het teveel aan labels door de introductie van operators zoals DO ... END DO, DO WHILE, SELECT CASE. Bovendien behouden moderne taalstandaarden alleen de klassieke GOTO-operator, die tegenwoordig nog steeds in veel talen wordt gebruikt. De berekende GOTO-instructie, evenals de ENTRY-constructie - meervoudige toegang tot procedures, zijn geëlimineerd.

    Tot de positieve kenmerken van het moderne Fortran behoren ook een groot aantal ingebouwde bewerkingen met arrays en flexibele ondersteuning voor arrays met ongebruikelijke indexering. Voorbeeld:

    Werkelijke dimensie (: ,: ) :: V ... toewijzen (V(- 2 : 2 ,0 : 10 ) ) ! Wijs geheugen toe voor een array waarvan de indices dat kunnen ! variëren van -2 tot 2 (eerste index) ! en van 0 tot 10 seconden... V (2 .2 : 3 ) = V (- 1 : 0 .1 ) ! Roteer een stuk van een array schrijf(* ,* ) V(1 ,: ) ! Druk alle elementen van array V af waarvan de eerste index 1 is. toewijzing ongedaan maken(V)

    Hallo, Wereld!

    Vast formaat (spaties in regelposities 1 t/m 6 zijn gemarkeerd met “␣”-tekens):

    ␣␣␣␣␣␣PROGRAMMA hallo ␣␣␣␣␣␣PRINT* , "Hallo wereld!"

    ␣␣␣␣␣␣EIND

    Gratis formaat:

    Programma hallo print * , "Hallo wereld!"

    hoofdletters

    en veel kleine letters vallen samen bij het schrijven van taaloperatoren.

    Interactie met andere talen

    Bij veel programmeersystemen kunt u objectbestanden die zijn verkregen als resultaat van de vertaling van een Fortran-programma combineren met objectbestanden die zijn verkregen van compilers uit andere talen, waardoor u flexibelere en veelzijdige toepassingen kunt creëren. Er is ook een groot aantal bibliotheken beschikbaar voor de Fortran-taal, die zowel routines bevatten voor het oplossen van klassieke computerproblemen (LAPACK, IMSL, BLAS), problemen bij het organiseren van gedistribueerd computergebruik (MPI, pvm) als taken voor het construeren van grafische interfaces (Quickwin, FORTRAN/ TK) of toegang krijgen tot DBMS (Oracle).

    1. Fortran in de Sovjet-Unie
    2. Opmerkingen
    3. Zie bijvoorbeeld: Netlib Repository bij UTK en ORNL A.M. Gorelik. Evolutie van de programmeertaal Fortran (1957-2007) en vooruitzichten voor de ontwikkeling ervan // Computationele methoden en programmeren, 2008, Vol 9, p. 53-71
    4. Bartenjev O.V.
    5. S.D. Algazin, V.V. Kondratiev. Programmeren in Visual Fortran. - M.: “Dialoog MEPhI”, 2008. - 448 p. - ISBN 5-8243-0759-8
    6. Gorelik AM News
    7. VS FORTRAN
    8. XL Fortran voor Linux
    9. Absoft Pro Fortran Compiler Suites Algemeen overzicht
    10. Sun Studio - Benchmarks
    11. Essay van Alexander Rastorguev over de verschijning van Fortran in Dubna
    12. Geschiedenis van computergraphics in Rusland

    Literatuur

    • Fortran. Naslaggids voor programmeurs. Het Fortran automatische coderingssysteem voor de IBM 704 EDPM - IBM Corp., 1956. - 51 p.
    • ISO/IEC 1539-2:2000 Informatietechnologie - Programmeertalen - Fortran - Deel 2: Tekenreeksen van verschillende lengte
    • Robert W. Sebesta. 2.3. IBM-computer 704 en de Fortran-taal // Basisconcepten van programmeertalen = Concepten van programmeertalen / Transl. uit het Engels - 5e druk. - M.: Williams, 2001. - blz. 63-69. - 672 sec. - 5000 exemplaren.

    - ISBN 5-8459-0192-8 (Russisch), ISBN 0-201-75295-6 (Engels)

    • Koppelingen
    • gfortran - Fortran 95/2003/2008 compiler, onderdeel van de GNU Compiler Collection

    Basis Ik werd gevraagd om te proberen mijn eerste bericht hier te schrijven, waarin wordt voorgesteld om C++ te gebruiken om te leren. Ja, op dit onderwerp

    veel exemplaren waren kapot. Ik begon, zoals waarschijnlijk de meeste schoolkinderen in de uitgestrektheid van ons uitgestrekte Moederland, de basisprincipes te begrijpen door middel van blauw scherm , maar niet de dood, maar TurboPascal

    7,0. Er was natuurlijk Basic, dat ik voor het eerst tegenkwam op de kleuterschool op de Sovjet Elektronika-computer. Toen leek het een vreemde teksteditor, want voor games was een computer door de ogen van een kind gemaakt. Maar al op het instituut maakte ik kennis met de Fortran-taal, nadat ik erover had geleerd, vraag ik me nog steeds af waarom het niet wordt gebruikt voor lesgeven.

    Ja, velen zullen zeggen dat de taal dood is, niet overeenkomt met de moderne realiteit, en dat leerboeken met een titel zoals op de foto je alleen maar doen glimlachen. Ik zal proberen uit te leggen waarom deze taal zo geweldig is en waarom ik het als eerste taal aanbeveel. Als je geïnteresseerd bent, welkom bij cat. Ik ben van mening dat de basis voor de basisprincipes van programmeren tijdens de schooljaren moet worden gelegd, in ieder geval op de middelbare school. Ook al zal de computer in het leven alleen maar gebruikt worden voor het typen van tekst in Word of om in te communiceren sociale netwerken , minimale kennis van wat een algoritme is en hoe je een reeks acties kunt structureren gewenst resultaat , Door ten minste

    Om ervoor te zorgen dat computerwetenschappenlessen een plezier zijn en geen nachtmerrie, moet de leerling begrijpen wat hij doet, hoe hij het doet en waarom het zo afloopt en niet anders. In essentie moet je immers informatie over de cyclus correct overbrengen en voorwaardelijke operator zodat iemand zelfstandig programma's kan schrijven. Tegelijkertijd geldt: hoe eenvoudiger de syntaxis van de taal, hoe gemakkelijker het is om de logica van het schrijven van code te begrijpen. Als iemand leert componeren juiste algoritme, om vervolgens in andere talen te programmeren, hoeft hij alleen maar de syntaxis van deze taal te leren, en de basis zal al gelegd zijn.

    Wat is er zo speciaal aan Fortran?

    Laten we ons wenden tot de geschiedenis van de creatie van deze taal. Het verscheen in de verre jaren vijftig van de vorige eeuw, toen computers nog groot waren, er weinig programmeurs waren en informatica niet op school werd onderwezen en over het algemeen als een pseudowetenschap werd beschouwd. Wat nodig was, was een eenvoudige taal die ingenieurs en wetenschappers zou helpen formules die op papier zijn geschreven, naar computers te ‘voeden’, zelfs via ponskaarten.

    Vandaar de naam van de taal zelf: Voor mula Tran slator of “formulevertaler”. Die. Aanvankelijk was de taal gericht op mensen zonder speciale opleiding, waardoor het zo eenvoudig mogelijk moest zijn.

    Welnu, de makers zijn erin geslaagd in eenvoud. Het klassieke eerste programma ziet er als volgt uit:

    Programma hw write(*,*) "Hallo wereld!" einde
    De syntaxis is zelfs een beetje eenvoudiger dan Pascal, het is niet nodig om " aan het einde van de regel te plaatsen ; " of " : " vóór het gelijkteken. Bovendien mensen met minimale kennis Engelse taal, het begrijpen van de betekenis van het eenvoudigste programma is niet moeilijk.

    Hier wil ik opmerken dat Fortran verschillende herzieningen van de standaarden heeft, waarvan de belangrijkste 77 en 90 zijn (met behoud van de continuïteit). 77 Fortran is echt archaïsch, er is een limiet aan de regellengte en het is noodzakelijk om het begin van de regel te laten inspringen, wat een cultuurschok kan veroorzaken voor een jonge kandidaat-programmeur. Het is niet voor niets dat programma's geschreven in Fortran 77 de beknopte naam "Brezjnev-code" uit de mond van mijn vriend kregen. Daarom verwijst al mijn tekst naar taalstandaard 90 en nieuwer.

    Als voorbeeld zal ik een code geven voor het berekenen van de som van niet-negatieve gehele getallen van 1 tot n, ingevoerd via het toetsenbord, geschreven door mijn afgestudeerde student terwijl hij haar vanaf het begin les gaf in programmeren. Het was daar dat ik ervaarde dat ik Fortran als eerste taal leerde. Ik hoop dat dit gunstig voor haar was en dat mijn experiment een succes was. Ze leerde in ieder geval de basis in een paar lessen, waarvan de eerste een lezing over taal was.

    Programmanummer impliciet geen! Variabelen geheel getal n,i,s ! Lichaam van chisla s=0 schrijf (*,*) "Enter n" lees (*,*) n if (n.le.0) schrijf dan (*,*) "Negatief of nul" anders doe i=1,n s =s+i end schrijf (*,*) "Sum=", s end if end
    Het is gemakkelijk in te zien dat de manier waarop we denken de manier is waarop we code schrijven. Voor de student kunnen zich in principe geen moeilijkheden voordoen. De oplettende lezer zal zich natuurlijk afvragen wat er achter impliciete 'geen' en twee sterretjes tussen haakjes zit, gescheiden door komma's. impliciet niets vertelt ons dat we expliciet het type van de variabelen specificeren, terwijl zonder deze invoer de compiler het type zelf zal raden. Het eerste sterretje betekent dat invoer en uitvoer op het scherm plaatsvinden, en het tweede geeft aan dat het invoer- en uitvoerformaat automatisch wordt gedetecteerd. Eigenlijk ziet het Fortran-programma er niet ingewikkelder uit dan het hierboven geschreven stukje code.

    Hoe zit het met de softwareomgeving?

    Op scholen en bij alle overheidsinstanties rijst vaak de vraag over software, in het bijzonder over de licentieverlening ervan. Omdat er niet specifiek geld wordt toegewezen voor deze behoeften. In mijn tijd was dit tenminste een probleem, misschien is de situatie nu ten goede veranderd.

    Elke teksteditor is geschikt voor het schrijven van programma's in Fortran. Als u syntaxisaccentuering wilt, kunt u Notepad++ (ondersteunt alleen de standaard 77-syntaxis) of SublimeText gebruiken. We hebben het programma geschreven, hoe gaan we het compileren? Alles is hier eenvoudig, u kunt de gratis GNU Fotran gebruiken. Als u van plan bent het niet-commercieel te gebruiken, kunt u ook een compiler van Intel gebruiken, die goed is geoptimaliseerd voor gelijknamige processors en wordt geleverd met de minimaal vereiste IDE. Die. De instapdrempel is zeer preferentieel.

    De beste ontwikkelomgeving voor Fortran blijft volgens veel gebruikers Compaq Visual Fortran 6.6, waarvan de nieuwste versie begin jaren 2000 werd uitgebracht. Waarom gebeurde het dat een omgeving gebaseerd was op Visuele studio 6.0, dat draait op maximaal Windows XP 32 bit zonder te dansen met een tamboerijn, en een limiet heeft op het gebruikte geheugen, is zo populair geworden onder Fortran-gebruikers. Het antwoord is weergegeven in de onderstaande figuur.

    Dit is Compaq Array Visualizer, een zeer handig hulpmiddel voor het visualiseren van 1-, 2- en 3-dimensionale arrays tijdens het debuggen van programma's, rechtstreeks vanuit de debugger. Zoals ze zeggen, nadat ik het een keer heb geprobeerd, eet ik het nu. Feit is dat Fortran nu voornamelijk in de wetenschap wordt gebruikt (wat later zal worden besproken), in het bijzonder op het gebied waarmee ik te maken heb, namelijk in de atmosferische fysica. Bij het debuggen van programma's vertegenwoordigen arrays verschillende meteorologische velden, zoals temperatuur, druk en windsnelheid. Het is veel gemakkelijker om in grafische velden naar fouten te zoeken dan in een reeks getallen, vooral omdat meestal bekend is hoe het veld er ongeveer uit zou moeten zien, zodat duidelijke fouten onmiddellijk worden uitgesloten.

    Helaas zijn alle ontwikkelingen op de compiler overgedragen van Compaq naar Intel. Intel ondersteunde aanvankelijk Array Visualizer, maar die versies waren al een bleke afspiegeling van het product van Compaq, het werken ermee was niet zo handig als voorheen, maar de functionaliteit bleef in ieder geval minimaal. Helaas is Intel gestopt met het ontwikkelen van nieuwe versies van Array Visualizer, waardoor hier een einde aan komt het handigste hulpmiddel. Dat is de reden dat de meerderheid van de Fortran-gemeenschap programma's schrijft en debugt onder Compaq Visual Fortran op Windows, en gevechtsberekeningen uitvoert op Linux-servers met behulp van Intel-compilers. Intel, hoor alsjeblieft de smeekbeden van gebruikers, stuur een normaal hulpmiddel voor het visualiseren van arrays terug naar je debugger!

    Fortran's plaats in de moderne wereld

    En nu komen we bij het onderwerp dat gewoonlijk een verhitte discussie veroorzaakt met mijn collega's die Matlab gebruiken, die beweren dat de zeldzame taal die in dit bericht wordt beschreven nergens goed voor is. Hier ben ik het niet met hen eens. Feit is dat Fortran van oudsher werd gebruikt in technische of wetenschappelijke berekeningen, en daarom in de loop van de tijd veel kant-en-klare bibliotheken en programmacodes verwierf om een ​​bepaald probleem op te lossen.

    De code wordt letterlijk van generatie op generatie doorgegeven en is bovendien goed gedocumenteerd. Je kunt er veel vinden kant-en-klare oplossingen vergelijkingen van de wiskundige natuurkunde, lineaire algebra (hier moet de succesvolle implementatie van het werken met matrices worden opgemerkt), integrale en differentiaalvergelijkingen en nog veel, veel meer. Het is waarschijnlijk moeilijk om een ​​probleem op het gebied van de natuur- en wiskundige wetenschappen te vinden waarvoor een algoritme in Fortran niet zou worden geïmplementeerd. En als je rekening houdt met de uitstekende optimalisatie van Intel-compilers voor Intel-processors, ondersteuning voor parallel computing op krachtige clusters, dan wordt het duidelijk waarom deze taal een welverdiende eerste plaats inneemt in de wetenschappelijke gemeenschap. Ik denk dat je op elke supercomputer een Fortran-compiler kunt vinden.

    De meeste serieuze modellen, althans op het gebied van de atmosferische fysica, zijn geschreven in Fortran. Ja, ja, de weersvoorspelling, waar iedereen van tijd tot tijd in geïnteresseerd is, wordt verkregen door berekeningen van modellen die in deze taal zijn geschreven. Bovendien staat de taal niet stil, maar verbetert hij voortdurend. Dus na de eerder beschreven standaarden 77 en 90 verschenen de nieuwe edities 95, 2003, 2008, waarvoor ondersteuning werd geïntroduceerd in de huidige compilers. De nieuwste versies van Fortran hebben de oude, beproefde taal enigszins opgefrist en bieden ondersteuning voor de moderne stijl, door objectgeoriënteerd programmeren toe te voegen, waarvan de afwezigheid bijna de belangrijkste troef was van tegenstanders van deze taal. Bovendien heeft The Portland Group PGI CUDA Fortran Compiler uitgebracht, waarmee zeer parallelle berekeningen op videokaarten mogelijk zijn. De patiënt leeft dus meer dan alleen, wat betekent dat er nog steeds veel vraag is naar Fortran-programmeurs.

    In plaats van een nawoord

    En nu zou ik willen terugkeren naar het oorspronkelijk ter sprake gebrachte onderwerp over leren programmeren, en proberen de belangrijkste voordelen van Fortran kort te formuleren bij het kiezen van het als eerste taal.
    • Fortran is heel gemakkelijk te leren, de syntaxis is begrijpelijk voor een ongetraind persoon. Als je eenmaal de basis kent, kun je gemakkelijk een andere taal opnieuw leren.
    • Dankzij een gratis set tools ontvang je geen onnodige vragen van auteursrechthouders.
    • De taal is bekend bij docenten, omdat deze al heel lang bestaat, en onze docenten zijn vooral vertegenwoordigers van de oudere generatie.
    • Wijd verspreid over de hele wereld en is een schatkamer van allerlei soorten bibliotheken.
    • Gestandaardiseerd, platformonafhankelijk en compatibel met eerdere revisies.
    • Handig voor studenten van technische, en vooral natuurkunde- en wiskunde-majors, vanwege de focus op wetenschappelijke en technische berekeningen.
    • Relevant en veelgevraagd tot op de dag van vandaag.
    Dus waarom niet Fortran?

    Alfabet - bij programmeren - een systeem van ontleedbare, met vertrouwen te onderscheiden symbolen (letters, cijfers, leestekens, enz.) die worden gebruikt om programmeertalen te construeren.

    Syntaxis is de kant van een programmeertaal die de structuur van programma's beschrijft als sets karakters. De syntaxis van een taal staat in contrast met de semantiek ervan. De syntaxis van een taal beschrijft ‘pure’ taal, terwijl de semantiek betekenis toekent aan verschillende syntactische constructies.

    Semantiek - bij programmeren - een systeem van regels om het gedrag van individuele taalconstructies te bepalen. Semantiek bepaalt de semantische betekenis van zinnen in een algoritmische taal.

    Programmeertalen op laag niveau – Autocode, Assembly,

    Programmeertalen op hoog niveau - Fortran, Algol, Cobol, Pascal, BASIC, C++, Prolog

    Programmeertalen op ultrahoog niveau – APL, ALGOL-68

    Computationele programmeertalen - Fortran, Pascal, Algol, BASIC, C

    Symbolische verwerkingstalen – Lisp, Prolog, Snoball, enz.

    Talen van de eerste generatie:

    Machinecodes waren de programmeertaal van de eerste generatie

    Talen van de tweede generatie:

    Assembler

    Talen van de derde generatie:

    deze talen worden vaak aangeduid als talen van "hoog" niveau.

    Talen van de vierde generatie:

    BASIC, COBOL, C en Pascal

    Programmeertalen van de vijfde generatie:

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

    Fortran-programmeertaal

    De eerste programmeertaal op hoog niveau met een vertaler. Gemaakt tussen 1954 en 1957 door een groep programmeurs onder leiding van John Backus bij IBM. De naam Fortran is een acroniem voor FORmula TRANslator (formulevertaler). Fortran wordt veel gebruikt, voornamelijk voor wetenschappelijk en technisch computergebruik. Een van de voordelen van het moderne Fortran is het grote aantal programma's en subroutinebibliotheken die erin zijn geschreven. De meeste van deze bibliotheken zijn feitelijk eigendom van de mensheid: ze zijn beschikbaar in de broncode, goed gedocumenteerd, voorzien van foutopsporing en zeer effectief. Daarom is het duur om ze te veranderen, laat staan ​​te herschrijven in andere programmeertalen, ondanks het feit dat er regelmatig pogingen worden ondernomen om FORTRAN-code automatisch om te zetten in moderne programmeertalen.

    Modern Fortran (Fortran 95 en Fortran 2003) heeft de kenmerken verworven die nodig zijn voor effectief programmeren voor nieuwe computerarchitecturen en maakt het gebruik van moderne programmeertechnologieën mogelijk, in het bijzonder OOP.

    Evolutie van taalstandaarden

    Fortran is een sterk gestandaardiseerde taal en daarom gemakkelijk overdraagbaar naar verschillende platforms. Nieuwe taalstandaarden behouden grotendeels de continuïteit met oudere, wat het mogelijk maakt codes uit eerder geschreven programma's te gebruiken en aan te passen.

    FORTRAN 77 (1980)

    Er zijn veel verbeteringen geïntroduceerd:

    Operators voor het openen en sluiten van een bestand (OPEN, CLOSE) en uitvoer naar een standaardapparaat - PRINT zijn geïntroduceerd.

    Toegevoegd tekenreekstype gegevens en functies voor de verwerking ervan.

    De IF-blokoperator en de IF THEN - ELSE IF THEN - END IF-constructie, evenals de INCLUDE-operator voor het opnemen van programmafragmenten, zijn geïntroduceerd.

    De mogelijkheid om met bestanden met directe toegang te werken is geïntroduceerd.

    De maximale arraygrootte is verhoogd van 3 naar 7. De beperkingen op array-indexen zijn verwijderd.

    De mogelijkheden om met procedures te werken zijn verbeterd en uitgebreid.

    Het concept van een intern bestand (dat arrays, numerieke variabelen en stringvariabelen bevat) is geïntroduceerd. Interne bestanden maken met name conversie van nummer naar string en regel naar nummer mogelijk met behulp van standaard lees- en schrijfoperatoren READ en WRITE.

    Fortran 90 (1991)

    De taalstandaard is aanzienlijk herzien.

    Er is een gratis formaat voor het schrijven van code geïntroduceerd. Er zijn aanvullende beschrijvingen verschenen voor IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST.

    Besturingsoperatoren en constructies worden geïntroduceerd. DO ... END DO toegevoegd (in plaats van de lus te beëindigen met een label), DO WHILE, een besturingsoverdrachtsinstructie naar het begin van de CYCLE-lus, een SELECT CASE-selectieconstructie (ter vervanging van omslachtige IF-constructies en GOTO-instructies), zoals evenals de eindafrekening van een opleidingsonderdeel, modulaire of interne procedure EINDE.

    Er is een reeks aanwijzerhulpmiddelen en -functies geïntroduceerd voor het werken met RAM (vergelijkbaar met de C-taal).

    Er zijn operators geïntroduceerd voor het werken met dynamisch geheugen (ALLOCATE, DEALLOCATE, NULLIFY).

    Softwarecomponenten toegevoegd MODULE, PRIVÉ, PUBLIEK, BEVAT, INTERFACE, GEBRUIK, INTENTIE.

    Het maskeren van array-toewijzingen is geïntroduceerd (toewijzing bij het uitvoeren van een logische voorwaarde die aan array-elementen is opgelegd zonder gebruik te maken van voorwaarde-operatoren), evenals het werken met array-secties. Er zijn een operator en WHERE-constructie geïntroduceerd om lussen gedeeltelijk te vervangen (de rechterkant van de toewijzingsoperator verandert niet). Toewijzingsmaskering is van toepassing op vrijwel alle operators, constructies en functies die op arrays werken.

    De standaardbewerkingen van toewijzen, optellen, aftrekken, evenals delen en vermenigvuldigen met een getal, worden uitgebreid tot arrays en hun secties gedefinieerd door secties. In dit geval wordt een elementgewijze toewijzing uitgevoerd.

    Er zijn nieuwe ingebouwde functies verschenen, voornamelijk voor het werken met arrays. Functies voor berekeningen in arrays: ALL (logisch product) en MASK (logische optelling), COUNT (aantal echte elementen), PRODUCT (product van array-elementen), SUM (optelling van array-elementen), DOT_PRODUCT (scalair product), MATMUL ( matrixvermenigvuldiging). Er zijn helpfuncties toegevoegd, evenals functies voor het reformeren en vouwen van arrays.

    Elementen van OOP verschenen in de taal. Afgeleide gegevenstypen zijn geïntroduceerd. Er is een aparte lijst aangekondigd met verouderde taalfuncties die in de toekomst zullen worden verwijderd.

    Toegevoegd extra functies voor het werken met stringgegevens, in het bijzonder de functies TRIM (verwijderen van volgspaties) en REPEAT (meervoudig kopiëren van een string) en de functies voor links en rechts uitlijnen.

    Fortran 95 (1997)

    Correctie van de vorige standaard. De FORALL-operator en -constructie zijn geïntroduceerd, waardoor meer flexibiliteit mogelijk is dan de WHERE-operator en -constructie om arrays toe te wijzen en omslachtige lussen te vervangen. Met FORALL kunt u elke sectietoewijzing of WHERE-clausule vervangen, in het bijzonder biedt het toegang tot de diagonaal van een matrix. Deze operator wordt als veelbelovend beschouwd bij parallelle computergebruik, waardoor parallellisatie efficiënter wordt vergemakkelijkt dan lussen.

    Fortran 2003 (2004)

    Verdere ontwikkeling van OOP-ondersteuning in de taal. Interactie met het besturingssysteem. Ook zijn de volgende features toegevoegd:

    Asynchrone gegevensinvoer/uitvoer.

    C Interfacehulpmiddelen

    Verbetering van de dynamische gegevensplaatsing

    De standaard gaat uit van ondersteuning door middel van de parallelle rekentaal (Co-Arrays Fortran). Het is ook de bedoeling om de maximale afmeting van arrays te vergroten tot 15, ingebouwde speciale wiskundige functies toe te voegen, enz.

    Fortran(ook FORTRAN) dit programmeertaal, ontwikkeld in het begin van de jaren vijftig en nog steeds in gebruik. De naam is een afkorting voor "FORmula TRANslator". Vroege versies van de taal stonden bekend als FORTRAN, maar vanaf Fortran 90 werden de letters niet langer met hoofdletters geschreven. Officiële taalstandaarden noemen de taal nu "FORTRAN".

    >Fortran wordt voornamelijk gebruikt voor wetenschappelijke berekeningen en numerieke analyses. Hoewel het oorspronkelijk een proceduretaal was, nieuwste versies Fortran heeft een aantal functies toegevoegd ter ondersteuning van objectgeoriënteerd programmeren voor beginners.

    De eerste FORTRAN-compiler werd in 1954-57 voor de IBM 704 ontwikkeld door het IBM-team onder leiding van John W. Backus. Het was een optimaliserende compiler omdat de auteurs redeneerden dat niemand de taal zou gebruiken, zelfs niet bij het leren programmeren voor dummies, tenzij de prestaties vergelijkbaar waren met assembleertaal.

    De taal raakte wijdverspreid onder wetenschappers en werd gebruikt om numeriek intensieve programma's te schrijven, wat de makers van Fortran-compilers dwong de compilercode nauwgezet te herschrijven om snellere code te genereren. Tegenwoordig zijn er veel leveranciers van krachtige Fortran-compilers. Veel vooruitgang in de compilertheorie en het ontwerp is ingegeven door de noodzaak om te genereren goede code voor Fortran-programma's zoals vereist voor de basisprincipes van programmeren.

    Er zijn verschillende versies van de taal bekend, waaronder de beroemde FORTRAN IV (ook bekend als FORTRAN 66), Fortran 77 en Fortran 90. De laatste formele standaard voor de taal, gepubliceerd in 1997, staat bekend als Fortran 95. IBM's versies van de taal taal is nog nooit zo populair geweest, zoals ontwikkeld door andere bedrijven, en dit geldt vooral voor FORTRAN IV - WATFOR, de versie van FORTRAN IV ontwikkeld aan de Universiteit van Waterloo in Canada, was het populairst omdat het compilatiefoutmeldingen beter uitvoerde dan anderen. Insgelijks, software voor het automatisch genereren van blokdiagrammen uit FORTRAN-programma's werd buiten IBM ontwikkeld

    Aanvankelijk vertrouwde de taal op nauwkeurige broncode-opmaak en intensief gebruik van numerieke statussen en de GOTO-instructie. Deze eigenaardigheden zijn verwijderd uit nieuwere versies van de taal. Latere versies introduceerden ook "moderne" programmeerconcepten, zoals commentaar in broncode en tekstuitvoer, IF-THEN-ELSE-instructies (in FORTRAN 77), recursie (in Fortran 90), en parallel computergebruik, terwijl we tegelijkertijd proberen een "lean" profiel en hoge prestaties in Fortran te behouden. Tot de meest populaire op Fortran gebaseerde talen behoren SAS, ontworpen voor het verkrijgen van statistische rapporten, en SIMSCRIPT, voor het modelleren van wachtrijprocessen.

    Verkopers van hoogwaardige wetenschappelijke computers (Burroughs, CDC, Cray, IBM, Texas-instrumenten) heeft uitbreidingen aan Fortran toegevoegd om het gebruik van speciale hardwarefuncties mogelijk te maken, zoals: instructiecache, pijpverbindingsprocessor, vectorarrays, enz. Een van de IBM Fortran-compilers (H Extended IUP) bevatte bijvoorbeeld een optimalisatielaag die instructies afdwong machinecode houd meerdere interne rekenblokken voortdurend bezig. Een ander voorbeeld is CFD, een speciale "variant" van Fortran die speciaal is ontwikkeld voor de ILLIAC IV-supercomputer die draait in het NASA Ames Research Center. Deze uitbreidingen zijn in de loop van de tijd verdwenen of deze elementen zijn opgenomen in de hoofdstandaard; De belangrijkste extensie is OpenMP, een platformonafhankelijke extensie voor toegang gedeelde herinnering. Een andere nieuwe extensie, CoArray Fortran, is ontworpen om de ontwikkeling van parallelle programmering en .

    De eerste poging van een beginner om in Erlang te ontwikkelen kan erg frustrerend zijn, omdat de syntaxis van deze taal door veel programmeurs die met moderne talen zijn begonnen als geheim schrijven wordt beschouwd. Het is moeilijk om een ​​lexicale analysator te schrijven als slechts één foutief teken kan resulteren in een runtimefout in plaats van een compilatiefout als de opgegeven constructies niet worden gebruikt. In sommige van de eerste versies waren er geen objecten (OOP), die als nuttige attributen bij het programmeren worden beschouwd moderne omstandigheden of ontbrak bijvoorbeeld dynamische distributie geheugen. Tegelijkertijd was de syntaxis van de Fortran-taal toepasbaar op wetenschappelijk werk en berekeningen waarbij bewerkingen op getallen betrokken waren, en werd met veel van de tekortkomingen ervan rekening gehouden in meer latere versies. Fortran 95 heeft bijvoorbeeld heel korte commando's om wiskundige bewerkingen uit te voeren met matrices en arrays, wat niet alleen de leesbaarheid van het programma aanzienlijk verbetert, maar ook nuttige informatie voor de compiler, zodat deze bewerkingen kan vectoriseren. Om deze redenen wordt Fortran niet vaak gebruikt buiten de wetenschappelijke en technische computerwetenschappen; het blijft een taal ervoor hoge prestaties numerieke berekeningen.