Come configurare smartphone e PC. Portale informativo

Linguaggio di programmazione Fortran. morti che camminano

Ministero dell'Istruzione e della Scienza della Federazione Russa

Università Federale degli Urali

prende il nome dal primo presidente della Russia

BASI DI PROGRAMMAZIONE

IN LINGUA FORTRAN

Tutorial

Ekaterinburg

Introduzione. 3

Riferimento storico. 5

Struttura del programma .. 8

Differenze tra Fortran 90 e Fortran 77.11

Accesso alle risorse informatiche. 15

Esecuzione di attività su un cluster. 17

Riscrivere i testi del programma sul server. 17

Compilazione di programmi. 17

Avvio del programma sull'account. diciannove

Tipi di dati. 22

Costante intera. 22

Costante reale. 23

Doppia precisione reale costante. 23

Costante complessa. 23

Costante complessa a doppia precisione. 24

Costante booleana. 24

Testo costante. 24

Operatori di descrizione del tipo di dati. 26

INTEGER di tipo intero. 26

REALE e DOPPIA PRECISIONE di tipo reale. 27

COMPLESSO e DOPPIO COMPLESSO di tipo complesso. 28

CARATTERE è un tipo di carattere. 29

LOGICO tipo booleano. 29

DIMENSIONE degli array. trenta

PARAMETRO Attributo .. 32

Varietà di tipi di dati incorporati. 35

Espressioni, operazioni e assegnazioni. 36

Espressioni aritmetiche. 36

Espressioni di atteggiamento. 37

Espressioni booleane. 38

Regole di valutazione delle espressioni. 38

Operatori di ingresso/uscita. 39

Operatore di immissione DATI .. 39

Istruzione di input READ .. 40

Istruzione di output WRITE. 41

Operatore di inferenza attivato Schermata STAMPA. 42

Dichiarazione di specifica del formato di input/output (FORMAT) 43

Specifiche X, T. 43

Specificatore I 44

Separatori. 45

Specifica F. 46

Ripetitori. 49

Specifica E. 50

Specifica G .. 51

Descrittori di dati. 52

Operatori di condizione. 53

L'operatore logico della condizione. 53

Operatore aritmetico condizionale. 57

SELEZIONA CASO. 60

Operatori di ciclo. 62

Operatore loop DO .. 62

Operatore di ciclo DO WHILE. 64

Arresta l'operatore STOP. 65

Istruzione di uscita dal ciclo EXIT. 66

Operatori di transizione. 67

GOTO .. ​​​​67 operatore di salto di parole bus

Operatore di filiale calcolato GOTO .. ​​​​67

Operatore di filiale condizionale IF ... GOTO .. ​​​​68

Lavorare con gli array. 69

Inserimento di array. 69

Visualizzazione di array. 71

Matrici di elaborazione. 73

Subroutine .. 76

Operatore di funzione. 78

Funzione sottoprogramma FUNZIONE .. 81

Procedura di sottoprogramma SUBROUTINE. 83

Lavora con il file esterni. 85

File apri operatore OPEN .. 85

CHIUDI dichiarazione di chiusura del file. 86

Esempi di lavoro con i file. 86

Letteratura. 89

introduzione

Una caratteristica dei computer paralleli è la capacità uso simultaneo per il trattamento delle informazioni un largo numero processori. Applicazione di multiprocessore sistemi informatici(MVS) pone due compiti per la costruzione di algoritmi paralleli: parallelizzazione di esistenti algoritmi sequenziali e la creazione di nuovi algoritmi con un focus sui sistemi di calcolo parallelo.

La tecnologia di programmazione più comune per computer paralleli con memoria distribuita è attualmente MPI. Il modo principale di interazione di processi paralleli in tali sistemi è passare messaggi l'uno all'altro. Ciò si riflette nel nome di questa tecnologia - Message Passing Interface. Lo standard MPI fissa l'interfaccia che deve essere osservata sia dal sistema di programmazione su ciascuna piattaforma informatica sia dall'utente durante la creazione dei propri programmi. La libreria di comunicazione MPI è diventata uno standard generalmente accettato nella programmazione parallela utilizzando il meccanismo di scambio di messaggi.

Un programma MPI è un insieme di processi indipendenti, ognuno dei quali esegue il proprio proprio programma(non necessariamente la stessa) scritta in C o FORTRAN.In FORTRAN, la maggior parte delle procedure MPI sono subroutine (chiamate da Dichiarazione CALL), e il codice di errore viene restituito tramite un'ulteriore ultimo parametro procedure. Diverse procedure, progettate come funzioni, non restituiscono un codice di errore. Non è richiesto alcun caso rigoroso nei nomi delle subroutine e delle costanti denominate. Gli array sono indicizzati da 1. Gli oggetti MPI, che sono strutture in C, sono rappresentati in FORTRAN come array di tipo intero.

IMM è programmato in FORTRAN. La principale difficoltà nell'usarlo per compiti di grandi dimensioni è il coordinamento dell'interazione delle parti di un compito di grandi dimensioni. Fortran 90 include meccanismi per l'interazione degli oggetti in conformità con la tecnologia di programmazione orientata agli oggetti, che facilita il lavoro di squadra su grande progetto... Questi sono moduli per la progettazione di librerie, strutture e tipi di dati derivati ​​per l'organizzazione di dati complessi, questa è un'allocazione dinamica della memoria, nonché una serie di meccanismi per l'elaborazione di array, inclusa la formazione di varie sezioni (sezioni). La possibilità di combinare in un'unica famiglia (nel genere) procedure di elaborazione standard che differiscono per i tipi dei loro argomenti può essere attrezzo utile in una varietà di compiti. I tipi (famiglie) di tipi di dati consentono di personalizzare facilmente l'implementazione di un tipo tenendo conto delle proprietà dell'hardware (ad esempio, un tipo INTEGER può essere dichiarato lungo o corto tramite il controllo di visualizzazione KIND). Alcune regole di stile possono aiutare a progettare, ad esempio, la dichiarazione dei parametri di input, output e modificabili di una procedura può aiutare a risolvere gli errori di interoperabilità. Le regole per la scrittura delle proprietà di dati, commenti e altri elementi facilitano la lettura dei programmi scritti, velocizzando la ricerca di errori.

Riferimento storico

1954 - IBM, il traduttore della prima lingua Fortran.

1958 - FortranII.

1962 - FortranIV.

1966 - Fortran 66.

1978 - Fortran 77.

Una modifica della lingua Fortran, apparsa nel 1958, fu chiamata FortranII e conteneva il concetto di subroutine e variabili condivise per fornire la comunicazione tra i segmenti.

Nel 1962, la comparsa della lingua nota come Fortran IV... Nel 1966 fu completato lo sviluppo dello standard americano per la lingua ANSI (American National Standards Institute), la lingua si chiama Fortran 66... Nel 1978 è stata sviluppata la seconda versione dello standard ANSI: il linguaggio Fortran 77 compresi gli elementi programmazione strutturata ad esempio SE strutturato, tipi di carattere.

La terza versione dello standard ANSI è Fortran 90, realizzato nel 1991. Fortran 90è lo sviluppo del linguaggio Fortran 77 quindi un programma scritto in Fortran 77, può essere compilato ed eseguito come un programma in Fortran 90... Standard Standard Fortran 90 introduce molte nuove funzionalità per le operazioni sugli array, nuovi metodi per specificare la precisione, formato libero codice sorgente, ricorsione, array dinamici, ecc.

Programmi per lingua corrente standard Fortran 77 può essere compilato con successo dai compilatori Fortran 90 senza alcuna modifica. Tuttavia, la struttura di un programma nella lingua Fortran 90 può differire in modo significativo dalla struttura di un programma equivalente su Fortran 77... Il programmatore deve stare attento a non mischiare i due stili.

Allo stesso modo, il compilatore con Fortran 90 richiede di fornire spiegazioni per la segnalazione di alcuni codici di mismatch (mismatch), ovvero l'uso di operatori o variabili che sono consentiti al di fuori dell'insieme di regole al di fuori dello standard.

Fortran occupa un posto d'onore tra lingue moderne programmazione. È uno dei primi linguaggi di programmazione alto livello e sin dal suo inizio, è stato progettato per risolvere complessi problemi computazionali. Fortran è stato inizialmente accolto con scetticismo tra i programmatori applicati, poiché si riteneva che il costo della praticità di programmazione in un linguaggio di alto livello avrebbe comportato una significativa perdita di velocità di calcolo. Quando si tratta di modellare processi complessi o di elaborare grandi quantità di informazioni, la velocità di calcolo è un fattore decisivo nella scelta del linguaggio, della piattaforma informatica e della tecnologia di programmazione.

Tra gli scienziati, ad esempio, c'è un detto del genere che qualsiasi problema di matematica ha già una soluzione in FORTRAN e, in effetti, puoi trovare tra migliaia di pacchetti Fortran sia un pacchetto per la moltiplicazione di matrici, sia un pacchetto per risolvere equazioni integrali complesse e molti, molti altri. Un certo numero di tali pacchetti sono stati creati nel corso dei decenni e sono ancora popolari nella comunità scientifica, ad esempio - IMSL ( inglese).

La maggior parte di queste librerie sono infatti di proprietà dell'umanità: sono disponibili in codici sorgente, ben documentati, sottoposti a debug e molto efficienti. Pertanto, è costoso cambiarli, figuriamoci riscriverli in altri linguaggi di programmazione, nonostante il fatto che vengano regolarmente fatti tentativi per convertire automaticamente il codice FORTRAN in linguaggi di programmazione moderni.

Modern Fortran (Fortran 95 e Fortran 2003) ha acquisito le caratteristiche necessarie per una programmazione efficace per nuove architetture computazionali, consente l'utilizzo delle moderne tecnologie di programmazione, in particolare, OOP.

Evoluzione degli standard linguistici

Fortran è un linguaggio altamente standardizzato, motivo per cui è facilmente portabile in diverse piattaforme... I nuovi standard linguistici preservano in gran parte la continuità con quelli precedenti, il che consente l'uso di codici di programmi scritti in precedenza e la loro modifica.

FORTRAN 66 (1972) Basato su standard IBM FORTRAN IV FORTRAN 77 (1980) Introdotti molti miglioramenti: Fortran 90 (1991) Lo standard linguistico è stato notevolmente rivisto. Fortran 95 (1997) Correzione della norma precedente. Sono stati introdotti l'operatore e il costrutto FORALL, consentendo una maggiore flessibilità rispetto all'operatore e al costrutto WHERE per assegnare array e sostituire loop voluminosi. FORALL permette di sostituire qualsiasi assegnazione di sezioni o l'operatore WHERE e la clausola, in particolare fornisce l'accesso alla diagonale della matrice. Questo operatore considerato promettente nel calcolo parallelo, contribuendo a una parallelizzazione più efficiente rispetto ai cicli. Fortran 2003 (2004) Ulteriori sviluppi Supporto OOP nella lingua. Interazione con il sistema operativo. Aggiunto anche seguenti possibilità: Fortran 2008 (2010) Lo standard presuppone il supporto tramite il linguaggio di calcolo parallelo (Co-Arrays Fortran). Dovrebbe anche aumentare la dimensione massima degli array a 15, aggiungere funzioni matematiche speciali integrate, ecc.

compilatori

Fin dallo sviluppo iniziale del linguaggio, i compilatori Fortran sono stati prodotti da IBM. Attualmente, IBM fornisce il compilatore ottimizzatore VS Fortran per i mainframe IBM System z, la cui storia di sviluppo di varie versioni risale al 1964, nonché il compilatore XL Fortran per piattaforme basate sull'architettura PowerPC - AIX, Linux e il supercomputer Blue Gene (una versione per Mac OS X quando i computer Macintosh utilizzavano processori PowerPC). Entrambi questi compilatori contengono ottimizzatori molto sofisticati risultanti da continue lavoro scientifico Specialisti IBM da mezzo secolo. Sulla base del compilatore IBM Fortran XL, Absoft, un business partner di IBM, ha creato e fornisce il compilatore Absoft Pro Fortran per sistemi basati su PowerPC (Linux, Mac OS X) e Intel (Linux, Mac OS X, Windows) processori.

Fondazione gratuita Software GNU ha rilasciato un compilatore Fortran-77 open source g77, disponibile per quasi tutte le piattaforme e completamente compatibile con GCC. Ora è stato sostituito dal compilatore GFortran, che implementa quasi tutte le costruzioni dello standard Fortran-95 e molte costruzioni degli standard Fortran-2003 e Fortran-2008. È anche completamente retrocompatibile con Fortran 77. Esiste anche un progetto indipendente g95 per creare un compilatore Fortran-95 basato su GCC.

Caratteristiche e struttura del programma

Fortran ha un set abbastanza grande di built-in funzioni matematiche, supporta il lavoro con numeri interi, reali e numeri complessi alta precisione. I mezzi espressivi della lingua erano inizialmente molto poveri, poiché il Fortran era una delle prime lingue di alto livello. Successivamente, a Fortran sono state aggiunte molte costruzioni lessicali tipiche della programmazione strutturale, funzionale e persino orientata agli oggetti.

Scheda perforata con segni di colonna per Fortran.

La struttura dei programmi era inizialmente focalizzata sull'input da schede perforate e aveva una serie di proprietà convenienti per questo caso particolare. Quindi, la prima colonna serviva per contrassegnare il testo come commento (simbolo C), da 1 a 5 era l'area dei segni e da 7 a 72 era il testo effettivo dell'operatore o del commento. Le colonne da 73 a 80 potevano essere utilizzate per numerare le carte (per ripristinare un mazzo sparso a caso) o per un breve commento, ignorate dal traduttore. Se il testo dell'operatore non rientrava nello spazio assegnato (dalla 7a alla 72a colonna), veniva inserito un segno di continuazione nella sesta colonna della carta successiva, quindi l'operatore continuava su di esso. Era impossibile posizionare due o più operatori in una riga (mappa). Quando le schede perforate sono passate alla storia, queste virtù si sono trasformate in gravi inconvenienti.

Ecco perché nello standard Fortran, a partire dal Fortran 90, oltre al formato fisso testo di partenzaè apparso un formato libero, che non regola la posizione della riga e consente anche di scrivere più di un operatore per riga. L'introduzione del formato libero ha permesso la creazione di codice, la cui leggibilità e chiarezza non è inferiore al codice creato utilizzando altri linguaggi di programmazione moderni, come o Java.

Genere " biglietto da visita Il "vecchio Fortran" è un numero enorme di etichette che sono state utilizzate sia nel ramo incondizionato GOTO, sia nelle istruzioni del ciclo, sia nelle istruzioni che descrivono l'input/output FORMAT formattato. Il gran numero di etichette e istruzioni GOTO spesso rendeva i programmi Fortran difficili da capire.

È questa esperienza negativa che è diventata la ragione per cui in numerosi linguaggi di programmazione moderni (ad esempio Java), le etichette e gli operatori di salto incondizionato associati sono stati notevolmente modificati.

Tuttavia, il moderno Fortran elimina l'eccesso di etichette a causa dell'introduzione di operatori come DO ... END DO, DO WHILE, SELECT CASE. Inoltre, negli standard linguistici moderni, solo operatore classico GOTO, che è ancora utilizzato in molte lingue oggi. L'istruzione GOTO calcolata, così come il costrutto ENTRY - sono state rimosse più voci nelle procedure.

Inoltre, le caratteristiche positive del moderno Fortran includono un gran numero di operazioni di array integrate e supporto flessibile per array con indicizzazione insolita. Esempio:

