View Full Version : Consigli programmazione scientifica
Salve a tutti... è il mio primo post su questo forum :help: . Vi spiego subito il mio dilemma: conosco (decentemente) il pascal come linguaggio di programmazione, ma vorrei un attimo "evolvermi" e spostarmi su qualcosa di + performante :D . Premetto che compilo codice soprattutto per soluzioni di tipo scientifico... quindi su quale linguaggio dovrei orientarmi? :stordita: Venendo dal pascal mi hanno consigliato il c e il delphi. In particolare il delphi mi sembra assomigli molto al VB come impostazione. A me cmq serve un linguaggio che supporti in modo dignitoso matrici, funzioni matematiche e grafici (che non sia il matlab! :p). Grazie a tutti per i consigli :cool:
Ziosilvio
09-02-2007, 11:35
A me cmq serve un linguaggio che supporti in modo dignitoso matrici, funzioni matematiche e grafici (che non sia il matlab! :p)
Python (http://www.python.org/) con i moduli SciPy (http://www.scipy.org/) e NumPy (http://numpy.scipy.org/) è potente quanto Matlab, e più versatile.
Se la tua biblioteca ce l'ha, da' un'occhiata al libro di Hans Petter Langtangen, "Python Scripting for Computational Science" èdito da Springer.
Python (http://www.python.org/) con i moduli SciPy (http://www.scipy.org/) e NumPy (http://numpy.scipy.org/) è potente quanto Matlab, e più versatile.
Se la tua biblioteca ce l'ha, da' un'occhiata al libro di Hans Petter Langtangen, "Python Scripting for Computational Science" èdito da Springer.
Grazie ZioSilvio, cercherò di informarmi meglio su Python... visto che ne so ben poco :fagiano: . Il libro che mi consigli mi manca... cercherò tra gli amici ;) !
Ah dimenticavo :doh: ... visto che è importante... utilizzo Windows XP :read:
ma perchè non il matlab?
Concordo ;)
Beh il matlab già un pò lo conosco, volevo un'altra alternativa a questo :mc:
Anche perchè fare qualcosa più veloce di Matlab è difficile, se non sfruttando casi specifici.
Si infatti Matlab è ottimo sia per versatilità (praticamente puoi farci tutto) che per velocità... però era solo un consiglio, perchè visto che appunto vorrei cimentarmi in un nuovo linguaggio (sintassi compresa! :( ) mi interessava un parere su quello che offriva di + in campo matematico :O.
Ragazzi allora mi consigliate o il Fortran o il Python... se non ci sono nuove mi butto su questi :D
Il Python a prestazioni è sicuramente il più inferiore fra quelli proposti, infatti è un linguaggio interpretato.
I linguaggi matematici per antonomasia sono il Fortran (usato nei supercomputer dei grandi centri di calcolo parallelo) e il Lisp (usato per l'intelligenza artificiale). Anche certi dialetti Lisp sono interpretati...di più nin so :)
Entrambi hanno ambiti applicativi piuttosto ristretti, ma molto inerenti la matematica. Il Fortran soprattutto è IL linguaggio per le simulazioni (fisiche, chimiche, meteorologiche e chi più ne ha più ne metta).
In alternativa va bene qualsiasi linguaggio compilato (C, C++) o con compilatore JIT (Java, .Net) con le adeguate librerie. Sempre che siano le prestazioni che cerchi.
Il Python sicuramente offre un'ottima potenza espressiva, ma riguardo alle prestazioni come ti dicevo ne risente un po'.
repne scasb
10-02-2007, 11:20
Il Fortran
Condivido il Fortran, soprattutto, per la mole notevole di librerie a disposizione, di qualche ordine di grandezza piu' estese di quanto disponibile per MatLab.
repne scasb
10-02-2007, 11:39
ma lo conosci il matlab??
Si.
vediti un pò...[CUT]
Matlab risale alla fine degli anni 80 inizio anni 90. Il Fortran, risale al 1954, trent'anni di vantaggio vorranno pur dire qualcosa.
Il Python a prestazioni è sicuramente il più inferiore fra quelli proposti, infatti è un linguaggio interpretato.
Quel che conta sono le performance delle librerie usate (SciPy,NumPy...), che sono in effetti scritte in linguaggi piu' performanti. Il python serve come collante. Non molto differente da quel che succede in matlab.
Comunque bisogna vedere che tipo di elaborazione scientifica l'autore del thread intende. Ad esempio se non hai a disposizione una macchina fortemente parallela da farci girare del calcolo numerico, non vedo Fortran cosi' avvantaggiato (ma ammetto che della cosa sono a digiuno), soprattutto ora che le GPU stanno diventando un surrogato economico di tali macchine.
repne scasb
10-02-2007, 12:23
dai, cosa c'entra?
Definendo M come la massa di librerie a parita' di qualita' disponibili per Fortran e MatLab si ha che:
M=t*P*C
Dove t e' il tempo necessario allo sviluppo, P sono gli uomini che hanno partecipato allo sviluppo di dette librerie, C e' la capacita' media in termini di realizzazione dei suddetti uomini.
Da cui la mia affermazione: "trent'anni di vantaggio vorranno pur dire qualcosa"
Usa MATLAB!!! Per il calcolo scientifico è il top... Se vuoi proprio imparare un altro linguaggio (anche per migliorare le prestazioni Matlab) impara il C... Sono numerose le librerie già fatte che puoi trovare come le Numerical Recepies (fai una ricerca su internet e troverai il libro gratuito)...
Il C purtroppo non permette di fare grafici... Io faccio così cioè scrivo codice Matlab e le parti più lente le scrivo in C (il C è moooolto più veloce) così metto insieme la versatilità di Matlab e la velocità del C... :)
Diciamo che il Fortran è più orientato al calcolo distribuito di grandi moli di dati, mentre Matlab all'applicazione stand alone.
Ma non dimentichiamoci che Matlab non è solo un insieme di funzioni per il calcolo, ma ci sono anche moltissimi tool per la simulazione ed il controllo dei sistemi (comprese trasformate e antitrasformate varie) che magari al matematico non servono (mentre all'ingegnere sì).
Il Fortran come ho scritto è più orientato alle simulazioni fisiche ed ai calcoli matematici di notevoli quantità di dati. Spesso per roba computazionalmente non calcolabile nel tempo vita di una macchina desktop ;)
Quindi secondo me sono applicazioni disgiunte:
- Matlab è adatto a situazioni in cui il fine è il risultato, in cui il tempo computazionale è limitato
- Fortran è adatto a situazioni in cui il tempo di calcolo e di conseguenza la qualità dell'algoritmo è il punto cruciale, soprattutto in situazioni di data crunching massivo (in cui bsogna applicare lo stesso algoritmo molte volte)
Da cui la mia affermazione: "trent'anni di vantaggio vorranno pur dire qualcosa"
Sì e no. Anche perchè molti degli algoritmi utilizzati in Matlab sono derivati dall'esperienza del Fortran. Non so Matlab, ma ad esempio gli algoritmi di Octave sono scritti in Fortran.
Attenzione che Matlab non è un vero e proprio linguaggio di programmazione...se ci si mettesse ad implementare tutti gli algoritmi presenti in Matlab con il linguaggio stesso intepretato di Matlab le prestazioni sarebbero minime.
Quello che ha di buono Matlab è l'avere una grande libreria che mette a disposizione dell'utente. Al contrario con Fortran un'algoritmo si può ottimizzare fino all'osso sfruttando tutti i casi particolari che si possono avere nel problema da analizzare.
Piccolo OT: esistono anche alternative free a Matlab: il già citato Octave oppure SciLab (che tra l'altro ha un traduttore da Matlab a Scilab). Senza contare che SciLab fa cose che Matlab "base" non fa senza il tool per il calcolo simbolico.
Piccolo OT: esistono anche alternative free a Matlab: il già citato Octave oppure SciLab (che tra l'altro ha un traduttore da Matlab a Scilab). Senza contare che SciLab fa cose che Matlab "base" non fa senza il tool per il calcolo simbolico.
Quoto in favore di scilab anche se effettivamente matlab ha una libreria più ampia
Ragazzi grazie a tutti per le dritte... tutto molto interessante. Mi sembra di capire che vi dividete nei fautori del c e fortran e dall'altra parte quelli del matlab. Certamente (per quel poco che ne so) sono due impostazioni diverse del problema... sicuramente i primi sono + azzeccati per simulazioni pesanti. Ho visto anche qualcosa riguardo scilab e python (+ librerie). In più mi è stato consigliato di vedere anche il Mathcad, devo dire molto simile al matlab come impostazione e scopi.
Vi aggiorno sulla situazione... ho iniziato a vedermi un pò di fortran, utilizzo Microsoft fortran powerstation 4, lo conoscete? è completo come compilatore o mi consigliate di provare altri?:cool:
sheijtan
19-02-2007, 10:35
Vi aggiorno sulla situazione... ho iniziato a vedermi un pò di fortran, utilizzo Microsoft fortran powerstation 4, lo conoscete? è completo come compilatore o mi consigliate di provare altri?:cool:
Va bene il fortran, ma visto che stai imparando, impara il fortran95. il fortran77 per uno che inizia a programmare va evitato come la peste imho.
g95 è il compilatore fortran95 della GNU. Disponibile anche per windows: http://www.g95.org (a gratis :D )
sheijtan
19-02-2007, 10:50
Dimenticavo. Anche se non può competere con il fortran come mole di librerie per il calcolo numerico, il C può essere usato per il calcolo numerico. Cmq vale la pena usare il C *se e solo se* già lo conosci. Ad es. potresti provare le GSL1.8 (gnu scientific library) libreria piuttosto vasta per il calcolo numerico gratis e scritta in C (compatibile con C++).
Ottimo... cmq ho visto che esistono dei programmi che trasformano codice fortran in c automaticamente. Si ho letto... dal fortran77 al 90 c'è stata una mezza rivoluzione e praticamente, a quanto ho capito, il 77 è mezzo obsoleto. Ma per le librerie esistono siti dove scaricarne di gratuite? :rolleyes:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.