PDA

View Full Version : consiglio: quale linguaggio??


miki_pisa
03-10-2007, 07:09
salve,
premetto che non sono un informatico e oltre al pascal (su cui ho fatto un esame) non conosco alcun linguaggio di programmazione.
Vorrei imparare un linguaggio di programmazione; la domanda e':
qual'e' quello piu' adatto per scrivere programmi di calcolo/simulazione numerica? All'universita' alcuni professori fanno usare il fortran; mi chiedevo se anche il c++ e' adatto a questo scopo o piu' indicato per altre applicazioni.


tnx

cdimauro
03-10-2007, 07:17
Dipende da quello che ci devi fare.

Se si tratta di operazioni computazionalmente pesanti, il Fortran è il linguaggio più adatto.

Se invece devi soltanto modellare un problema, esistono diverse alternative che ti permettono di sbrigarti molto più velocemente.
Fra queste Mathlab è molto conosciuto, ma ormai stanno prendendo piede anche linguaggi come Python che hanno librerie ad hoc per il calcolo scientifico: http://wiki.python.org/moin/NumericAndScientific

cionci
03-10-2007, 14:20
Cesare via...non mi sembra il caso di mettere Python dove non c'entra niente. Python di suo ha prestazioni di calcolo di uno o due ordini inferiori rispetto a C++ o Fortran...si vede nel link che avevi postato te nell'altra discussione.
Il fatto che sia necessaria una libreria esterna (non scritta in Python) per ottenere prestazioni decenti non depone a suo favore, anche perché gli altri linguaggi di librerie matematiche/algebriche ne hanno a bizzeffe.

miki_pisa: Fortran è la scelta migliore, anche perché ha un approccio molto vicino al linguaggio matematico. C e C++ hanno ottime prestazioni, ma necessitano di librerie esterne per ottenere la stessa espressività del Fortran. Inoltre c'è anche un altro vantaggio per Fortran: è il linguaggio di default per i Job dei supercomputer ;)

cdimauro
03-10-2007, 14:49
Cesare via...non mi sembra il caso di mettere Python dove non c'entra niente. Python di suo ha prestazioni di calcolo di uno o due ordini inferiori rispetto a C++ o Fortran...si vede nel link che avevi postato te nell'altra discussione.
Il fatto che sia necessaria una libreria esterna (non scritta in Python) per ottenere prestazioni decenti non depone a suo favore, anche perché gli altri linguaggi di librerie matematiche/algebriche ne hanno a bizzeffe.
L'avevo già scritto che per questioni strettamente prestazionali la scelta migliore è quella di Fortran. ;)

Per il resto non sono certo io che che cito Python come linguaggio da usare per la modellazione di problemi scientifici: troverai non poche informazioni in merito se fai qualche ricerca.
miki_pisa: Fortran è la scelta migliore, anche perché ha un approccio molto vicino al linguaggio matematico. C e C++ hanno ottime prestazioni, ma necessitano di librerie esterne per ottenere la stessa espressività del Fortran. Inoltre c'è anche un altro vantaggio per Fortran: è il linguaggio di default per i Job dei supercomputer ;)
Non mi sembra che proprio il Fortran abbia un approccio vicino al linguaggio matematico. E' il linguaggio più usato per calcoli matematici, ma questo perché è stato il primo linguaggio creato allo scopo.

variabilepippo
03-10-2007, 16:21
Ci sono ottime librerie per C++ che competono in quanto a prestazioni con l'equivalente codice Fortran.

La scelta del linguaggio va valutata in funzione del problema specifico, delle conoscenze pregresse e del budget a disposizione.

PGI-Bis
03-10-2007, 20:08
Come nota di curiosità cito Fortress.

http://fortress.sunsource.net/

Lingua sviluppata da Sun Microsystem per il progetto Darpa HPC (da cui, per la cronaca, Sun è stata buttata fuori, restano in gara IBM con il suo X11, un dialetto Java, e Cray con Chapel).