Reale, dimensione (:,:) :: V ... allocare (V (- 2: 2, 0: 10)) ! Allocare memoria per un array i cui indici possono ! variano da -2 a 2 (primo indice) ! e da 0 a 10 - il secondo... V (2, 2: 3) = V (- 1: 0, 1) ! Ruota una porzione di un array scrivi (*, *) V (1,:) ! Stampa tutti gli elementi dell'array V il cui primo indice è 1. deallocare (V)

Ciao mondo!

Formato fisso (i caratteri "␣" vengono utilizzati per separare gli spazi nelle posizioni della riga da 1 a 6):

␣␣␣␣␣␣PROGRAM ciao ␣␣␣␣␣␣PRINT *, "Hello, World!" FINE

Formato libero:

Programma ciao print *, "Hello, World!" fine

Osservazioni.

  • L'istruzione PROGRAM è facoltativa. A rigor di termini, l'unico operatore richiesto di un programma Fortran è END dichiarazione.
  • La scelta delle lettere maiuscole o minuscole per scrivere le istruzioni del programma è arbitraria. Dal punto di vista standard moderni La lingua Fortran, l'insieme delle lettere maiuscole e l'insieme delle lettere minuscole coincidono quando si scrivono gli operatori linguistici.

Interazione con altre lingue

Molti sistemi di programmazione consentono di collegare file oggetto ottenuti a seguito della traduzione di un programma Fortran con file oggetto ottenuti da compilatori di altri linguaggi, il che rende possibile la creazione di applicazioni più flessibili e multifunzionali. Per il linguaggio Fortran sono inoltre disponibili un gran numero di librerie, contenenti sia subroutine per la risoluzione di problemi computazionali classici (LAPACK, IMSL, BLAS), task per l'organizzazione del calcolo distribuito (MPI, pvm), sia task per la costruzione di interfacce grafiche (Quickwin, FORTRAN / TK) o accesso a DBMS (Oracle).

Fortran in URSS

Note (modifica)

  1. Vedi ad esempio: Netlib Repository in UTK e ORNL
  2. A.M. Gorelik. L'evoluzione del linguaggio di programmazione Fortran (1957-2007) e le prospettive per il suo sviluppo // Metodi computazionali e programmazione, 2008, V. 9, p. 53-71
  3. Bartenev O.V. Fortran moderno. - M.: Dialogue MEPhI, 2005. - ISBN 5-86404-113-0
  4. A.M. Gorelik. programmazione orientata agli oggetti nel moderno Fortran
  5. S.D. Algazin, V.V. Kondrat'ev. Programmazione visiva Fortran. - M.: "Dialogo MEPHI", 2008. - 448 p. - ISBN 5-8243-0759-8
  6. Gorelik A.M. News
  7. VS FORTRAN
  8. XL Fortran per Linux
  9. Panoramica generale delle suite del compilatore Absoft Pro Fortran
  10. Sun Studio - Benchmark
  11. Saggio di Alexander Rastorguev sull'apparizione di Fortran a Dubna
  12. Storia della computer grafica in Russia

Letteratura

  • Fortran. Manuale di riferimento del programmatore. Il sistema di codifica automatica Fortran per IBM 704 EDPM. - IBM Corp. 1956. - 51 pp.
  • ISO / IEC 1539-2: 2000 Informatica - Linguaggi di programmazione - Fortran - Parte 2: stringhe di caratteri di lunghezza variabile
  • Robert W. Sebesta. 2.3. Computer IBM 704 e linguaggio Fortran // Concetti base dei linguaggi di programmazione = Concetti dei linguaggi di programmazione / Per. dall'inglese - 5a ed. - M.: Williams, 2001 .-- S. 63-69. - 672 secondi. - 5000 copie. - ISBN 5-8459-0192-8 (russo), ISBN 0-201-75295-6 (inglese)

Link

  • gfortran - compilatore Fortran 95/2003/2008, parte della GNU Compiler Collection
  • in Protopedia - Enciclopedia dei linguaggi di programmazione (russo)

Il linguaggio di programmazione Fortran viene utilizzato principalmente per l'informatica scientifica. Inventato nel 1954, è lingua più antica programmazione di alto livello, seguita da Lisp (1958), Algol (1958) e COBOL (1959). Il numero di biblioteche scientifiche scritte in Fortran e la creazione di speciali traduttori-compilatori consentono oggi l'uso della lingua. Inoltre, sono stati creati più calcolatori per vettorizzazione, coprocessori, parallelismo, che hanno intervallato questo linguaggio per l'uso nella produzione industriale. mondo moderno.

John Backus, un ingegnere radiofonico IBM, pubblicò articoli nel 1954 con i titoli "Rapporto preliminare", "Specifiche per il sistema IBM Matmal Transmula TRANslating", che diede origine al termine FORTRAN. Poi ci vollero altri due anni di sforzi da parte dell'intero team, da lui guidato, per scrivere il primo compilatore Fortran (25.000 righe per l'IBM 704).

Il nome della lingua è stato originariamente enunciato in maiuscolo FORTRAN ed era usato per indicare versioni linguistiche fino a Fortran 77, al contrario di versioni gratuite sintassi dal Fortran 90. Nello standard Fortran 77, le lettere minuscole non fanno parte del linguaggio, ma la maggior parte dei compilatori le supporta in aggiunta allo standard.

Fortran è il linguaggio di programmazione dominante utilizzato oggi nelle applicazioni di ingegneria. Pertanto, è importante che gli ingegneri laureati siano in grado di leggere e modificare il codice Fortran. Di tanto in tanto, i cosiddetti esperti prevedono che la lingua perderà la sua popolarità e presto cesserà di essere utilizzata del tutto.

Queste previsioni sono sempre fallite. Fortran è il linguaggio di programmazione per computer più robusto della storia. Uno dei motivi principali per cui il linguaggio di programmazione Fortran è sopravvissuto e sopravviverà è l'inerzia del software. Dopo che un'azienda ha speso molte risorse e forse milioni di dollari in un prodotto software, è improbabile che traduca il software in un'altra lingua.

Il vantaggio principale di Fortran è che è standardizzato dagli organismi internazionali ANSI e ISO. Pertanto, se il programma è scritto in ANSI, verrà eseguito su qualsiasi computer con un compilatore Fortran 77. Informazioni importanti... Quindi, i programmi sono oggetto linguaggio orientato La programmazione Fortran esiste in diversi dispositivi software.

Fasi di creazione di una piattaforma linguistica:

  1. Nel 1954-1957, il primo compilatore è stato sviluppato da zero. A quei tempi non esistevano "linguaggi di alto livello" (= HLL), la maggior parte dei sistemi operativi era semplice e la memoria era piccola, qualcosa come 16 Kb. Il primo compilatore girava sull'IBM 704. Questo HLL era molto più efficiente della programmazione assembly e molto popolare ai suoi tempi.
  2. FORTRAN II è stato pubblicato nel 1958. Nello stesso anno fu sviluppato FORTRAN III, ma mai rilasciato in una produzione diffusa.
  3. FORTRAN IV è stato creato nel 1961. Conteneva miglioramenti come l'implementazione delle dichiarazioni COMUNE ed EQUIVALENZA.
  4. Nel 1962, l'ASA iniziò a sviluppare uno standard per il linguaggio di programmazione orientato agli oggetti Fortran. Ciò ha permesso al venditore di usarlo in ogni nuovo computer. E questo fatto ha reso ancora più popolare HLL, la lingua è diventata disponibile in Sistemi Apple e TRS80.
  5. Nel 1967 fu rilasciato FORTRAN 66, il primo standard HLL al mondo. La pubblicazione dello standard ha significato che il linguaggio è stato implementato più ampiamente di qualsiasi altro. Verso la metà degli anni '70, praticamente ogni computer, mini o mainframe era dotato del linguaggio standard FORTRAN 66. Il linguaggio usato if, goto-statements e programmi spagethi. Questa programmazione strutturata è diventata popolare negli anni '60 e '70.
  6. Fortran esisteva su schede perforate in particolare con il sistema FMS, ottimizzando il layout dei suoi sorgenti fino a quando Fortran 90 non introdusse una sintassi "libera". In esso, il codice dell'array Fortran inizia dalla settima colonna e non deve superare i 72 mila caratteri.

