PDA

Visualizza la versione completa : Linguaggi: scegliere in base al miglio compromesso


gemini_76_it
19-10-2004, 22:30
I programmi di calcolo di strutture per l'ingegneria risolvono i telai mediante la scrittura di sistemi di equazioni di equilibrio ai nodi. Se siamo nello spazio per ogni nodo necessitano 6 equazioni di primo grado, una per ogni grado di libertà (componente dello spostamento).
Detto che le aste saranno caricate in un certo modo e in un certo modo vincolate l'una all'altra, per cui è relativamente agevole (non è vero) scrivere la struttura delle equazioni e del sistema (formalmente scritto come equazione matriciale), il problema sarebbe solo quello di avere un algoritmo che lo risolva. Ok, l'algoritmo ce l'abbiamo, e per ogni linguaggio di programmazione ci sarà bisogno di una certa sintassi per la sua traduzione.
Mettiamo che si debba risolvere una struttura con 50 nodi, per cui ne viene fuori un sistema lineare di 300 equazioni in 300 incognite.

Ma veniamo alle domande:
? in quanto tempo sarà avviato il programma creato e risolto il sistema scrivendo il solutore in:
C/C++
C#
Visual Basic
Python
Java
Php-Gtk

? E mediamente, ad esempio, un listato di 100 righe in C a quante righe di codice corrisponderebbe in:
C++
C#
Visual Basic
Python
Java
Php-Gtk

? Esistono dei tools GRATUITI che consentono di creare le interfacce di programmi alla maniera Drug&Drop per:
C++
C#
Python
Java
Php-Gtk

?Se sì, che librerie usano

Si può, ad esempio:
a) creare l'interfaccia che raccoglie i dati di input con un certo linguaggio (chiamiamolo programma Input.exe) che dispone di RAD così da fare velocemente la GUI pagando dazio in velocità di esecuzione,
b) e poi passare i dati raccolti ad un programma Solutore.exe creato con un altro linguaggio più effifiente?
In altre parole, possono dialogare due programmi scritti con linguaggi diversi in modo da trovare un ottimo compromesso tra tempo di sviluppo del codice e tempo di esecuzione dello stesso, senza perdere molto in efficienza e sicurezza/affidabilità?

Grazie a quanti potranno e vorranno dare risposta.
:ciauz:

KornShell
20-10-2004, 00:37
Python :)

Scipy (scientific tools for python).
100 righe di codice C saranno più o meno 30 in python.
Per la GUI hai solo da scegliere, ti consiglio pyGTK.
Il RAD per creare la GUI è Glade.

Un sistema di sole 300 equazioni non fa differenza in termini di velocità con le attuali risorse di processori.

Python può essere esteso con moduli scritti in C

mnkt
20-10-2004, 10:22
non so bene xké hai bisogno di sapere quante righe diventano se in C sono 100 righe.
il C è + veloce di tutti gli altri che hai sopracitato e basta se lo sai usare a modo.
Comunque io tranne Visual Basic e, a meno che tu non debba visualizzare tutto su una pagina Web, php, ti dico tutti vanno bene.
Io in ogni caso di consiglio C, o C++, se hai bisogno di velocità, o se quello non ti interessa lavora in Java (meglio di Python, ci sono + cose e trovi + documentazione) inoltre python è interamente interpretato, (java no), e una JVM la hanno tutte le persone che fanno un minimo di navigazione sul Web....

Ciao
:ciauz:

gemini_76_it
20-10-2004, 10:23
Ah, giustamente il mio post manca di alcune notizie sulla mia precedente esperienza (è un eufemismo :-).
Le mie esperienze appena discrete (ma ormai non mi esercito da diversi mesi) vengono da PHP-GTK, ossia PHP esteso con le GTK per poter scrivere programmi desktop a tutti gli effetti, interpretati, non eseguibili e a codice aperto. Per le cose che ho fatto, calcolo puro mediamente complesso, mi è parso anche abbastanza veloce. Ma purtroppo le cose sono poco mature cosicchè sono ben pochi a programmare in PHP-GTK, di conseguenza sono pochissimi i guru ai quali poter chiedere aiuto. E PHP resta solo ancora uno strumento per applicazioni via browser.
Avevo anche appena appena iniziato a studiare Visual Basic e C. Ma appena appena, giusto qualcuno dei primi esercizi delle varie guide.

Venendo alla tua risposta, KornShell, e di questo ti ringrazio. [Digressione personale] Non avevo dubbi sul fatto che le prime notizie mi avrebbero portato su Python, ho seguito altre discussioni ed ho visto che ai novizi viene quasi sempre caldeggiato l'apprendimento di Python. Anche se mi chiedo: allora come mai ci sono così ochi 3ad su Python rispetto a C/C++ e Java?
vabbè, questa è solo una mia curiosità non una provocazione e non vorrei che si degenerasse, xkè altre sono le risposte che mi interessano.[/Digressione personale]

Scipy è un IDE e non un RAD, esattamente come Active Python? Io ho Active Python 2.3 ed anche Glade. Ma mi pare di capire che Glade è svincolato dall'ambiente Python, e che genera file a se stanti mentre poi il codice py bisogna scriverlo esternamente, giusto?
E i moduli C per Python, sono codice puro C letto o lanciato o su cui in qualche modo lavora Python ?

Cmq, mettiamo allora che il programmone debba risolvere un sistema di 10.000 equazioni (meshature di superfici con elementi a 4/6/8 nodi), ripropongo esattamente le stesse domande del 1° post (xkè chiaramente gradirei anche altri interventi):

1 ? In quanto tempo sarà avviato il programma creato e risolto il sistema scrivendo il solutore in:
C/C++
C#
Visual Basic
Python
Java
Php-Gtk

2 ? E mediamente, ad esempio, un listato di 100 righe in C a quante righe di codice corrisponderebbe in:
C++
C#
Visual Basic
Python
Java
Php-Gtk

3 ? Esistono dei tools GRATUITI che consentono di creare le interfacce di programmi alla maniera Drug&Drop per:
C++
C#
Python
Java
Php-Gtk

4 ? Se sì, che librerie usano

5 ? Si può, ad esempio:
a) creare l'interfaccia che raccoglie i dati di input con un certo linguaggio (chiamiamolo programma Input.exe) che dispone di RAD così da fare velocemente la GUI pagando dazio in velocità di esecuzione,
b) e poi passare i dati raccolti ad un programma Solutore.exe creato con un altro linguaggio più effifiente?
In altre parole, possono dialogare due programmi scritti con linguaggi diversi in modo da trovare un ottimo compromesso tra tempo di sviluppo del codice e tempo di esecuzione dello stesso, senza perdere molto in efficienza e sicurezza/affidabilità?

Quest'ultima mi sembra la domanda più interessante. Una volta, dopo una dimostrazione di un megaprogrammone di calcolo strutturale per l'ingegneria ho sentito dire che in genere, a parte la grafica e l'input che può essere gestita con qualsiasi linguaggio, il SOLUTORE poi viene scritto in FORTRAN, ottimizzato e velocissimo appunto per utilizzo matematico-scientifico. Favole?

Chiedo scusa per i miei POSTONI! Purtroppo ahimè non ho il dono della sintesi. :D

P.S.: non sono così pazzo da pensare di imparare in breve tempo a programmare quelle cose superbe di cui ho parlato, ma solo curioso di sapere. Ovvio che in piccolo poi farò le mie valutazioni. E poi, non si sa mai, come Ingegnere si potrebbe anche lavorare come consulente scentifico per una software house... :D

Loading