E' ancora in sviluppo quindi è, appunto, "una curiosità accademica". Qui c'è un esempio di programma scritto in Fortress:

http://research.sun.com/projects/plrg/faq/NAS-CG.pdf

miki_pisa
03-10-2007, 21:32
circa l'apprendimento cosa sapete dirmi? (premesso che per l'esame di informatica ho studiato il pascal)
Fortran vs C++: qual'e' quello piu' problematico? (visto il linguaggio sporco, presumo il c++)

Il posto in cui faro' girare i codici di calcolo dispone di computer cluster (non so quante unita').
Forse sarebbe meglio se chiedessi a quelli del centro quale linguaggio sarebbe meglio imparare ...

cionci
04-10-2007, 08:35
SArebbe meglio...ma al 90% ti diranno Fortran ;) Soprattutto visto il cluster.

cdimauro
04-10-2007, 08:46
circa l'apprendimento cosa sapete dirmi? (premesso che per l'esame di informatica ho studiato il pascal)
Fortran vs C++: qual'e' quello piu' problematico? (visto il linguaggio sporco, presumo il c++)

Il posto in cui faro' girare i codici di calcolo dispone di computer cluster (non so quante unita').
Forse sarebbe meglio se chiedessi a quelli del centro quale linguaggio sarebbe meglio imparare ...
Prima informati se il problema da risolvere richiede grossa potenza di calcolo, e poi decidi.

Comunque per la mia esperienza Fortran è più semplice da programmare rispetto al C++, e per questo tipo di applicazioni (enorme quantità di calcolo) è più efficiente (ci sono dei compilatori che sono dei veri e propri gioielli, frutto di decenni di ricerca).

cdimauro
04-10-2007, 13:13
http://scipy.org/PerformancePython

okay
04-10-2007, 16:15
salve,
premetto che non sono un informatico e oltre al pascal (su cui ho fatto un esame) non conosco alcun linguaggio di programmazione.
Vorrei imparare un linguaggio di programmazione; la domanda e':
qual'e' quello piu' adatto per scrivere programmi di calcolo/simulazione numerica? All'universita' alcuni professori fanno usare il fortran; mi chiedevo se anche il c++ e' adatto a questo scopo o piu' indicato per altre applicazioni.


tnx

vb e c++

variabilepippo
04-10-2007, 16:18
Mi chiedo come si possa suggerire il Visual Basic in risposta alla domanda "quale è il linguaggio piu' adatto per scrivere programmi di calcolo/simulazione numerica?". :confused:

Anche presupponendo un engine realizzato in Fortran/C++/C ci sono piattaforme migliori per sviluppare il layer di visualizzazione dei dati.

okay
04-10-2007, 16:52
Mi chiedo come si possa suggerire il Visual Basic in risposta alla domanda "quale è il linguaggio piu' adatto per scrivere programmi di calcolo/simulazione numerica?". :confused:

Anche presupponendo un engine realizzato in Fortran/C++/C ci sono piattaforme migliori per sviluppare il layer di visualizzazione dei dati.



quale è il linguaggio piu' adatto per scrivere programmi di calcolo/simulazione numerica?"


non è specificato che tipo di calcoli... certo se deve simulare elettroni che girano intorno al nucleo e fanno salti quantici calcolando l'energia persa o presa il vb non và bene ma neanche il c++. Io l'ho fatto in c++ ma cmq è pesante nella parte grafica.

io ho usato il vb per la riduzione delle colonne al totocalcio e con i pc di ora non mi posso lamentare della velocità di esecuzione.

Se deve fare calcoli non simulati va bene qualsiasi linguaggio:
rata = ((capitale * tax) / (1 - ((1 + tax) ^ -Anni)) / 12)

ho consigliato vb e c++ perchè uso questi non conosco il fortran