Va anche notato che prima del Fortran 90, gli spazi bianchi non avevano importanza tra la settima e la 72a colonna. Pertanto, il ciclo "DO I = 1,5" può essere scritto anche "DOI = 1,5". D'altra parte, "DO I = 1,5" è equivalente a "DOI = 1,5".

Numerosi codici industriali sono stati scritti in Nastran, NAG e nella libreria IMSL-Fortran. La compatibilità delle versioni più recenti con le versioni precedenti è importante. Per questo motivo, Fortran 90 è completamente compatibile con Fortran 77. Tuttavia, le seguenti versioni sono già state introdotte incompatibilità standard.

Seguirono presto i linguaggi più avanzati Fortran 90 e Fortran 95, aggiornati all'attuale standard Fortran-2003. Nonostante il fatto che i compilatori moderni funzionino a tempo indeterminato in tutte le versioni attuali di Windows e supportino persino i processori a 64 bit. Nel frattempo, i produttori hanno riconosciuto la tendenza dei tempi e offrono compilatori per Linux sotto forma del linguaggio di programmazione orientato agli oggetti Actor Fortran.

Prerequisiti per l'utilizzo del linguaggio di programmazione

Devi capire che Fortran è ancora un linguaggio di programmazione ampiamente utilizzato ed è utilizzato principalmente nel campo della scoperta. Applicazioni classiche, come la fisica o l'ingegneria, in cui vengono eseguiti calcoli matematici estesi e complessi. Le vaste librerie matematiche che esistono per diversi compilatori sono molto utili al loro interno. Per riassumere, si può affermare che Fortran è ancora utilizzato oggi per una serie di motivi:

  • Numerose librerie funzionali sviluppate negli anni.
  • La presenza di software in Fortran, che richiede risorse molto importanti per lo sviluppo, quando si considera troppo costoso passare ad un'altra lingua.
  • Avere potenti compilatori con funzioni Fortran integrate che producono molto velocemente file eseguibili.
  • Il linguaggio è più accessibile a un inventore che non avesse un corso di informatica specializzato.

Molti programmi scientifici sono ora scritti in C e C++, i cui compilatori sono disponibili sulla maggior parte delle macchine. Altri linguaggi compilati vengono talvolta utilizzati per l'informatica scientifica e in particolare per programmi come Scilab o Matlab. Quest'ultimo include anche le librerie BLAS e LAPACK sviluppate in Programmazione Fortran... Matlab era originariamente un programma Fortran distribuito a università e centri di ricerca.

Sebbene Tom Lahey sia ora "l'unico" compilatore generale, Lahey Computer Systems continua ad essere utilizzato da molti programmatori. Lahey lavora con Fujitsu da diversi anni, Lahey si sta concentrando sul parser Fortran e Fujitsu sul generatore di codice. L'attuale Compiler Suite per Windows si chiama Lahey Fujitsu Fortran 95 (LF95) ed è disponibile in diverse versioni, alcuni dei quali si integrano anche con Studio visivo.NET 2003.

Esiste anche una versione economica di LF95 Express senza il proprio IDE. La versione attuale è la 7.1. su Linux è chiamato dal compilatore Lahey/Fujitsu Fortran 95 v6.2 per Linux ed è disponibile in due differenti versioni. Ad esempio, la versione Pro include la compatibilità OpenMP v2.0, un semplice motore grafico Winteracter Starter Kit, biblioteca matematica e biblioteca scientifica Routine Fujitsu 2.

Un altro produttore è Absoft. I compilatori e il C++ esistono non solo per Windows e Linux, ma anche per OS X su Macintosh. Questi compilatori sono di interesse per gli sviluppatori che necessitano o desiderano supportare tutte e tre le piattaforme. Sfortunatamente Absoft distingue tra le versioni a 32 e 64 bit per Linux, attualmente utilizzando la versione 10.0 di Fortran 95 per Linux a 64 bit.

La EKOPath Compiler Suite è relativamente nuova sul mercato. Consiste di compilatori C ++ e dell'ambiente di sviluppo Fortran per Linux, disponibili anche separatamente e destinati principalmente agli utenti AMD a 64 bit. Funziona anche su Intel EM64T. Inoltre, Microsoft una volta ha cercato di trovare un "mercato economico" per Fortran e ha introdotto Microsoft Powerstation sul mercato.

Il mercato potrebbe essere stato troppo piccolo per il gigante del software, ma Digital ha rilevato parte del codice nel 1997 e ha sfruttato la sua esperienza con i compilatori Digital Unix e OpenVMS. Fu la nascita dell'ancora di grande successo Digital Visual Fortran. Ad un certo punto, Digital si è poi spostato su Compaq, il compilatore è stato migliorato per Versione attuale Compaq Visual Fortran (CVF) v6.6.

Oltre alle "normali" piattaforme a 32 bit, esistono vari compilatori a 64 bit, come quelli per Intel Itanium e Intel EM64T. Sebbene non siano “urgenti” per la portata della fornitura, sono disponibili per il download gratuito tramite il sistema web. Supporto Intel Premier.

Dopo una registrazione una tantum, un po' macchinosa, puoi usarlo per un anno, con nuovi aggiornamenti ogni poche settimane. Anche le versioni precedenti rimarranno disponibili.

Un programma Fortran è una sequenza di righe di testo. Il testo deve seguire una sintassi specifica. Ad esempio: un cerchio di raggio r, area c.

Questo programma legge raggio reale e determina l'area di un cerchio con raggio r:

"Raggio r:" leggi (*, *) r;

area = 3,14159 * r * r;

scrivi (*, *) "Area =";

Le righe che iniziano con "C" sono commenti e non hanno altro scopo che rendere il programma più leggibile per gli umani. In origine, tutti i programmi Fortran erano scritti in lettere maiuscole. La maggior parte dei programmatori ora scrive in minuscolo poiché è più leggibile.

Un programma Fortran di solito consiste in un programma principale o driver e diverse subroutine, procedure o subroutine. Struttura principale del programma:

  • il nome del programma;
  • dichiarazioni;
  • dichiarazioni;
  • fermare;
  • la fine.

Il testo in corsivo non dovrebbe essere preso come testo letterale, ma piuttosto come descrizione generale... L'istruzione stop è facoltativa e può sembrare eccessiva, poiché il programma si fermerà comunque quando raggiunge la fine, ma si consiglia di terminare sempre il programma con un'istruzione stop per sottolineare che il thread è terminato.

Regole per la posizione delle colonne

Fortran 77 non è un linguaggio in formato libero, ma ha una serie di regole molto rigide per la formattazione del codice sorgente. Più regole importanti sono le regole di layout delle colonne:

  • Col. 1: Vuoto o "c" o "*" per i commenti.
  • Col. 2-5: etichetta operatore.
  • Col. 6: continua riga precedente.
  • Col. 7-72: dichiarazione.
  • Col. 73- 80: Numero di sequenza.

Una riga Fortran che inizia con la lettera "c" o un asterisco nella prima colonna è un commento. I commenti possono apparire ovunque nel programma. Ben scritti, sono fondamentali per la leggibilità di un programma. Codici commerciali Fortran contiene spesso circa il 50% dei commenti. Potresti anche incontrare programmi che usano Punto esclamativo(!). Questo è molto non standard in Fortran 77, ma consentito in Fortran 90.

Il punto esclamativo può apparire in qualsiasi punto della riga. A volte l'istruzione non si adatta a una riga, quindi puoi dividere l'istruzione in due o più righe e utilizzare un carattere di continuazione in posizione.

  1. C23456789 - Questo dimostra la posizione della colonna.
  2. "C" - l'operatore successivo attraversa due aree linee fisiche.
  3. Area = 3,14159265358979+ * r * r.

Gli spazi vuoti vengono ignorati a partire da Fortran 77. Pertanto, se rimuovi tutti gli spazi bianchi in Fortran 77, il programma è ancora sintatticamente corretto, anche se quasi illeggibile per gli operatori.

I nomi delle variabili in Fortran sono 1-6 caratteri selezionati da lettere a-z e i numeri 0-9. Il primo carattere deve essere una lettera. Fortran 90 consente nomi di variabili di lunghezza arbitraria. Fortran 77 non fa distinzione tra top e minuscolo, infatti, presuppone che tutti gli input siano maiuscoli. Tuttavia, quasi tutti i compilatori F 77 accetteranno lettere minuscole. Ogni variabile deve essere definita nella dichiarazione. Questo imposta il tipo della variabile. Gli elenchi di variabili più comuni sono:

  • numero intero;
  • vero;
  • doppia precisione;
  • complesso;
  • logico;
  • carattere.

L'elenco delle variabili deve essere costituito da nomi separati da virgole. Ogni variabile deve essere dichiarata esattamente una volta. Se la variabile non è dichiarata, F 77 utilizza un insieme di regole implicite per stabilire il tipo. Ciò significa che tutte le variabili che iniziano con le lettere "in" sono intere e tutte le altre sono reali. Molti vecchi programmi F 77 utilizzano queste regole implicite, ma i programmatori non dovrebbero farlo, poiché la probabilità di errori di programma aumenta notevolmente se dichiarano le variabili in modo incoerente.

Fortran 77 ha un solo tipo per le variabili intere. I numeri interi vengono solitamente archiviati come variabili a 32 bit (4 byte). Pertanto, tutte le variabili intere devono assumere valori nell'intervallo [-m, m], dove m è circa 2 * 10 9.

F 77 ne ha due tipi diversi per variabili in virgola mobile chiamate doppia precisione reale. Alcuni calcoli numerici richiedono una precisione molto elevata e dovrebbe essere utilizzata una precisione doppia. Di solito real è una variabile di 4 byte e la doppia precisione è di 8 byte, ma questo dipende dalla macchina.

Le versioni non standard di Fortran utilizzano la sintassi reale * 8 per indicare le variabili in virgola mobile a 8 byte. Alcune costanti vengono visualizzate più volte nel programma. Pertanto, è consigliabile definirli una sola volta, all'inizio del programma. L'operatore di parametro viene utilizzato per questo. Inoltre rende i programmi più leggibili. Ad esempio, un programma per l'area di un cerchio dovrebbe essere scritto in questo modo.

Sintassi dell'operatore di parametro (nome = costante, ..., nome = costante). Regole per l'operatore del parametro:

  1. Una "variabile" definita in un'istruzione di parametro non è una variabile, ma una costante il cui valore non può mai cambiare.
  2. "Variabile" può visualizzare al massimo un parametro operatore.
  3. Il parametro operator deve precedere il primo operatore eseguibile

Alcuni buoni motivi per usare un parametro - aiuta a ridurre il numero di errori di battitura, è facile cambiare una costante che appare molte volte in un programma.

Le espressioni booleane possono avere solo il valore .TRUE. o .FALSO. e può essere generato per confronto utilizzando operatori relazionali.

Non è possibile utilizzare simboli come "<» или «=» для сравнения в F 77, но можно использовать правильную двухбуквенную аббревиатуру, заключенную точками. Однако такие символы разрешены в Fortran 90.

Le espressioni booleane possono essere combinate con operatori logici "AND", "OR", "NOT", che hanno un significato ovvio. I valori di verità possono essere memorizzati in variabili booleane. L'assegnazione è la stessa dell'assegnazione aritmetica.

Esempio: logico a, ba = .TRUE.b = a .AND. 3 .LT. 5/2

L'ordine di precedenza è molto importante. La regola è che vengono valutate prima le espressioni aritmetiche, poi gli operatori relazionali e infine gli operatori logici. Pertanto, a b verrà assegnato .FALSE. Nell'esempio sopra, i booleani sono usati raramente in Fortran, ma sono spesso usati in istruzioni condizionali come l'istruzione "if".

Costante e assegnazione

La forma di espressione più semplice è costante. Esistono 6 tipi di costanti corrispondenti a 6 tipi di dati. Ecco alcune costanti intere: 10-10032767 + 15

Costanti reali: 1.0-0.252.0E63.333E-1.

La notazione E significa che devi moltiplicare la costante per 10, elevata alla potenza successiva alla "E". Pertanto, 2.0E6 è due milioni e 3.333E-1 è circa un terzo per le costanti più grandi del valore reale massimo consentito o che richiedono un'elevata precisione, è necessario utilizzare la precisione doppia. La notazione è la stessa delle costanti reali, tranne per il fatto che "E" è sostituito da "D".

Esempio: 2.0D-11D99.

Qui 2.0D-1 rappresenta la doppia precisione con un quinto, mentre 1D99 è uno seguito da 99 zeri.

Il tipo successivo sono le costanti complesse. Sono indicati da una coppia di costanti (intere o reali) separate da virgole e racchiuse tra parentesi.

Esempi sono: (2, -3) (1.9.9E-1). Il primo numero indica la parte reale e il secondo la parte immaginaria.

Il quinto tipo sono le costanti booleane. Possono avere solo uno dei due significati:

Nota che i punti contenenti lettere devono essere scritti.

L'ultimo tipo sono le costanti di carattere. Sono più spesso usati sotto forma di un array di caratteri chiamato stringa. Sono costituiti da una sequenza arbitraria di caratteri racchiusi tra apostrofi (virgolette singole):

"Tutto va bene!"

"È un buon giorno"

Le costanti stringa e carattere fanno distinzione tra maiuscole e minuscole. Il problema sorge quando è necessario avere un vero apostrofo nella stringa stessa. In questo caso, devi raddoppiare l'apostrofo: "È" "è una bella giornata", che significa "Che giornata meravigliosa".

Le istruzioni condizionali sono componenti essenziali di qualsiasi linguaggio di programmazione. L'istruzione più comune in Fortran è l'istruzione "if", che in realtà assume diverse forme.

La più semplice è l'espressione logica "if" nella descrizione Fortran: if (espressione logica) istruzione eseguibile.

Questo dovrebbe essere scritto su una riga, ad esempio, quando si definisce il valore assoluto di x:

se (x .LT. 0) x = -x

Se più di un'istruzione deve essere eseguita in un "if", allora dovrebbe essere usata la seguente sintassi: if (espressione logica) thenstatementsendif.

Il flusso di esecuzione è dall'alto verso il basso. Le espressioni condizionali vengono valutate in sequenza finché non viene trovato un valore vero. Quindi viene eseguito il codice appropriato e il controllo passa all'istruzione successiva dopo la fine "if".

Le istruzioni If possono essere nidificate a più livelli. È importante utilizzare un rientro corretto per garantire la leggibilità. Ecco un esempio:

if (x .GT. 0) thenif (x .GE. y) thenwrite (*, *) "x è positivo e x> = y" elsewrite (*, *) "x è positivo ma x< y"endifelseif (x .LT. 0) thenwrite(*,*) "x is negative"elsewrite(*,*) "x is zero"endif

I programmatori dovrebbero evitare di annidare molti livelli di istruzioni if, poiché sarà difficile da seguire.

È possibile utilizzare qualsiasi workstation Unix con il compilatore F 77. I programmatori esperti consigliano di utilizzare Sun o Dec.

Un programma Fortran è composto da testo semplice che segue determinate regole di sintassi. Questo è chiamato codice sorgente. I programmatori utilizzano un editor per scrivere il codice sorgente. Gli editor più comuni su Unix sono emacs e vi, ma possono essere un po' complicati per gli utenti inesperti. Puoi usare un editor più semplice come xedit, che gira sotto X windows.

