Newsgroup: it.scienza.fisica
Titolo: linguaggio di programmazione

Buongiorno,
vi chiedo cortesemente un consiglio:
io non conosco alcun linguaggio di programmazione,
anche se qualche volta ho scritto qualche piccolo
programma in Pascal, vorrei impararne bene uno.
 Vi chiedo dunque quale linguaggio di programmazione
conviene imparare, premetto che le materie
del mio corso di laurea sono matematica e
 fisica e che mi farebbe piacere imparare
un linguaggio che potrebbe risultarmi
possibilmente utile in un lavoro futuro. L'idea vaga che
mi sono fatto č che Java e C sono i linguaggi piů in voga.
Grazie
Tern

 mi sono fatto č che Java e C sono i linguaggi piů in voga.
...
Non ho capito bene che corso di laurea stai seguendo. In genere Fisica o 
  Matematica hanno, nell' offerta dei corsi, alcuni insegnamenti che 
prevedono anche l' apprendimento di un linguaggio di programmazione. In 
tal caso, ti conviene informarti su cosa offre il tuo CdL come prima 
cosa. C'e' poi anche la possibilita' che tu scelga (previa consultazione 
con il responsabile dei piani di studio, in genere il presidente del 
consiglio di corso di studi) un corso di altro corso di Laurea che 
faccia al tuo caso.
A parte queste osservazioni, non c'e' un linguaggio migliore di un altro 
in assoluto. Dipende da cosa ci devi/vuoi fare. Restando sui linguaggi 
cosiddetti di alto livello (nella classe del Pascal, per intenderci), 
per applicazioni *numeriche* serie (leggi intensive) considererei 
Fortran, C++ e C. Se la costruzione di interfacce grafiche o la 
programmazione ad oggetti sono cose importanti, Java ha dei vantaggi su C++.
Una considerazione a parte e' poi connessa alla possibilita' che tu 
abbia piu' utilita'/interesse ad apprendere un linguaggio di "altissimo 
livello" che ti permetta di concentrarti di piu' sul problema fisico o 
matematico e meno sugli aspetti informatici (sto pensando alla 
programmazione di applicazioni tipo Mathematica o Matlab/Octave).
Magari se ne puo' parlare meglio con qualche dettaglio in piu' da parte tua.
Giorgio

 programmazione ad oggetti sono cose importanti, Java ha dei vantaggi su C++.
Tra l'altro, aggiungerei al nostro amico che si possono usare anche 
*combinazioni* di linguaggi, es.:
- sviluppa il kernel che fa calcoli intensivi in Fortran (o C++)
- i dati prodotti dal kernel vengono visualizzati in una GUI sviluppata 
in un altro linguaggio, es. Java
 
Ciao,
Dan

 Giorgio
Io voglio studiare un linguaggio di programmazione da autodidatta, non amo
le lezioni universitarie. Se potrò formalizzare le mie conoscenze di un
linguaggio con un esame e un voto, ben venga l'esame. In ogni modo Non
voglio studiare un linguaggio _per un esame_.
Il computer è uno strumento, stupido ma veloce, mi piacerebbe utilizzarlo.
Grazie
Tern

 mi sono fatto č che Java e C sono i linguaggi piů in voga.
Io ti suggerisco Java, per usa serie di motivi che potrebbero
interessarti.
Se studi la Fisica, ad esempio, in giro sul web si trovano spesso
applet (piccoli programmi java che girano nelle pagine web) che
simulano qualche fenomeno fisico; e magari potrebbe piacerti vedere
come funzionano, o modificarli o svilupparne di tuoi.
Java e' Object-Oriented (come il C++) e ha una sintassi che ricorda
per molti versi il C/C++.
Ma la caratteristica piu' interessante e' che Java e' indipendente
dalla piattaforma: il tuo programma girera' su tutte le macchine,
senza ricompilarlo. Questo perche' ogni computer abilitato a Java ha
il suo proprio interprete di Java (la Java Virtual Machine, JVM);
persino il tuo browser internet, e anche il tuo telefonino, ha una
macchina Java cablata nel suo interno. 
Unico seria disgrazia (almeno secondo me) e' che questo linguaggio non
e' tanto facile da imparare. Ma se e' per lavoro, la disgrazia puo'
rivolgersi in un vantaggio :-)
Michele
-- 
"I may have invented it, but B. Gates made it really famous"
                David Bradley, The CTRL-ALT-DEL Inventor, IBM Research

 voga.
