Re: C# e Java usati dai fisici?

From: Paolo <fpNO_ALLO_SPAM.box_at_tiscali.it>
Date: Fri, 06 Apr 2007 22:44:15 +0200

MrAsm ha scritto:
> Salve,
>
> ho notato che esistono diverse librerie e codici scientifici per
> Fortran (anche FORTRAN 77) e C/C++.
> Mi chiedevo che successo (o insuccesso) avessero linguaggi piu'
> "moderni" come Java o C# nell'ambito fisico.
> Che ne dite?
>
> Programmare in C# o Java, grazie alla presenza di garbage collector e
> gestione "automatica" della memoria, renderebbe le cose piu' semplici.
Ciao, non sono un fisico bens� un programmatore di computer e un
progettista (nel campo dell'oleodinamica), sono un perito industriale,
quindi non so cosa fanno i fisici (purtroppo), al massimo so dirti come
fanno gli ingegneri con i quali lavoro, dato che risolviamo problemi (in
questa fase sono pi� che altro loro, anche se io da curioso mi impiccio
sempre, male che mi vada imparo sempre qualcosa) e poi scriviamo del
codice per fare i calcoli (e qu� intervengo io).
Posso comunque parlarti per l'esperienza che mi sono fatto in oltre
dieci anni di lavoro.

Spesso mi trovo a scrivere codice per applicazioni "scientifiche" ad uso
interno nella ditta per la quale lavoro.
Non conosco il C# ma ho avuto qualche esperienza con Java (che ho poi
abbandonato).
Java � drammaticamente lento per il calcolo numerico perch� gira
all'interno di una macchina virtuale. Cio� la CPU non lavora
direttamente sul tuo programma ma elabora un meta-codice.
E' meglio di un linguaggio interpretato come ad esempio il BASIC ma
comunque non � soddisfacente per questo tipo di applicazioni (� molto
buono invece per le applicazioni client/server nelle intranet).
Un programma in C/C++ piuttosto che in Fortran viene invece compilato in
linguaggio macchina e pu� quindi "macinare numeri" alla piena potenza
del processore (o dei processori) installati.
Secondo me un'ottima alternativa � appunto il C++ con la libreria STL,
in questo caso non c'� bisogno di diventar matti con la memoria in
quanto viene gestita automaticamente dai vari container standard della
Standard Template Library.
Ci sono poi algoritmi molto potenti (sempre nella Standard Template
Library) pronti all'uso che facilitano notevolmente la scrittura di
codice robusto e veloce.
La velocit� praticamente non cambia, un buon codice C++ non � pi� lento
di un buon codice in C. I compilatori odierni poi non hanno nulla da
invidiare ad un programma in Assembly, il risultato della compilazione �
praticamente linguaggio macchina sta-ottimizzato e non pseudo-codice
come nei compilatori di 10 e pi� anni fa.

Per la mia esperienza (che non � quella di un fisico, ma per certi
aspetti � quella degli ingegneri con i quali lavoro), con l'uso di
Octave (o Matlab) in molti casi (che � un linguaggio di altissimo
livello) o quando ce n'� bisogno la scrittura di codice in C++ (livello
decisamente pi� basso) � un aiuto validissimo per il calcoli.
Con Java (e forse anche con C#) pur essendo linguaggi molto potenti,
semplicemente aspetti di pi�.

ciao.
Received on Fri Apr 06 2007 - 22:44:15 CEST

This archive was generated by hypermail 2.3.0 : Mon Jan 20 2025 - 04:23:02 CET