Linguaggio più adatto per simulazioni

BluStar2
Buonasera.

Vorrei imparare un linguaggio di programmazione per sviluppare simulazioni come queste:

https://phet.colorado.edu/en/simulations/category/physics

Oggi esistono un marea di possibilità e si è veramente indecisi su quale linguaggio/prodotto scegliere.

Personalmente, vi sembrerà strano, non piace la struttura a parentesi graffe, però è chiaro che bisogna adattarsi al meglio del caso.

La maggior parte delle simulazioni che vedo sono scritte in Java. Non so se è possibile usare anche il VB .NET, la cui sintassi è molto più leggibile, almeno per me. Altre sono scritte con Javascript e mi meraviglia che tale linguaggio permetta di fare tali simulazioni. Forse addirittura sarebbe meglio usare direttamente programmi come Mathematica o Maple. Si può magari usare un linguaggio visuale come Simulink, ma non so se è adatto allo scopo visto che ho letto che viene usato nella progettazioni di sistemi meccanici.

Insomma se qualcuno ha esperienza sull'argomento mi farebbe piacere se mi desse qualche consiglio sulla scelta.

Grazie a tutti.

BluStar

Risposte
apatriarca
Quelle che hai mostrato sono delle semplici animazioni con pochi oggetti e spesso formule abbastanza semplici. Qualsiasi linguaggio è in grado di fornire tali risultati. Non mi stupirei tanto che Javascript sia in grado di gestire tali animazioni, ci sono siti che sono decisamente più pesanti dal punto di vista computazionale. L'aspetto visivo è in effetti probabilmente la parte "più difficile" e una buona libreria nel linguaggio scelto può probabilmente velocizzare di parecchio lo sviluppo. Credo che Mathematica abbia strumenti appositi, ma anche linguaggi come Java. Non ti saprei dire su VB.NET perché non l'ho mai usato. Ma puoi certamente usarlo se ti piace.

Cronovirus
Non so.. non comprendo bene il senso della domanda a dire la verità. Non esiste una risposta giusta, perchè altrimenti troveresti che tutti utilizzerebbero lo stesso linguaggio. Forse ti converrebbe pensare a qual è il linguaggio giusto per te piuttosto. Se sei da solo, il progetto mi sembra ambizioso: nota che per ogni simulazione ci sono più sviluppatori, e non è difficile pensare che ci siano persone che si sono dedicate interamente alla rappresentazione grafica (e solitamente c'è chi si occupa della parte algoritmica e chi della parte grafica, sono figure diverse); è un progetto notevole. Imparare un linguaggio esclusivamente per risolvere un determinato problema lo può fare qualcuno con una certa esperienza, se conosci Java (e compagnia bella) usa quello.

Probabilmente gli unici che possono rivelarti i problemi di ogni linguaggio sono i diretti autori dei programmi: in progetti così complessi solo chi li ha completati sanno realmente quali sono le problematiche che hanno dovuto affrontare.

Non ti piacciono le parentesi graffe? Amerai python.

BluStar2
Grazie per le risposte, ne trarrò delle conseguenze.

Saluti.

Raptorista1
Come già detto sopra, dipende molto da quello che vuoi fare: alcuni linguaggi sono più adatti per certi tipi di simulazioni, altri per altre. Per quanto riguarda la differenza tra chi produce i numeri e chi li traduce in immagini, per compiti semplici le persone possono coincidere, quindi ancora dipende da che tipo di risultato vuoi ottenere.

BluStar2
Buongiorno.

Collegandosi al seguente indirizzo:
https://phet.colorado.edu/en/simulation/legacy/alpha-decay
e cliccando sul tasto DOWNLOAD si può scaricare la simulazione indicata nella pagina, che consiste in un file .jar.

Se non ho capito male questo file è il formato compresso di un'applicazione Java. Scompattandolo con Winrar mi sarei aspettato di trovare un file .class, che è l'applicazione Java, ma in realtà mi ritrovo una marea di cartelle e files.

Potreste spiegarmi per sommi capi il contenuto del file compresso ? E' possibile vedere il listato della simulazione ?

Grazie.
Buona giornata.

BluStar

Cronovirus
Come dicevamo sopra il progetto è di grandi dimensioni, ti basterà entrare nelle sottocartelle e trovare tutti i .class

Se stai solo cercando di eseguire l'applicazione ti basta eseguire il jar.

Cosa vorresti sapere dei file che ci sono nelle cartelle?

BluStar2
Buonasera.
Ho estratto tutti i file class e sono ben ..... 1.463 ...... :-D

Ho provato anche a DECOMPILARE i files e ho trovato solo comandi di IMPORT almeno per i files che ho controllato. Molto probabilmente ci deve stare qualche class con il codice vero e proprio.

A questo punto mI pongo questa domanda:

Ho visto applicazioni di Mathematica della Wolfram i cui codici sono molto più corti. Evidentemente ha dei comandi già pronti che fanno risparmiare codice e tempo rispetto a Java.

Cosa ne pensate ?

Saluti.

Raptorista1
Perché stai cercando di risalire al codice? Non mi sembra una buona idea...
Mathematica ha sicuramente un sacco di comandi che rendono le cose più veloci, questo te lo confermo.

apatriarca
Per prima cosa non è detto (molto poco probabile in realtà) che tutte quelle classi siano state realizzate appositamente per quella animazione. Probabilmente viene utilizzata una qualche libreria per facilitarsi lo sviluppo e la maggior parte delle classi saranno legate a tale libreria. Detto questo, Mathematica ha senza dubbio strumenti più veloci per realizzare questo genere di animazioni. Esiste poi sempre la possibilità di fare ricorso a motori per creare videogiochi che contengono la maggior parte delle funzionalità di cui hai bisogno.

Il metodo meno efficiente è invece quello di cercare di fare reverse engineering di un codice trovato in rete.

BluStar1
Buonasera.
Rimanendo in argomento questa simulazione:
https://phet.colorado.edu/en/simulation/legacy/density
è stata scritta da 10 persone addirittura, a conferma di quanto voi avevate in precedenza scritto. Sono rimasto meravigliato perché si tratta di un file flash.

A questo punto sono portato a pensare che la complessità non risiede nel lato calcoli piuttosto nella rappresentazione grafica del progetto.

Che ne pensate ?

Saluti.

apatriarca
Sinceramente tutte quelle persone mi sembrano tante. Penso che trattandosi di una cosa accademica molte persone siano state messe dentro senza che abbiano necessariamente dato un contributo pratico a livello di codice o grafica. Solo due sono in effetti segnati come sviluppatori. Probabilmente un numero simile avrà contribuito all'aspetto grafico e altri avranno contribuito principalmente con consigli/suggerimenti/commenti/test. Non mi è chiaro cosa ti stupisca dell'uso di flash. Flash è stato usato per realizzare videogiochi molto più complicati e computazionalmente pesanti di quella demo.

Quanta esperienza hai di programmazione esattamente? Ho l'impressione che non sia molta.. Se è così allora mi indirizzerei verso qualcosa tipo Mathematica CDL o verso i motori per fare videogiochi. Questi ultimi hanno infatti spesso già implementate sia funzionalità grafiche che fisiche.

Cronovirus
Se riuscissi ad essere più preciso riguardo alle tue intenzioni e soprattutto alle tue capacità magari potremmo parlare direttamente invece che per mezzi termini

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.