Ti rispondo da informatico, dato che come studente di fisica non credo 
di poterti dire cose che non sai gia`.
Il C e il C++ sono linguaggi potentissimi, estremamente flessibili e 
molto adatti ad applicazioni di tipo scientifico (calcolo numerico). 
Inoltre, scrivendo opportunamente il codice, hai la possibilita` di 
rendere il programma portabile su praticamente ogni piattaforma. Questo 
significa che i tuoi programmi non saranno legati ad un particolare 
hardware o ad un particolare sistema operativo. Per questi linguaggi poi 
esiste in rete una quantia` enorme di documentazione, e tutto cio` che 
ti e` necessario alla programmazione, a partire dal compilatore (gcc), 
e` disponibile come software libero.
Per questo ti sconsiglio Java: oltre a non poter competere con il C/C++ 
dal punto di vista delle prestazioni, ti lega ad una virtual machine 
proprietaria (sun o ibm). Di Java si dice che e` lento come un 
interpretato e scomodo come un compilato, ed io sono d'accordo :)
A proposito di linguaggi interpretati: potresti fare un pensierino anche 
sul perl, imho.
Ciao
p.
-- 
gpg key id: 0x6E2D5847
keyserver: 
pgp.mit.edu

 mi sono fatto è che Java e C sono i linguaggi più in voga.
Ciao, ti posso dire che c e c++ dominano il mercato quasi dappertutto.
Lascia perdere java. Ormai è in netto declino. Il fatto che sia portabile su
tutte le macchine non vuol dire nulla. Ad esempio il c è talmente
standardizzato che puoi compilarlo su qualsiasi macchina senza problemi ed è
cento volte più veloce! il java inoltra nonostante la sua ultra portabilità
è lento come un linguaggio interpretato. Anzi per dir la verità negli ultimi
tempi è decisamente più veloce visual basic che nella sua nuova veste .NET
ha riacquistato nuovo smalto. Peraltro in C trovi numerose librerie per
trattare la grafica facilmente. E anche i tutorial per autodidatti non
mancano di certo!

 interpretato e scomodo come un compilato, ed io sono d'accordo :)
Premessa; conosco sia C/C++ che Java; mi piacciono tutti e tre ma se 
devo esprimere una preferenza e' per C++. Detto questo non e' vero che 
le prestazioni di Java debbano essere necessariamente inferiori. Se si 
compila in codice nativo, un programma Java e' solo di poco meno veloce 
di uno compilato in C/C++ (che a loro volta sarebbero lenti come Java, 
circa un ordine di grandezza, se fossero compilati in bytecode e poi 
eseguiti. L'unica cosa e' che si perde la portabilita' del bytecode, ma 
NON DEL SORGENTE.

 dal punto di vista delle prestazioni, 
Questo e' vero. Pero', il problema, e' capire *quando* ti servono queste 
prestazioni.
In giro per Internet ci sono un sacco di applet scritte in Java: li' non 
e' che stanno facendo calcoli di QED o altra roba avanzata: si tratta, 
ad esempio, di laboratori "virtuali", in cui il navigatore impara certi 
fenomeni, o simula certi esperimenti, interagendo con una GUI.
In questi casi, la multipiattaforma di Java, il fatto di poter far 
girare un'applet in una pagina web senza ricompilare (apri il browser, e 
l'applet si lancia!), non hanno riscontro con il C/C++.
E' chiaro invece che, per applicazioni numerical-intensive, l'uso di 
linguaggi come C++ (ma anche Fortran, direi), risulta vincente.
Tra l'altro, e' vero, Java e' meno efficiente di C++, pero' e' molto 
piu' semplice da impare (OK, usare da C++ una libreria ben progettata 
puo' essere semplice come usare da Java una libreria ben progettata... 
pero' *realizzare* una libreria ben progettata in C++ richiede ben piu' 
conoscenze rispetto a farlo in Java; il C++ ha un sacco di aspetti 
sottili come, tanto per citarne uno, i virtual destructor, le funzioni 
"virtual", l'ereditarieta' multipla, ecc. che in Java semplicemente non 
ci sono [= sono "nascoste" al programmatore]; in C++ piu' il progettista 
ha certo piu' opzioni - che possono tradursi in maggiore efficienza - , 
ma sono richieste conoscenze piu' approfondite per poter scegliere 
bene!).
Tutto IMHO, naturalmente :) e senza il benche' minimo desiderio di voler 
scatenare un flame :-)
Dico solo che, forse, un buon learning-path per il nostro amico potrebbe 
essere quello di imparare prima Java (cosi' non deve affrontare alcuni 
complicazioni del C++) e poi di approfondire aspetti legati al C++, 
cosi' si ritrovera' a conoscere due linguaggi assai importanti e utili, 
in contesti diversi.
Ciao,
Dan

 mi sono fatto è che Java e C sono i linguaggi più in voga.
Assolutamente C++!
Le prestazioni di un programma in C++ sono irraggiungibili per una qualsiasi
Java Virtual Machine.
Le difficoltà d'apprendimento fra C++ e Java sono a mio avviso circa le
stesse.
Il discorso della portabilità si può comunque superare.
Io scrivo applicazioni scientifiche per la ditta dove lavoro (nel campo
della dinamica dei fluidi, un vero "spacca CPU") e spesso non ho bisogno di
utilizzare le API dei vari S.O. nei miei programmi (sono puri calcoli) ,
quindi, programmando in standard C++ il mio programma gira su qualsiasi
sistema operativo o calcolatore dove sia presente un compilatore. E gira
alla velocità della luce... In Java starei ancora aspettando i risultati...
Quando occorre la grafica, allora si può comunque ricorrere a ottimi
framework multipiattaforma (licenza GPL o affini), che garantiscono la piena
portabilità del codice su calcolatori con S.O. Unix/Linux, Windows e su Mac
(e altri), faccio un esempio per tutti, wxWindows. Anche se al momento è
prematuro e con il C++ la grafica arriva dopo, ovvero se decidi per il C++
sicuramente arriverai in ritardo rispetto a Java con finestre, bottoni ed
eventi del mouse...
Tuttavia godrai di tutta la potenza della tua CPU, senza filtri e
rallentamenti in mezzo, proprio come si richiede nelle applicazioni
scientifiche "pesanti", avide di potenza di calcolo in virgola mobile.
ciao.

Ti sconsiglio vivamente il C/C++.  Pur essendo importantissimo e utilissimo
per varie ragioni, adesso come adesso č poco spendibile sul mercato del
lavoro dato che la stragrande maggioranza delle applicazioni  (e quindi del
mercato) difficilmente sono sviluppabili in C++ (penso ad esempio ai
gestionali di varia natura o le web applications) .
E' effettivamente molto veloce, ma se hai bisogno di calcolo numerico ti
rivolgi a Mathematica o Matlab (forse fortran, ma non lo conosco), non credo
che ci si sviluppi del codice C per ogni calcolo che serve.
Inoltre č poco didattico, almeno secondo il mio punto di vista.
Di gran lunga meglio Java, che puoi imparare ad esempio con il bel libro
disponibile gratis in rete "thinking in java" di bruce eckel.
Se hai bisogno nell'apprendimento chiedi pure, la mail č valida (oppure sui
ng) .
 Ciao,
unit

 mi sono fatto č che Java e C sono i linguaggi piů in voga.
Inizia con il C e poi prosegui con il C++
Lascia perdere Java o C#

 programma in Pascal, vorrei impararne bene uno.
beh praticamente come vedi le opinioni sono differenti, e il mio
consiglio è di impararti bene le basi della programmazione, poi poco
importa quale linguaggio sceglierai di approfondire: la tua conoscenza
di programmazione (scientifica) ti permetterà di avere confidenza in
poco tempo (parlo di 5-6 ore di studio) con qualunque altro linguaggio
[che non sia troppo 'esotico'].
Ecco la mia opinione:
C: impara il C++ piuttosto, e saprai anche il C con pochissimo sforzo.
C++: ottimo, un po' difficilotto come primo approccio. Altamente
performante, il problema è che ci metterai "un po'" a programmare
qualcosa perchèil linguaggio non è ricco di <zucchero sintattico>
(cioè di statements che alleggeriscano di molto la sintassi) e ti
forza a fare un sacco di cose da solo.
Per la grafica c'è root che è una libreria ottima e semplice, a mio
avviso.
Java: non adatto al calcolo scientifico. E' un linguaggio che mi piace
molto ma lo sconsiglierei ad un fisico non solo per le performance, ma
anche perchè non lascia molti gradi di libertà nella programmazione:
basti pensare che non puoi passare una variabile ad una funzione per
valore!
Per la grafica è un buonissimo linguaggio ma... non ne vale la pena!
Perl: mistico. Lascia perdere, per il calcolo scientifico è meglio
il..
Python: un linguaggio che mi piace un sacco che ha buone librerie
scientifiche di base e un'ottima comunità di supporto. NON è molto
performante ma se non devi fare programmi che devono girare per giorni
ti risulterà molto utile perchè è semplice e potente. Il tempo di
sviluppo dello stesso programma in C e in Python  è ridotto di un
fattore 5 almeno!
Per la grafica ha un supporto molto buono per il Tk.. non sono
fantastiche, ma alla fine ci fai tutto. Ti consiglierei di partire da
qui.
Fortran: non ne capisco i vantaggi. E' prolisso e, nonostante il 95
abbia un supporto per i puntatori e per la programmazione orientata
agli oggetti mi sembra che il fortran si porti dietro una tradizione
di programmazione procedurale che sta nei piedi a chiunque voglia
seriamente programmare con i moderni strumenti di design concettuale.
Comunque non lo conosco bene, quindi non so consigliarti. Cmq è molto
performante e ha molte librerie scientifiche MA NON E' GRATUITAMENTE
DOCUMENTATO (provate a trovare dei buoni tutorial di f95 sul web!) e i
compilatori decenti sono tutti proprietari... quindi... a me sta sulle
p. e non sono affatto contento della scelta della mia università di
insegnarlo obbligatoriamente agli studenti di fisica!
Grafica: esiste un'estensione grafica? BOH? forse si puo' linkare alle
librerie C,C++..
In definitiva... io direi C++ e Python!
Per tutorial gratuiti sul web:
Thinking in C++ di Bruce Eckel
http://www.python.org
 -> Documentation -> Tutorial
Neanche a dirlo... qualunque linguaggio tu scelga, impara delle
librerie portabili su ogni piattaforma... insomma non dedicarti al
Visual Basic!
Davide

 Lascia perdere Java o C#
perché no il C# ? Ho appena cominciato a sperimentarlo... :-(
Carlo


Alcuni rapidi e disinteressati consigli da un "dinosauro" che programma 
per  diversissimi problemi di fisica da piu' di 30 anni e non possiede 
la parola "performante" nel suo vocabolario.
1) Il FORTRAN va benissimo per qualsiasi calcolo matematico o logico: la 
maggior parte dei grossi modelli (quelli giganteschi per le previsioni 
meteo, per esempio) sono ancora oggi scritti in questo linguaggio.
Se hai bisogno di grafica, ora si utilizza una variazione del FORTRAN 
che si chiama IDL ma che ha il grosso svantaggio di essere proprietaria.
Nessuno dei due va bene, invece, se devi gestire uno strumento come si 
dice "on line" o hai a che fare con stringhe di dati che il FORTRAN ama 
poco (tipo singoli bytes).
In questo caso il C o sue varianti sono la scelta migliore. Mi e' 
capitato anche il BASIC ma lo sconsiglio.
2) Parti dal semplice altrimenti ti perdi per strada e fai tutti gli 
esercizietti, anche se ti sembrano stupidi.  I manuali di linguaggi 
sono, in genere, tra i peggiori libri che puoi trovare sul pianeta: 
danno per scontato che il lettore sia nel cervello dell'autore e che ne 
conosca gia' la logica perversa.
3) ultima constatazione del "dinosauro" che, in qualche modo, si e' 
tenuto aggiornato sulle ultime versioni dei vari linguaggi: piu' passa 
il tempo e piu' i vari linguaggi assumono nuove possibilita' che li 
rendono sempre piu' simili.  Giustamente!
Ma allora tutta questa discussione...
Daniele Fua'
Uni. Milano-Bicocca

 stesse.
Eh beh su questo non sono proprio d'accordo! E' vero che se sai il C++
in pratica sai anche il Java perchè alla fine è lo stesso linguaggio
con un sacco di limitazioni (molte delle quali intelligenti) ma da
Java a C++ a mio avviso c'è un certo salto.. basti pensare ai
puntatori!
Tu che sei un programmatore scientifico... mi spieghi "il bello" del
Fortran, a parte le ragioni storiche e le numerose librerie?
Davide

 Fortran, a parte le ragioni storiche e le numerose librerie?
...
Metto io 3 punti a favore, a parte le ragioni storiche e le numerose 
librerie  (senza voler togliere nulla agli altri linguaggi ma pensando 
all' utilizzo dal punto di vista di un fisico-computazionale):
1. ha una sintassi di "istruzioni di array" built-in, potente, 
standardizzata e quindi portabilissima;
2. le (numerose) funzioni intrinseche sono parte integrale del 
linguaggio e non occorre sapere quali sono i file di libreria e di 
headers in cui sono nascoste;
3. l' implementazione dei puntatori e' piu' sicura (e da un certo punto 
di vista piu' potente di quanto facciano C/C++).
E ri-sottolineo che, IMHO,  questi sono vantaggi per il fisico 
computazionale. Per il programmatore di GUI o per chi progetta moduli di 
sistemi operativi altri linguaggi rispondono meglio allo scopo.
Inoltre concordo con l' osservazione che piu' passa il tempo e piu' gli 
standard tendono a convergere.
Giorgio

 conosca gia' la logica perversa.
scusate l'OT, ma...finalmente trovo qualcuno con la mia stessa idea 
riguardo la logica perversa di questi libri...
Ne ho trovato pero' uno , di C, che mi e' sembrato meno perverso di 
tanti altri e lo sto apprezzando:
Linguaggio C
Alessandra Bellini e Andrea Guidi
Editore McGraw-Hill
cia
slacky

 scatenare un flame :-)
Quoto :)
ciao


 Ma allora tutta questa discussione...
A questo punto un elemento importante per la scelta del linguaggio credo 
che siano - come anche accennato da altri in alcuni post - la 
disponibilita' di librerie mature e collaudate (...e possibilmente 
free/open-source).
Dan

 1) Il FORTRAN va benissimo per qualsiasi calcolo matematico o logico:
Piccola precisazione: intendi il Fortran 90 oppure ti riferisci al 
FORTRAN 77 ?
Da quel poco che ho visto il FORTRAN 77 ha dei costrutti poco moderni 
(es.: non ha una gestione "built-in" delle matrici - almeno a me e' 
parsi cosi'...).
Credo che il FORTRAN 77 si usi piu' che altro per manutenere progetti 
gia' sviluppati; per i nuovi si usano versioni piu' recenti del 
linguaggio, vero?
Grazie per i chiarimenti.
Ciao,
Dan


[CUT]
Fondamentalmente per due motivi:
1. il C++ e' un "C con classi", ovvero se parti da zero dovrai imparare
molte cose che sono in comune ad entrambi i linguaggio (sintassi e semantica
sono identiche). Tanto vale farsi le ossa con il linguaggio C e passare dopo
con calma, quando finalmente si capisce qualcosa di programmazione, ai
concetti di classe, ereditarieta', polimorfismo, etc. che acquisiti di botto
al primo approccio con un linguaggio di programmazione potrebbero essere dei
deterrenti...
2. lo studio del C e' didatticamente il miglior compromesso tra complessita'
di struttura del linguaggio e potenza di calcolo; inoltre una sua padronanza
ti consente di guardarti attorno e avere molte piu' basi per capire gli
altri linguaggi (io il PHP non l'ho dovuto imparare da zero, ho giusto
dovuto vedere le differenze che ha rispetto al C).
Anche nel corso di laurea in fisica che frequento io si studia il C al primo
anno, per citarti un caso (ma so che si fa anche in informatica e in
ingegneria, il C++ viene molto dopo!).
Ciao
CiruZ

 disponibile gratis in rete "thinking in java" di bruce eckel.
anche di C c'è lo stesso libro "thinking in C"...

 linguaggio, vero?
sì è vero. Ci sono miriadi di librerie e programmi in fortran 77 e pure in
fortran 66. Però si tende a convertire tutto ormai al nuovo standard 90/95.

 in contesti diversi.
questo è sensato.

 headers in cui sono nascoste;
Il fatto che nel FORTRAN hai il cos() e il sin() dentro il linguaggio,
mentre nel C devi scrivere "include math.h" in testa al programma,
non mi impressiona piu' di tanto.
Usando il C (o Java) e un modulo appositamente concepito dalla Wolfram
stessa (MathLINK) ,  puoi chiamare direttamente le funzioni di
Mathematica dal tuo programma, altro che cos() e sin()!
Ma quello che e' piu' interessante del FORTRAN, e' proprio quello che
il FORTRAN *non* ha: *la programmazione ad oggetti*. Prova col
FORTRAN a definire la classe delle "affinita'" e a derivare da questa
le similitudini, le isometrie, etc. Oppure, prova col FORTRAN a
ridefinire le operazioni aritmetiche in maniera che possano operare
su oggetti non nativi (come puoi fare col C++), o a ridefinere il
prodotto "*" come composizione di trasformazioni.
Secondo me espressioni come "il FORTRAN e' adatto al calcolo
scientifico" vanno oramai considerate destituite di contenuto
attuale. A meno di non sostituire "calcolo scientifico" con "Calcolo
aritmetico", o "FORTRAN" con "librerie esterne del FORTRAN, che si
pagano a parte (NAG, etc)".
Michele
-- 
Signature under construction. 

 aritmetico", 
Calcolo aritmetico?? In questo stesso thread un esperto ci ha informati 
che in Fortran si scrivono applicazioni per sistemi complessi come 
quelli meteorologici...credo che li' ci sia qualcosa in piu' della 
semplice "aritmetica" :-) Credo, piuttosto, si tratti di calcolo 
scientifico, e anche avanzato.
Ciao,
Dan

 scientifico, e anche avanzato.
forse mi prenderň qualche ora per imparare per bene la nuova versione
del linguaggio (direi che il 95 č la piů recente), qualcuno mi sa
consigliare un buon compilatore GRATUITO in ambiente unix e qualche 
tutorial e references completi e ben fatti disponibili GRATUITAMENTE
ONLINE?
Ciao,
Davide

 anche di C c'è lo stesso libro "thinking in C"...
Non lo sapevo.
Ciao,
unit

 scientifico, e anche avanzato.
per dir la verità anche se reputo il fortran molto facile da utilizzare e
potente il fatto che con esso si costruiscano sistemi complessi non è indice
della sua superiorità. Siccome conosco persone che di mestiere fanno le cose
che hai indicato ti devo avvisare che queste persone sono esperte di fisica
e sistemi complessi ma che di programmazione ne sanno quanto basta per
sviluppare solo i loro codici. Sono persone cresciute col fortran in mano e
che per ovvi motivi non vogliono cambiare linguaggio dopo 20 e più anni
passati a programmare in quel linguaggio. Inoltre certi codici del cern sono
scritti in fortran ma sono assolutamente illeggibili. Ci hanno messo mano
miradi di persone e ognuno ci ha pasticciato sopra a suo modo. Questo è il
peggior esempio di programmazione. Non so nemmeno come certi apparati
possano funzionare con del codice simile. Non c'è nemmeno la possibilità di
debuggare. Mi ricordo che mi è capitato sottomano tempo fa un codice di
un'applicativo per calcoli fluidodinamici. Era una cosa "seria", usata in
ambito industriale. Però era un'accozaglia di linee e pezzi ripetuti. Metà
era in fortran 77 e metà forse in 66. Mah...

 vengono utilizzati solo per simulazioni "non spinte".
Per calcolo simbolico e magari grafica, per esempio. Personalmente non 
conosco nessuno che faccia simulazioni impegnative con Mathematica.
-- 
Enrico Smargiassi
http://www-dft.ts.infn.it/~esmargia

 di persone e ognuno ci ha pasticciato sopra a suo modo.
Credo che sia come dici.
Anzi: esistono dei packages, in uso per certi settori di ricerca (mi
viene in mente per esempio l'evoluzione stellare) che sono stati
scritti, modificati "a strati", e ormai nessuno e' praticamente in
grado di metterci le mani.
Molti li usano a scatola chiusa, sperando che funzionino...
Per obbligo di onesta', quello che dico e' solo in piccolissima parte
frutto di esperienza personale. Molto di piu' sono cose sentite dire.
Ma mi sembrano plausibili.
 
------------------------------
Elio Fabri
Dip. di Fisica - Univ. di Pisa
------------------------------

 vengono utilizzati solo per simulazioni "non spinte".
ti assicuro che il mathematica non è adatto per simulazioni numeriche. E'
molto usato in ambito accademico. Qualcuno lo sfrutta per via dei numerosi
pacchetti. Per quanto riguarda matlab c'è un discreto mercato che lo
utilizza ma non fanno simulazioni "spinte". Per simulazioni spinte intendo
lavorare con matrici di migliaia di righe...il matlab con simulazioni del
genere si impalla e si è costretti a passare a qualche linguaggio di
programmazione oppure al calcolo parallelo.

ONLINE?
Se ne č parlato recentemente su sci.math.num-analysis
Non ricordo se c'č la versione Unix, ma di sicuro c'č quella Linux.
===============
Because Fortran 95 has array operations, I am able to write
number-crunching programs in it about as quickly as with Python and
Numeric -- and the Fortran programs run much faster. The extra code
you write to declare variables is repaid by having fewer run-time
errors than with a scripting language and by having a
better-documented program. Fortran 95 is free for Linux in the form of
g95 -- see 
http://www.g95.org
 . The compiler is still under
development, but it is already usable. The F subset of Fortran 95 is
free for Windows and Linux -- see 
http://www.fortran.com/F/index.html
==================
F is a subset of Fortran 95, and of the many free tutorials at
http://www.dmoz.org/Computers/Programming/Languages/Fortran/Tutorials/Fortra
n_90_and_95/
can be used to learn it, with the caveat that some legal Fortran 90 or 95
is not legal F. The F tutorial by Moniot in PDF format can be purchased for
$10 from 
http://www.fortran.com
 .
===================
Per chi usa winzozz c'č pure la versione con i tool Mingw (15 MB di download
tutto compreso).
saluti,
Peltio
che chiede: qualcuno lo usa? Come ci si trova?

vengono utilizzati solo per simulazioni "non spinte".
Metà degli utenti di Matlab si trovano in ambito universitario.
E pure Mathematica mi sa che ha una ampia fetta di utilizzatori tra
dipartimenti universitari e R&D. Oltre all'indubbio valore didattico, questi
sono sistemi che in ambito lavorativo si prestano all'esplorazione di nuove
soluzioni, e al limite alla prototipazione. Ma il lavoro massivo viene fatto
poi con strumenti dedicati.
Matlab, dal punto di vista applicativo, ha quache cosa in più in simulink e
per questo può essere utilizzato per la prototipazione virtuale che ti fa
risparmiare parecchi soldini evitandoti la costruzione di prototipi nelle
prime fasi della progettazione.
saluti,
Peltio
che forse in Italia la cultura dell'esplorare nuove soluzioni, nelle
aziende, non c'è (in parte perche le aziende che costituiscono il tessuto
imprenditoriale italiano sono troppo piccole per permettersi un reparto di
R&D serio, e in parte perchè la filosofia della ricerca non c'è proprio)

 Ma mi sembrano plausibili.
Ma sai, con tutto il rispetto che tu sai bene io ho per la scienza e
l'attività scientifica, finché si parla di evoluzione stellare... al
massimo si creano le condizioni per qualche aneddoto per gli addetti ai
lavori...
Quello che è più inquietante è che simili packages, scritti soprattutto
in COBOL/CICS e ASSEMBLER/370 gestiscono ancora oggi o almeno fino a
pochi anni fa magazzini, contabilità, logistica, produzione di aziende
*immense*.
Codici scritti secondo la nota tecnica "prima metti i GOTO secondo i
tuoi canoni estetici, poi tutte le altre istruzioni intorno".
Se quei codici si piantassero quelle aziende rischierebbero il
fallimento.
E non è che sono semplicemente "incomprensibili": i loro eseguibili (i
cosiddetti "assoluti") sono stati "zappati" innumerevoli  volte con
modifiche eseguite direttamente in assembler sui codici eseguibili
stessi. Se solo qualcuno li ricompilasse salterebbero tutti!!!
Ciao!
 
-- 
Roberto Rosoni
<roberto...@tisLOCKcali.it> (Remove the lock in your replies)
 
Esperienza è il nome che tutti danno ai propri errori. (O.Wilde)
 

 meteo, per esempio) sono ancora oggi scritti in questo linguaggio.
e che anch'io sono stato in passato un programmatore che riteneva che in
FORTRAN si potessero fare anche le dichiarazioni di amore alle
fanciulle, ho rintracciato questo celebre articolo umoristico, che se
non sbaglio fu pubblicato anche su una qualche rivista:
http://www.markino.net/ridere/fortran.huk.htm
 
-- 
Roberto Rosoni
<roberto...@tisLOCKcali.it> (Remove the lock in your replies)
 
I Veri Programmatori non muoiono mai, al massimo saltano ad un nuovo indirizzo.
 

 Molti li usano a scatola chiusa, sperando che funzionino...
....sinceramente, un tale comportamento IMHO mi pare un po' azzardato e 
non proprio di uno scienziato serio...
Allora, se davvero il codice e' incomprensibile, e non si e' molto certi 
del suo corretto funzionamento, tanto vale riscriverlo una buona volta 
da zero, con criteri piu' moderni di software-engineering...
Dan

 ha scritto nel messaggio
news:MPG.1b364d247...@powernews.libero.it...

beh purtroppo riscrivere certi codici "costa" tantissimo e dietro ci sono
logiche anche politiche...ad esempio al Cern sono anni che passano da un
linguaggio all'altro. Prima c'è stato il periodo d'oro del fortran poi sono
passati al  C, poi al C++, adesso tornano al fortran90...insomma si va
dietro alle mode e questo non fa bene alla ricerca. Sono rimasto parecchio
male quando mi hanno detto che in un grosso esperimento al Cern non usavano
un sistema di "distribuzione" del codice, cioè nel senso che decine di
ricercatori lavoravano ognuno al proprio pezzo di codice, provavano per
conto loro e ogni tanto giravano da un ufficio all'altro con un floppy per
fare le prove. Mi ricordo che quando gli ho detto che esisteva "visual
source safe" o programmi simili sono cascati dalle nuvole. Mah...

 volta da zero, con criteri piu' moderni di software-engineering...
Ti ha risposto kaled.
Non ho nessuna intenzione di difendre una certa pratica che e'
difficile chiamare scientifica, tanto piu' che personalmente ho fatto
uso molto molto di rado di packages preconfezionati: di solito i
programmi tendo a scrivermeli il piu' possibile da solo.
Pero' va pure tenuto conto che questa e' una pratica possibile solo
finche' non si supera un certo livello di complessita'.
Inoltre c'e' l'aspetto della specializzazione: un fisico di solito
vuol fare il fisico, non il programmatore; spesso non ha le competenze
ne' la forma mentis per affrontare problemi di software complesso.
D'altra parte in certi casi la fisica entra nel software in modo
determinate, per cui non puoi facilmente affidarne la realizzazione a
un programmatore che nonconosca il problema.
Allora occorrerebbe mettere su un gruppo di lavoro, che s'impegni per
non si sa quante ore ... e intanto l'esperimento sta fermo...
Insomma, a farla corta, questa e' solo una delle molte facce di un
problema che mi e' gia' capitato di citare in questo NG, circa
l'indirizzo che ha preso la ricerca fisica: esiste un rischio non
trascurabile che finisca per collassare sotto il suo stesso peso...


 trascurabile che finisca per collassare sotto il suo stesso peso...
Sarei curioso di leggere i tuoi pareri... ricordi per caso il titolo del 
thread in cui ne hai discusso?
Ti riferisci ad esempio al fatto che attualmente gli esperimenti sono 
eseguiti da molte persone, al discorso della cosidetta "Big Science" che 
nacque verso la seconda guerra mondiale col progetto della bomba atomica 
americana?
In effetti, ad esempio, se un certo esperimento molto importante va 
bene...il premio a chi va? Danno il Nobel a 100 persone? :)
Che soluzione proporresti al problema cui hai accennato nel tuo post?
Thnx
Ciao,
Dan

 post?
Si tratta di problemi strutturali, o se preferisci storici; come puoi
pensare che un "signor nessuno" possa proporre delle soluzioni?
E anche se venissero proposte da persone con grandissima autorita',
pensi forse che questo basterebbe cambiare le cose?



http://www.markino.net/ridere/fortran.huk.htm
Questa versione italiana non mi convince molto (non
si capisce neppure perche' si parli di mangiatori di
ciocori'... l'originale "quiche eater" ha un senso
preciso, anche se poco politically correct). Molto
meglio l'originale. Per esempio, in inglese la
battuta di Wirth su come si debba pronunciare il suo
nome suona ben diversa:
"You can either call me by name, pronouncing it
'Veert', or call me by value, 'Worth'."
Ciao
Paolo Russo
P.S. Pur essendo programmatore preferisco astenermi
dal consigliare linguaggi basandomi sulla mia
esperienza personale; dipende tutto dall'ambito.
Altrimenti dovrei consigliare a tutti di usare C e
assembler... poi sulla programmazione a oggetti ho
idee balzane, penso che dovrebbe essere proibita ai
minori di dieci anni di esperienza su linguaggi
"normali", ma qui lo dico e qui lo nego...

 pensare che un "signor nessuno" possa proporre delle soluzioni?
Beh, la Fisica ha fatto passi da gigante in questi ultimi decenni: 
fisica atomica, meccanica quantistica con relative ricadute tecnologiche 
in elettronica, computer, ecc.
Sentire che si sia arrivati ad una specie di "vicolo cieco", ad uno 
"stallo" per la ricerca, a me personalmente fa un po' "impressione"...
Pertanto, se hai delle idee per invertire questa tendenza, a me 
piacerebbe saperle, se non altro per curiosita' intellettuale. E poi, se 
la situazione e' critica, se hai delle buone idee, perche' quelli "ai 
piani alti" non dovrebbero ascoltarle??
Inoltre, sinceramente, credo che ci siano "signor nessuno" che hanno 
intelligenza e buone idee da vendere, mille volte meglio dei cavalieri 
alti ufficiali membri dell'accademia xyzk... :)
Ciao
Dan

 piani alti" non dovrebbero ascoltarle??
No: non le ho.
Oppure  quelle poche che ho vedo da me che sono del tutto impraticabili
Non resta che sperare che nonostante tutto qualcosa possa ancora venir
fuori, ma certo non sono ottimista ... non lo sono mai stato.


 venuto dopo.
Ma si tratta sempre di circa 20 anni eccezionali rispetto ad almeno 4 
secoli di fisica. Perche' mai dovremmo avere rivoluzioni concettuali 
profonde ogni 10 anni ?
Io preferisco pensare che siamo ancora in una fase (che potrebbe essere 
lunga) di metabolizzazione di tutto quello che e' stato fatto nel secolo 
scorso (e non solo nei primi 20 anni!). La preoccupazione per la 
mancanza di "nuova fisica" preferisco lasciarla da parte. Vedo ancora 
tanta "vecchia fisica" ancora da fare...
Giorgio

 Vedo ancora tanta "vecchia fisica" ancora da fare...
Non c'e' dubbio. Ma la tenpo stesso c'e' molta gente che si affanna,
sia in campo teorico che sperimentale, e il mio problema e' che forse
si affanna in direzioni sbagliate.
Inoltre alcune delle cose che ho lamentato, per es. l'eccesso di
specializzazione, l'aumento delle pubblicazioni, credo siano un
problema comune alla "vecchia" come alla "nuova" fisica.


 esempio...
...
In parte la diversa stima sull' evoluzione della fisica nello scorso 
secolo, penso dipenda da dove si mette lo spartiacque tra trovare i 
principi generali e applicarli.
Io penso che se ci si restringe alle rivoluzioni concettuali profonde, 
MQ e relativita' restano isolate rispetto a quasi tutto quello che e' 
stato fatto nell' 800 e dividono con la teoria copernicana e la 
meccanica di Galilei e Newton il ruolo di linee di frattura  non solo 
nell' ambito tecnico della ricerca fisica ma anche al di fuori in ambito 
filosofico-epistemologico.
In ambito strettamente fisico concordo sulla tua lista di rivoluzioni 
concettuali per l' 800. Ma allora fammi fare la mia lista analoga (e 
frettolosa) per il secondo 900:
- teoria della superconduttivita'
- fisica  dei fenomeni critici
- dinamica dei sistemi complessi (non integrabilita' e chaos incluso)
- unificazione elettrodebole
- fisica computazionale
Si tratta di "rivoluzioni" tecniche, la  percezione della cui importana 
e' rimasta molto all' interno della comunita' degli addetti ai lavori (e 
la iperspecializzazione contemporanea non aiuta). Pero' io credo che si 
tratti di vere rivoluzioni, non solo di applicazioni di principi gia' noti.
A meno di non voler sostenere che anche Copernico ha applicato un 
principio gia' noto (il moto circolare) :-)
A margine, direi che comunque la discussione non e' oziosa: io credo che 
l' immagine che una disciplina ha di se' e' importante. La fisica di 
oggi mi sembra che abbia un po' la tendenza a volgersi un po' troppo 
indietro a contemplare gli anni scintillanti del primo novecento 
relegando tutto il resto (e non e' poco!) a semplice applicazione di 
cose gia' fatte. Io devo dire che resto affascinato da un' immagine STM 
  o dalla teoria della rinormalizzazione come quando  rileggo le pagine 
di  Heisenberg o Einstein.
E vorrei che un po' di questo fascino passasse anche al di fuori della 
cerchia degli addetti ai lavori.
Giorgio

 cerchia degli addetti ai lavori.
Come vedi, qualche volta cerco anche di farlo...
Non di rado dico anche: "Ma secondo voi la 'fisica moderna' finisce
con relativita' e m.q.? Oppure bisogna saltare ai bosoni di Higgs?"
Percio' su questo sono d'accordo.
Eppure resto della mia idea su quello che ho detto.
Per es. la rinormalizzazione non mi entusiasma. In fondo e' solo un
modo ingegnoso per mettere delle pezze a una procedura teorica
sostanzialmente scorretta nelle basi matematiche...


 sostanzialmente scorretta nelle basi matematiche...
...
Mi viene adesso il dubbio che stiamo pensando alla rinormalizzazione da 
prospettive diverse. Io pensavo piu' al RG come teoria dei fenomeni 
critici che alla rinormalizzazione in QFT.
Giorgio