Dopo che un programma Fortran è stato scritto, viene salvato in un file con estensione ".f" o ".for" e il programma viene tradotto in formato leggibile dalla macchina. Questo viene fatto usando un programma speciale chiamato compilatore. Il compilatore Fortran 77 è comunemente chiamato f77. Al risultato della compilazione viene assegnato per impostazione predefinita il nome un po' criptico "a.out", ma è possibile scegliere un nome diverso se necessario. Per eseguire il programma è sufficiente inserire il nome del file eseguibile, ad esempio "a.out". Il compilatore traduce il codice sorgente in codice oggetto e il linker o caricatore nel file eseguibile. Come puoi vedere, questa procedura non è affatto complicata ed è disponibile per qualsiasi utente.

La simulazione è uno dei metodi di produzione più comunemente usati e altri sistemi disponibili nelle fabbriche moderne. La maggior parte dei modelli di simulazione sono costruiti utilizzando il linguaggio di programmazione orientato agli oggetti Actor Fortran o un pacchetto software di simulazione scritto in un linguaggio tradizionale. Questi strumenti hanno i loro limiti. La tecnologia orientata agli oggetti ha mostrato un uso crescente in molte aree e mantiene la promessa di un approccio più flessibile ed efficiente alla modellazione dei sistemi aziendali.

La programmazione Simula Fortran è paragonata a un linguaggio di programmazione scientifica comune chiamato FORTRAN. Un tipico modello di simulazione militare è programmato sia in SIMULA che in FORTRAN. Il programma SIMULA si è rivelato più corto del 24% rispetto alla versione FORTRAN.

La versione SIMULA è anche più semplice e offre un'immagine migliore del modello simulato. D'altra parte, il runtime per le esecuzioni di produzione è più lungo del 64% con il linguaggio di programmazione orientato agli oggetti Simula Fortran. Soppesare i pro ei contro mostra che SIMULA sarà un software sempre più redditizio, con costi del personale più elevati e costi del computer inferiori.

CUDA mostra come gli sviluppatori di applicazioni ad alte prestazioni possono sfruttare la potenza delle GPU utilizzando Fortran, un linguaggio familiare per il calcolo scientifico e il test delle prestazioni dei supercomputer. Gli autori non presumono alcuna esperienza precedente con il calcolo parallelo e trattano solo le basi e le migliori pratiche di utilizzo. L'efficienza computazionale delle GPU che utilizzano CUDA Fortran è assicurata dall'architettura della GPU di destinazione.

CUDA Fortran per scienziati e ingegneri definirà parti di codice ad alta intensità di calcolo e modificherà il codice per la gestione dei dati, la concorrenza e l'ottimizzazione delle prestazioni. Tutto questo viene fatto in Fortran, senza la necessità di riscrivere il programma in un'altra lingua. Ogni concetto è illustrato con esempi reali, così puoi valutare immediatamente le prestazioni del tuo codice.

Forse un giorno una società globale "finalmente globalizzerà" e deciderà che Fortran non è più necessario, ma non ora. Grazie alle attuali capacità del moderno Fortran, molti programmatori e scienziati vedono il futuro dietro di esso. Inoltre, ci sono abbastanza produttori nel mondo che vivono dello sviluppo di compilatori moderni e guadagnano bene con questo processo.

Sono stato spinto a provare a scrivere il mio primo post qui, dove vt4a2h suggerisce di usare C ++ per l'apprendimento. Sì, molte copie sono state rotte su questo argomento.

Io, come probabilmente la maggior parte degli scolari nella vastità della nostra vasta Patria, ho iniziato a comprendere le basi attraverso lo schermo blu, ma non la morte, ma Turbo Pascal 7.0. C'era, ovviamente, Basic, che ho incontrato per la prima volta in età prescolare sul computer sovietico "Elettronica". Poi sembrava uno strano editor di testi, perché il computer è stato creato per i giochi attraverso gli occhi di un bambino. Tuttavia, già all'istituto ho conosciuto la lingua Fortran, dopo averla imparata, mi chiedo ancora perché non sia usata per l'insegnamento.

Sì, molti diranno che la lingua è morta, non corrisponde alle realtà moderne e i libri di testo con il titolo, come nella foto, provocano solo un sorriso. Cercherò di spiegare perché questa lingua è così meravigliosa e perché la consiglio come prima lingua. Se interessati, benvenuto sotto cat.

Credo che le basi per le basi della programmazione dovrebbero essere riposte negli anni scolastici, almeno al liceo. Anche se nella vita un computer servirà solo per scrivere in Word o per comunicare sui social network, una conoscenza minima di cosa sia un algoritmo e di come strutturare una sequenza di azioni per ottenere il risultato desiderato almeno non danneggerà un giovane adolescente come una vita adulta e molto probabilmente aiuterà a formare una mentalità speciale.

Affinché le lezioni di informatica siano una gioia, e non un sogno negli incubi, lo studente deve capire cosa sta facendo, come lo fa e perché va a finire in questo modo e non diversamente. Dopotutto, infatti, è necessario trasmettere correttamente le informazioni sul ciclo e sull'operatore condizionale in modo che una persona possa scrivere programmi da sola. Inoltre, più semplice è la sintassi del linguaggio, più facile è comprendere la logica di scrittura del codice. Se una persona impara a comporre l'algoritmo corretto, quindi per la programmazione in altre lingue, ha solo bisogno di imparare la sintassi di questa lingua e le basi saranno già poste.

Perché Fortran è così meraviglioso?

Passiamo alla storia della creazione di questa lingua. È apparso nei lontani anni '50 del secolo scorso, quando i computer erano ancora grandi, c'erano pochi programmatori e l'informatica non veniva insegnata a scuola e in generale era considerata una pseudoscienza. Ciò che serviva era un linguaggio semplice che aiutasse ingegneri e scienziati a "caricare" le formule scritte su carta ai computer, anche attraverso schede perforate.

Da qui il nome della lingua stessa: Per mula tran slator o "traduttore di formule". Quelli. inizialmente, il linguaggio era rivolto a persone senza una formazione specifica, il che significa che doveva essere il più semplice possibile.

Bene, i creatori sono riusciti nella semplicità. Il primo programma classico si presenta così:

Programma hw write (*, *) "Hello, World!" fine
La sintassi è anche leggermente più semplice di Pascal, non c'è bisogno di mettere alla fine della riga " ; " o " : "prima del segno di uguale. Inoltre, le persone con una conoscenza minima della lingua inglese non avranno difficoltà a capire il significato del programma più semplice.

Qui voglio notare che Fortran ha diverse revisioni degli standard, le principali delle quali sono 77 e 90 (pur mantenendo la continuità). Fortran è davvero arcaico, c'è un limite alla lunghezza della riga ed è necessario far rientrare l'inizio della riga, il che potrebbe dare uno shock culturale a un giovane candidato programmatore. Non senza ragione i programmi scritti in Fortran 77 hanno ricevuto dal mio amico il nome capiente "Codice Brezhnev". Pertanto, tutto il mio testo si riferisce allo standard linguistico 90 e successivi.

Ad esempio, fornirò un codice per calcolare la somma di numeri interi non negativi da 1 a n, immessi dalla tastiera, scritto dalla mia studentessa mentre le insegnava a programmare da zero. È stato lì che ho sperimentato l'insegnamento del Fortran come prima lingua. Spero che questo sia stato un bene per lei e che il mio esperimento sia stato un successo. Almeno ha imparato le basi in un paio di lezioni, la prima delle quali è stata spesa per una lezione sulla lingua.

Programma chisla implicito nessuno! Variabili intero n, i, s! Corpo di chisla s = 0 scrivi (*, *) "Enter n" leggi (*, *) n if (n.le.0) quindi scrivi (*, *) "Negativo o zero" altrimenti do i = 1, ns = s + i end scrivi (*, *) "Sum =", s end if end
Come puoi vedere, scriviamo il codice nel modo in cui pensiamo. In linea di principio, il tirocinante non può avere alcuna difficoltà. Il lettore attento, ovviamente, chiederà cosa è implicito nessuno e due asterischi tra parentesi separate da virgole. implicite none ci dice che stiamo specificando esplicitamente il tipo di variabili, mentre senza questa voce, il compilatore indovinerà il tipo stesso. Il primo asterisco significa che l'input e l'output stanno accadendo sullo schermo, e il secondo significa che il formato I/O viene rilevato automaticamente. In realtà, un programma Fortran non sembra più complicato di un pezzo di codice scritto sopra.

