Nostalgia Fortranica


OK! attacco virulento di nostalgia. E altro. E grave, assay!
Recentemente ho trasferito su Linux Ubuntu un po’ di roba che girava su una macchina davvero obsoleta (che continua a funzionare, le robe di una volta, con le schede fatte da un fabbro con incudine, martello e forgia per rendere malleabile il ferro, OK, quasi).
Non credo di violare segreti inconfessabili se dico che è stata una cosa tranquilla: quando si facevano girare i test di controllo da verificare con vecchi tabulati ingialliti e si scopriva che era tutto a posto, entro le tolleranze dovuti a processore, compilatore e chissà cos’altro era come quando si riesce a decifrare una lapide scritta in latino, senza dover dare la colpa alle abbreviazioni e alla corrosione della pietra.

Va detto che io ho cominciato a usare il Fortran attorno al 1979 e in quel periodo da noi (cioè dove lavoravo io) si usava solo il Fortran. Lo standard di riferimento era il FORTRAN IV (1966), anzi no. Ogni ditta aveva avuto una dozzina di anni per aggiornare e c’era stato un fiorire di enhancements spesso incompatibili. Anche perché ogni casa aveva il suo sistema operativo, ad eccezione di IBM che aveva un SO diverso per ogni macchina e spesso sulla stessa macchina ne convivevano diversi.
Per dire i file, se non usavi quelli predefiniti (che potevano essere tastiera e terminale ma anche lettore di schede e stampante) dovevi definirli da SO.


Il 77 (1978, da noi è arrivato verso l’80) risolveva questo e parecchie altre cose (la lettura formattata, con blank uguale zero, per dirne una, allora era un incubo).
Naturalmente il 77 ha dovuto superare parecchie resistenze.
Per i vecchi le cose andavano bene così com’erano, perché cambiare e dover rivedere quello che funzionava benissimo e c’era da modificare i COMMON, i DO, ridefinire gli INTEGER e chissà cos’altro e per tornare ad avere il programma che funzionava come prima.
C’era poi un altro motivo, non legato agli umani: il nuovo compilatore era molto esoso in termini di memoria.
E poi mancavano ancora gli aggiornamenti per le librerie, quando le usavi.
Insomma il 77 lo usavano i pivelli, per cosette, quando potevano, quasi di nascosto.
Poi, col tempo, si è rivelato il compilatore perfetto. Io ho continuato a utilizzarlo su macchine diverse fino ai primi anni ’90. E poi l’ho ritrovato qualche mese fa. Continua a funzionare anche se, in un campo in cui l’evoluzione galoppa ha qualcosa come 34 anni!
Per dire, niente oggetti! Niente puntatori (anche se Apollo li aveva, per interfacciarsi alle librerie grafiche, scritte in Pascal e C++). Insomma troppo semplice :-D

A dire il vero ci sono stati aggiornamenti, ’90, ’95, 2003 e 2008 (in realtà dopo, i numeri con il Fortran non sono mai stati troppo onesti).

Insomma mi è venuta voglia di aggiornarmi, ecco.

OK, basta, veniamo a noi. Al solito son partito googlando per fortran manual e fortran guide. C’è un mucchio di roba, ho scelto qualcosa a sentimento, non ho alcuna pretesa di essere stato esaustivo.

Uh! intanto un reperto antico, il manuale del FORTRAN II per IBM704. Questa versione, 1958, è fondamentale: introduce le funzioni e le subroutine. Il manuale, che vedo per la prima volta, è mooolto diverso da come si usano oggi. Anche se allora IBM era un mito –OK, io all’epoca dovevo ancora iniziare le elementari :-D

The new features of Fortran 2008 :-)

The language features that have been chosen for Fortran 2008: co-arrays, bits, intelligent macros, …   di John Reid : ecco quello che volevo.

Ah! sì, devo leggermi anche Using GNU Fortran For gcc version 4.7.0 :-D

Uh! e anche queste slide Modern Programming Languages: Fortran90/95/2003/2008 di Lars Koesterke.

Adesso mi studio il tutto e prossimamente, vi racconto, forse ;-)

Ma non posso finire un post senza un briciolo di codice. Allora tuffo al tempo dei dinosauri, ecco un programmino scritto nello stile FORTRAN IV. A dire il vero la open non c’era e il resto si sarebbe scritto tutto maiuscolo ma per il resto è OK.

c234567
      open(5, file='ftext', blank='ZERO')
      read(5, 90) i1
      read(5, 91) i2
      close(5)
      print *, i1, i2
   90 format(i4)
   91 format(i5)

      end

Legge due interi dal file ftext e li scrive sul monitor.
Questo è il file dei dati, ftext

 4
 5

Indovinate cosa otteniamo? Ecco


Sì perché ci sono dei blank dopo i numeri, visualizzabili con uno script Python

f = open('ftext')
r = f.readline()
rs = r.rstrip('\n')
print '*' + rs + '*'
r = f.readline()
rs = r.rstrip('\n')
print '*' + rs + '*'
f.close()

E sì! Allora il mondo era molto diverso da oggi (anche se i dinosauri si erano estinti da un pezzo, almeno io non ne ho mai visti).


Ma con il FORTRAN IV non finisce qui, cercando immagini delle schede perforate (io le usavo al Poli, da studente) ho trovato questa chicca. Stupefancentissimissima! :-D E guardate i commenti ;-)
Il mondo è piccolo :-D

OK, prossimamente qualcosa di nuovo, forse… :-)

About these ads
Post a comment or leave a trackback: Trackback URL.

Commenti

  • Piero  On 17 aprile 2012 at 10:57

    Aargghhh ! L’ unita’ 5 era di default il lettore di schede perforate, come la 6 era la stampante a catena. Usare quelle unita’ di I/O per un file era quasi una bestemmia !

    • juhan  On 17 aprile 2012 at 11:05

      Piero dipende dalla macchina! Ti assicuro che sulla mia sarebbe stato OK. Ricordo perfettamente che per numeri piccoli l’unità FORTRAN era uguale all’unità Primos + 4; quindi l’unità Primos 1 (default) per il FORTRAN era 1+4=5.
      La regola valeva per un po’, tenendo conto che i numeri per Primos dovevano essere in ottale e che a 20 c’era l’unità nastro (la prima). Il lettore di schede mi sembra fosse il 3 e la stampante il 4 ma dovrei verificare: dove $%&#@ è finito il manuale?

      • Giuseppe (@glipari)  On 17 aprile 2012 at 11:24

        Poi uno dice: come mai il fortran è stato sostituito da altri linguaggi? ecco! (a parte gli scherzi, bellissimo post!)

Trackbacks

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 82 follower

%d blogger cliccano Mi Piace per questo: