R: Fortran a Fisica!

From: Giampaolo Tomassoni <change_this_to_my_last_name_at_geocities.com>
Date: 1999/11/29

Giorgio Pastore <pastgio_at_univ.trieste.it> wrote in message
38332959.4981BB77_at_univ.trieste.it...
>
> ...omissis...
>
> Il fortran e' stato tra i primi linguaggi di programmazione di alto
> livello ad apparire. E' nato per permettere di programmare algoritmi
> numerici nel modo piu' vicino possibile alla loro descrizione matematica.

All'epoca della sua nascita, andava benissimo. Ora, per lo stesso scopo, c'�
di meglio.


> Il C++ e' un linguaggio con una notevole flessibilita' che puo'
> tranquillamente essere usato come alternativa al fortran per scopi
> numerici. Qualche piccola differenza, come l' esistenza di un tipo dati
> primitivo COMPLEX in fortran

Guarda che in C++ � piuttosto facile creare una classe che, addirittura
tramite inlining, permette di manipolare i dati complex come e meglio che in
Fortran. Non si tratta di un tipo di dati primitivo, dato che in C e C++ i
dati primitivi sono (volutamente) ridotti al minimo, ma non c'� alcuna
penalizzazione prestazionale o differenza nell'uso per questo.

In pratica, ottiene l'inclusione dei complessi tra i tipi di dati
disponibili. Tutto qui.

Proprio grazie all'estendibilit� dei tipi di dati in C++ si pu� fare
addirittura di pi�: io stesso ho realizzato (per mio personale uso ma, se vi
interessa, chiedete pure: � aggratis) una piccola libreria di manipolazione
matriciale (poche operazioni, eh!). Con essa, � sufficiente dire:

    A = B * C;

(dove A, B e C sono matrici la cui dimensionalit� � compatibile con il
prodotto matriciale) per ottenere in A il prodotto matriciale tra B e C.

Potete anche scrivere:

    C = (B/A)*k + D;

Fatelo in Fortran, e poi riparlatemi di leggibilit�!

Tra l'altro l'efficienza generale di questo metodo � a mio avviso superiore
a quella di molte librerie di calcolo matriciale per il Fortran, dato che
alcune delle operazioni matriciali pi� semplici sono 'inlined', cio� portate
all'interno del sorgente da cui si richiamano.

Vabb�, non credo di utilizzare le ultimissime novit� in fatto di prodotto ed
inversione matriciale (sono fermo al Gauss-Jordan), quindi le prestazioni
potrebbero essere ben inferiori a quelle di altre librerie. Ma basta essere
al corrente delle novit�...


> o la possibilita' di indici di arrays variabili tra estremi qualsiasi

Che � qualcosa di estremamente pesante da gestire, dato che il programma
risultante (specie se la matrice � multidimensionale) deve compiere
operazioni a runtime per rendere gli indici '0 based'. Ma poi, serve
veramente?


> o ancora la possibilita' di identificare la precisione numerica dei tipi
> float a livello dei nomi delle variabili

Che rende il Fortran molto meno leggibile e pi� prono ad errori, senza
contare tutti i casi in cui si vede un 'DO r=1 TO 5' (con r non dichiarata),
con il risultato che il programma viene costretto ad utilizzare una variable
REAL dove sarebbe pi� che sufficiente (e molto pi� efficiente) una INTEGER.


> Molto piu' condizionante, dal punto di vista numerico e' la sterminata
> quantita' di software e librerie di ottimo livello scritte in fortran.

Questo � vero, ma ci sono innumerevoli programmetti freeware in grado di
tradurre in C un programma Fortran, comprese le librerie.

Ripeto, secondo me si continua ad utilizzare il Fortran pi� per 'accidia'
che per necessit�.


> Tuttavia la domanda di "quale linguaggio di programmazione insegnare a
> fisica" e' estremamente attuale in questo momento in cui i fisici si
> stanno accorgendo che il background informatico fornito in media dal
> corso di laurea e' in generale scarso.
> La risposta e' estremamente complessa e dipende essenzialmente dalla
> risposta a due ulteriori domande: quale dovrebbe essere lo scopo dell'
> insegnamento di un linguaggio di programmazione e quanto tempo ci si
> puo' dedicare.

Beh, supponendo che lo scopo di quello di un fisico, cio� +o-
l'implementazione informatica di modelli matematici dei suoi problemi, mi
piacerebbe poter rispondere 'Mathematica', come hanno suggerito altri in
questa thread. Ma si tratta di un prodotto proprietario che, quindi, mal si
adatta ad essere adottato quale linguaggio di scambio tra fisici.

Le alternative secondo me sono due: APL (che ha dei vantaggi, ma sembra
ostrogoto di primo acchito), oppure il C, C++. Questi ultimi due linguaggi
hanno l'indubbio vantaggio di essere sintatticamente molto vicini (pur se
ben diversi) al Fortran, sicch� i fisici che si sono imparati il Fortran
potrebbero facilmente abituarcisi.

Altri linguaggi (come, ad es. il Pascal), fanno solo da intermezzo tra i
due.


> In un mondo ideale io vedrei abbastanza bene un insegnamento
> "poliglotta" in cui lo studente aquisisca bene gli elementi di un
> linguaggio ( nel senso che sappia scrivere un programma funzionante in
> tale linguaggio) e capisca altri due o tre linguaggi di programmazione
> (nel senso che sappia leggere e capire programmi) in un insieme in cui
> ritengo debbano entrare il fortran, il c o il c++, java e un linguaggio
> di script (shell, perl, tcl...) inoltre dovrebbe saper utilizzare
> linguaggi per elaborazioni simboliche di piu' alto livello tipo
> Mathematica, Maple, Macsyma etc.

Mi piace, sono daccordo. � un po' quello che suggeriva Cagnetti in questo
thread: insegnare a programmare, pi� che insegnare la sintassi di un
linguaggio.


> Al momento, qui a Trieste, stiamo tentando qualcosa di meno ambizioso in
> questa direzione con due moduli di 8 settimane ( al primo ed al terzo
> anno) in cui si danno elementi di informatica pratica, cenni di analisi
> numerica, un' introduzione al fortran (77) al C e a Mathematica.

Trieste sempre avanti a tutti, eh? ;)


> Aggiungo anche che ritengo che in un mondo ancora piu' ideale alcuni di
> questi strumenti ( perche' comunque sono tali) dovrebbero essere gia'
> acquisiti prima di entrare all' universita'.

Giusto, ma penso che questa sia ormai la strada: quasi ogni scuola ha
un'aula computer. Al momento vengono poco usate (sopratutto perch� mancano
gli insegnanti in grado di trovare gli interruttori dei PC...), ma penso
che, piano piano, ci dovremmo arrivare.

Ciao,

--
------------------------------------------------------
Giampaolo Tomassoni Information Systems Consultant
P.za 8 Aprile 1948, 4 Tel/Fax: +39 (578) 21100
I-53044 Chiusi (SI)  e-mail: tomassoni_at_geocities.com
ITALY
homepage: http://www.geocities.com/Eureka/Park/2209/
Received on Mon Nov 29 1999 - 00:00:00 CET

This archive was generated by hypermail 2.3.0 : Fri Nov 08 2024 - 05:10:40 CET