E l'ambiente software?

Nelle scuole, e in qualsiasi istituzione governativa, sorge spesso la domanda sul software, in particolare sulla sua licenza. Perché i soldi per queste esigenze non sono stanziati in modo particolare. Almeno ai miei tempi, c'era un problema con questo, forse ora la situazione è cambiata in meglio.

Qualsiasi editor di testo è adatto per scrivere programmi Fortran. Se vuoi evidenziare la sintassi, puoi usare Notepad ++ (supporta solo gli standard di sintassi 77) o SublimeText. Il programma è stato scritto, con cosa lo compileremo? È semplice, puoi usare il Fotran GNU gratuito. Se l'uso è pianificato per uso non commerciale, è consentito puntare al compilatore di Intel, che è ben ottimizzato per i processori con lo stesso nome e viene fornito con l'IDE minimo richiesto. Quelli. la soglia di ingresso è molto preferenziale.

Secondo molti utenti, il miglior ambiente di sviluppo per Fortran rimane Compaq Visual Fortran 6.6, la cui ultima versione è stata rilasciata nei primi anni 2000. Perché è successo che l'ambiente basato su Visual Studio 6.0, che senza ballare con un tamburello si avvia al massimo su Windows XP a 32 bit, e ha un limite sulla memoria utilizzata, ha guadagnato tanta popolarità tra i fortrans. La risposta è mostrata nella figura sottostante.

Questo è Compaq Array Visualizer, uno strumento molto conveniente per visualizzare array a 1, 2 e 3 dimensioni nel processo di debug di un programma direttamente dal debugger. Come si dice, dopo averlo provato una volta, lo mangio adesso. Il fatto è che il Fortran è ormai utilizzato principalmente in ambito scientifico (di cui parleremo più avanti), in particolare nel campo di cui mi occupo, ovvero la fisica dell'atmosfera. Durante il debug dei programmi, gli array rappresentano vari campi meteorologici come temperatura, pressione, velocità del vento. È molto più semplice cercare un errore nei campi grafici che in un insieme di numeri, soprattutto perché di solito si sa come dovrebbe apparire approssimativamente il campo, quindi gli errori evidenti vengono eliminati all'istante.

Sfortunatamente, tutto il lavoro del compilatore è stato passato da Compaq a Intel. Intel inizialmente supportava l'Array Visualizer, sebbene quelle versioni fossero già un pallido riflesso del prodotto Compaq, non era così conveniente lavorare con loro come prima, ma almeno le prestazioni minime erano supportate. Ahimè, Intel ha smesso di sviluppare nuove versioni di Array Visualizer, rinunciando a questo strumento più conveniente.Ecco perché la comunità Fortran per la maggior parte scrive programmi e li esegue il debug sotto Compaq Visual Fortran su Windows e lancia calcoli di combattimento su server sotto Linux utilizzando i compilatori Intel Intel, ascolta le richieste degli utenti, restituisci un normale strumento di rendering di array al tuo debugger!

Il posto di Fortran nel mondo moderno

E ora veniamo allo stesso argomento che di solito provoca un'accesa discussione con i miei colleghi che usano Matlab, i quali sostengono che il linguaggio raro descritto in questo post è inutile per qualsiasi cosa. Qui non sono d'accordo con loro. Il fatto è che Fortran è stato storicamente utilizzato nei calcoli ingegneristici o scientifici e quindi, nel tempo, ha acquisito molte librerie e codici di programma già pronti per risolvere un particolare problema.