Cosa ha il fortran, a titolo informativo, di superiore nei calcoli?
Come approccia all'fpu.

Le sue librerie sono + performanti?... ma passano sempre per il chip della fpu?

variabilepippo
04-10-2007, 17:05
non è specificato che tipo di calcoli... certo se deve simulare elettroni che girano intorno al nucleo e fanno salti quantici calcolando l'energia persa o presa il vb non và bene ma neanche il c++. Io l'ho fatto in c++ ma cmq è pesante nella parte grafica.

È un problema di implementazione, buona parte del "software scientifico" moderno viene sviluppato proprio in C/C++, ormai il divario prestazionale tra C++ e Fortran è ridotto al minimo. In questo articolo (http://ubiety.uwaterloo.ca/~tveldhui/papers/DrDobbs2/drdobbs2.html) risalente a 10 anni fa si discute della computazione scientifica, il titolo è esplicito: "C++ versus Fortran". Qui (http://www.oonumerics.org/blitz/benchmarks/) puoi trovare alcuni benchmark nei quali si confronta l'uso della libreria Blitz++ con le versioni Fortran.

io ho usato il vb per la riduzione delle colonne al totocalcio e con i pc di ora non mi posso lamentare della velocità di esecuzione.

Il codice VB è di svariati ordini di grandezza più lento dell'equivalente soluzione implementata in C/C++/Fortran. Alcuni "test" di casa Microsoft cercano di dimostrare le "ottime" performance di VB, peccato che in seguito abbiano ammesso di aver manipolato i risultati. :mc:

Ziosilvio
04-10-2007, 17:15
Se il tuo motto nel calcolo numerico è "io non corro, volo basso": Fortran.
Se invece la velocità non è davvero il primo dei tuoi requisiti: Python + libreria Numeric + un buon manuale, ad esempio quello di Langtangen; che è quello che sto usando adesso io, e mi ci trovo benissimo.

Per la terza via, faccio notare che un saggio una volta ha detto: "Python rompe il c##o a Matlab in termini di velocità dell'interprete, chiarezza del linguaggio, scalabilità e prestazioni su array piccoli. Su array grandi, Python (con numarray) e Matlab hanno prestazioni confrontabili. Matlab si presenta con una documentazione più graziosa e un'interfaccia grafica in stile taccuino."

cdimauro
04-10-2007, 19:04
Che ne pensi di NumPy, e di SciPy?

cdimauro
04-10-2007, 19:05
È un problema di implementazione, buona parte del "software scientifico" moderno viene sviluppato proprio in C/C++, ormai il divario prestazionale tra C++ e Fortran è ridotto al minimo. In questo articolo (http://ubiety.uwaterloo.ca/~tveldhui/papers/DrDobbs2/drdobbs2.html) risalente a 10 anni fa si discute della computazione scientifica, il titolo è esplicito: "C++ versus Fortran". Qui (http://www.oonumerics.org/blitz/benchmarks/) puoi trovare alcuni benchmark nei quali si confronta l'uso della libreria Blitz++ con le versioni Fortran.

Il codice VB è di svariati ordini di grandezza più lento dell'equivalente soluzione implementata in C/C++/Fortran. Alcuni "test" di casa Microsoft cercano di dimostrare le "ottime" performance di VB, peccato che in seguito abbiano ammesso di aver manipolato i risultati. :mc:
Non immaginavo che il C++ fosse arrivato così avanti.

Grazie per le informazioni e per i link. :)

Ziosilvio
05-10-2007, 10:36
Che ne pensi di NumPy, e di SciPy?
Non molto, per adesso: sto seguendo il Langtangen, che mi sembra usi Numeric, e finora sono veramente agli inizi.

cdimauro
05-10-2007, 13:24
OK grazie (lo chiedevo perché NumPy deriva da Numeric, che stai usando, e SciPy a sua volta usa NumPy, per cui pensavo che li avessi già provati). :)