Re: C# e Java usati dai fisici?
On 5 Apr, 12:38, MrAsm <m..._at_usa.com> wrote:
> 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.
> Pero' credo anche che in fisica sia richiesta notevole capacita' e
> potenza di calcolo, cosi' mi chiedevo se C# e Java fossero adatti al
> calcolo scientifico, e in che misura fossero usati dalla comunita' dei
> fisici.
>
> Grazie in anticipo
Tu rimani sul vago : "l'ambito fisico"...... cosa e'?
A voler essere piu' precisi bisognerebbe citare almeno il tipo di dati
da elaborare e le metodologie di processamento (dico: algoritmi
distribuiti, algoritmi paralleli, single/multi threaded?... non e' una
cosa banale).
Per cercare di risponderti al meglio, io penso questo:
Java e C# sono cattivi dal punto di vista non-funzionale (cioe'
performances e spreco di risorse) rispetto ai buoni Fortran77/90 e
ancor meglio C/C++ ed ottimo Assembler!
Ovviamente il problema non e' questo!
Volendo assumere (ad ipotesi) che tra una semplice routine ottimizzata
direttamente in Assembler ed una in Java vi corra una differenza
abissale in termini di potenza di calcolo (direi 1/100.... cosi' su 2
piedi) bisogna anche chiedersi un'altra cosa importante:
Ma quanto ti costa programmare in Assembler (tra errori e quant'altro,
e debug etc etc) rispetto a Java?
Ne vale la pena?
Orbene, ancor oggi per real-time processing dei dati satellitari (per
intenderci i dati grezzi che invia il satellite alla gound-station ad
ogni passaggio sull'antenna, che debbono essere tradotti nel minor
tempo possibile ai sistemi back di storage, pena la loro perdita
parziale, oppure sistemi militari balistici per la missilistica...
[PURTROPPO...li farei col pallottoliere, ma e' un'altra questione]) si
usano processi iper ottimizzati: nemmeno C compilato -O4, ma
direttamente assembler {oppure mixed technology: pezzi assembler
accanto a compilati C).
Accanto a questa considerazione ve ne e' un'altra: e' utile oggi usare
ancora algoritmi stand-alone? Cioe' elaborazioni su singole macchine?
Si va verso una struttura distribuita (le GRIDs) che permettono di
aumentare lo sfruttamento di risorse esistenti ed altrimenti perdute
nell'inutile attesa di qualche estemporaneo task: sentito gia' il
SETI_at_home?
Un lavoro che viene fatto non da una sola macchina mentre le altre
100000 della rete sono a non far nulla; bensi' un lavoro che e'
distribuito nella speranza che le 100000 macchine della rete possano
lavorarlo in sinergia!
A questo punto torna utile l'utilizzo di linguaggi moderni (come java)
che rende molto piu' maneggevole la costruzione di sistemi cosi'
concepiti.
Received on Fri Apr 06 2007 - 10:47:52 CEST
This archive was generated by hypermail 2.3.0
: Thu Nov 21 2024 - 05:10:12 CET