Il codice viene letteralmente tramandato di generazione in generazione e anche ben documentato. Puoi trovare molte soluzioni già pronte per equazioni di fisica matematica, algebra lineare (qui dovremmo notare l'implementazione di successo del lavoro con le matrici), equazioni integrali e differenziali e molto, molto altro. Probabilmente è difficile trovare un problema nel campo della fisica e della matematica, per il quale non sarebbe stato implementato un algoritmo in linguaggio Fortran. E se prendiamo in considerazione l'eccellente ottimizzazione dei compilatori Intel per i processori Intel, il supporto per il calcolo parallelo su cluster ad alte prestazioni, allora diventa chiaro perché questo linguaggio occupa un meritato primo posto nella comunità scientifica. Penso che tu possa trovare un compilatore Fortran installato su qualsiasi supercomputer.

La maggior parte dei modelli seri, almeno nel campo della fisica atmosferica, sono scritti in Fortran. Sì, sì, le previsioni del tempo, a cui tutti sono interessati di volta in volta, si ottengono durante i calcoli dei modelli scritti in questa lingua. Inoltre, la lingua non è in stagnazione, ma viene costantemente migliorata. Quindi, dopo gli standard 77 e 90 descritti in precedenza, sono apparse le nuove edizioni 95, 2003, 2008, il cui supporto è stato introdotto negli attuali compilatori. Le ultime versioni di Fortran hanno in qualche modo rinfrescato il vecchio linguaggio collaudato, aggiungendo il supporto per lo stile moderno, aggiungendo la programmazione orientata agli oggetti, la cui assenza era quasi la principale carta vincente degli avversari di questo linguaggio. Inoltre, The Portland Group ha rilasciato il compilatore PGI CUDA Fortran, che consente calcoli altamente paralleli su schede video. Pertanto, il paziente è più che vivo, il che significa che i programmatori Fortran rimangono richiesti fino ad ora.

Invece di una postfazione

E ora vorrei tornare al tema sollevato inizialmente dell'insegnamento della programmazione, e provare a riassumere i principali vantaggi di Fortran quando lo si sceglie come prima lingua.
  • Fortran è molto facile da imparare, la sintassi è comprensibile a una persona inesperta. Una volta apprese le basi, è facile reimparare qualsiasi altra lingua.
  • Un set gratuito di strumenti ti consente di non ricevere domande inutili dai detentori del copyright.
  • La lingua è familiare agli insegnanti, poiché esiste da molto tempo, e i nostri insegnanti sono principalmente rappresentanti della vecchia generazione.
  • È ampiamente distribuito in tutto il mondo ed è un tesoro di tutti i tipi di biblioteche.
  • Standardizzato, multipiattaforma e retrocompatibile.
  • È utile per gli studenti delle specialità tecniche, e soprattutto fisiche e matematiche, per l'orientamento verso i calcoli scientifici e ingegneristici.
  • È rilevante e richiesto fino ad oggi.
Allora perché non Fortran? * "Magic PC" 2000 №6 (28), pp. 49–50.

Nel 1955 fu rilasciato il primo linguaggio algoritmico di alto livello FORTRAN(FORmula TRANslator - traduttore di formule). È stato utilizzato principalmente per risolvere problemi scientifici, tecnici e ingegneristici ed è stato sviluppato dai dipendenti IBM sotto la guida di John Backus... Poco dopo, nel 1957, John Backus e i suoi collaboratori installarono il primo compilatore Fortran presso IBM (Bestinghouse). I programmatori che in precedenza lavoravano esclusivamente in Assembler erano scettici sulle capacità di un linguaggio di alto livello ad alte prestazioni, quindi il criterio principale per lo sviluppo degli standard Fortran e la creazione di compilatori da questo linguaggio era l'efficienza del codice eseguibile. A proposito, il termine "compilatore" non era molto usato allora, sebbene fosse già stata introdotta Grace Hopper, l'unica ammiraglia donna negli Stati Uniti, chiamata anche "la first lady della programmazione e la nonna di Cobol".
La maggior parte degli operatori Fortran sono stati tradotti direttamente in una o due istruzioni macchina, semplici costruzioni sintattiche e l'uso attivo di etichette e goto ha reso possibile ottenere codice molto veloce e, di conseguenza, i programmi Fortran a volte funzionavano più velocemente dei programmi assembler. Anche la stessa struttura interna del programma tradotto era molto semplice: tutto il codice, tutte le subroutine e tutti i dati, insieme al blocco comune, si trovavano esclusivamente nella memoria statica, il che, tuttavia, rendeva impossibile l'uso della ricorsione.
Poiché Fortran è stato il primo linguaggio di alto livello a soddisfare le esigenze della maggior parte degli utenti in quel momento e facile da imparare, si è diffuso molto rapidamente.
A causa dell'ampia diffusione di questo linguaggio e della comparsa di molti programmi Fortran (principalmente di natura computazionale), il problema della sua standardizzazione è diventato urgente. All'inizio era lo standard Fortran IV 1964, poi, quando sono emerse nuove idee, nel 1978 è stato adottato un nuovo standard Fortran 77(f77) con estensioni sintattiche più moderne e flessibili. Oggi, le varianti Fortran più comuni sono Fortran 90(f90) e Fortran 95... Un gruppo di appassionati sta finendo di lavorare su una super versione del linguaggio F2k, che sarà pubblicata entro la fine dell'anno.
Sebbene a volte siano state apportate nuove versioni del linguaggio sia aggiunte non necessarie (ad esempio, estensioni associate all'allocazione dinamica della memoria) sia utili, come l'organizzazione di programmi modulari, il lavoro con parti di array, ecc., oggi questo linguaggio non può essere definito promettente per studio, poiché la sua sintassi è notevolmente superata.
Tuttavia, per chi molto spesso deve risolvere vari problemi computazionali, non è affatto necessario prendere in mano un libro di testo di matematica e "ricominciare da zero" ogni volta. Nel 90% di questi casi, quello che stai cercando è stato a lungo implementato e sottoposto a debug in Fortran. Pertanto, molto probabilmente, la vita di Fortran è assicurata per molto tempo.
C'è un'altra nicchia relativamente giovane per Fortran: il calcolo parallelo, in cui la rigida semantica del linguaggio consente di ottenere programmi ad alte prestazioni. Solitamente si usa lo standard f90, leggermente esteso con un insieme di operatori per indicare parti del programma adatte alla parallelizzazione. Parallel Fortran ha il suo standard HPF(Fortran ad alte prestazioni). Tuttavia, i fan di Fortran, il cui motto è diventato la frase leggendaria "Perché dovrei imparare altre lingue quando posso scrivere tutto in Fortran", hanno sentito la sua evidente inadeguatezza per progetti su larga scala a causa del suo attaccamento alla sintassi degli anni '50, e ha cercato di introdurre in esso idee OOP alla moda, ma l'oggetto Fortran come standard non è mai apparso.
Tra le versioni freeware di Fortran, la più famosa è f2c, che è implementata per tutti i sistemi UNIX e converte il testo di un programma Fortran in codice C. Per DOS esiste una versione gratuita di bcf77. Delle versioni commerciali, innanzitutto, vanno segnalati Microsoft Fortran, che consente di creare librerie dll, e Watcom Fortran, che genera codice altamente efficiente. Per le attività che richiedono un'elevata precisione dei calcoli, è previsto il compilatore di MicroWay. In generale, i compilatori Fortran di varia qualità sono disponibili su tutte le piattaforme di computer.
Tuttavia, il merito principale di Fortran risiede altrove. Quando è diventato necessario sviluppare progetti molto grandi, le carenze di Fortran, associate principalmente al debugging "pesante", sono diventate inutilmente gravose. Pertanto, Fortran è servito da forte stimolo per lo sviluppo della teoria dei programmi di debug e test. Sono apparsi centinaia di verificatori sintattici Fortran, che hanno individuato errori logici nascosti. Successivamente, tali aree teoriche della programmazione come trasformazioni di programmi di ottimizzazione equivalenti, compilazione di alto livello, test automatizzati, ecc., sono nate da questa direzione. Quindi non dovremmo dimenticare Fortran. Probabilmente non ha senso usarlo come toolkit nelle attività di integrazione di sistema, ma ciò che è stato sviluppato dai migliori programmatori in 30-40 anni potrebbe accelerare il processo di sviluppo. Almeno, ci sono incomparabilmente più "mattoni" software per Fortran che per altri linguaggi di programmazione. ■

* * *
John Backus Nato il 3 dicembre 1924 a Filadelfia, in Pennsylvania, in una famiglia benestante, trascorse la sua infanzia a Wilmington. Dopo essersi diplomato al liceo nel 1942, entrò all'Università della Virginia presso la Facoltà di Chimica (su insistenza del padre, un chimico), ma dopo un po' smise di studiare e nel 1943 fu arruolato nel servizio militare.
Backus iniziò a servire con la Brigata della Difesa Aerea a Fort Stewart, in Georgia, ma in seguito fu mandato al college per studiare medicina.
Per qualche tempo lavorò con entusiasmo nell'ospedale cittadino, ma nel 1946 perse interesse per questo lavoro, lasciò l'esercito e si trasferì a New York, sebbene non sapesse cosa intraprendere e come vivere.
Dopo un po', Backus è entrato nella scuola di formazione per tecnici radiofonici. "Ho avuto un insegnante molto bravo e mi ha chiesto di calcolare le caratteristiche di alcuni circuiti. È stato terribilmente noioso, ma estremamente interessante".
Backus entrò presto alla Columbia University (New York) per studiare matematica, dove si laureò (1949). Poco prima di completare gli studi, ha visitato un centro di informatica IBM su Madison Avenue. E qui la fortuna gli sorrise per la seconda volta: nel 1950 Backus divenne programmatore all'IBM.
Il dominio di IBM nel settore dei computer è stato discusso per la prima volta nel 1952. Tutto è iniziato con il 701, noto anche come Calcolatrice della difesa. Immediatamente dopo il rilascio del modello 701, gli specialisti del Dipartimento di ricerca applicata iniziarono a migliorarlo (1955-1956).

I cambiamenti più seri sono stati suggeriti da John Backus, che in seguito ha preso parte attiva alla creazione del computer 704. In particolare, grazie a lui, è apparsa la cosiddetta tecnologia di "codifica di velocità", che ha permesso di semplificare notevolmente la scrittura di programmi per il 701. "La capacità di accelerare la generazione del codice per la Macchina 701, che era un computer a virgola fissa unicast senza registri di indice, lo ha trasformato in un sistema a virgola mobile con indirizzamento arbitrario e registri di indice", ha ricordato Backus. Quindi gli utenti non dovevano più preoccuparsi del codice binario. ”
Anche allora apparvero i primi componenti della tecnologia di programmazione rapida, che viene utilizzata oggi. In effetti, questo sistema è diventato il predecessore di complessi simili che sono stati rilasciati negli anni 50-60 e successivamente sono stati sostituiti da linguaggi di alto livello.
E nel 1955 Backus "inventò" Fortran, il primo linguaggio macchina di alto livello. Successivamente, ricordando questo periodo, Backus dirà: "Non sapevamo per cosa lottare e non sapevamo come farlo". Inizialmente, tutto il lavoro doveva essere completato all'inizio del 1954, ma lo sviluppo della lingua fu completato quasi due anni dopo.
La prima versione del compilatore consisteva in 25.000 righe di codice macchina registrate su nastro magnetico. Ad ogni IBM 704 è stata fornita una copia del programma con un manuale di programmazione di 51 pagine.
Nel 1959, Backus sviluppò regole grammaticali per descrivere la sintassi dei linguaggi di alto livello (forma normale Backus-Naur, abbreviato BNF).
Nel 1976, John Backus è stato insignito della National Medal for Contribution to Science e dal 1991 ha smesso di dedicarsi all'informatica.

Vladimir Buslaev

OCR: primo-contro, 2016

Principali articoli correlati