|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#241 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
In compenso se devo realizzare una comunicazione seriale con C# 1.1 ci metto molto di più che a farlo con il C++, perchè nel caso del vecchio C# devo andare a manina a wrappare sua orripilanza Win32, mentre in C++ uso wxCTB e mi ritrovo pure codice multipiattaforma. Con il 2.0 invece il tempo di sviluppo è praticamente alla pari (con leggero vantaggio per il C++ in caso di dati binari, visto che in tal caso c'è da lottare con le conversioni del C#). Il vantaggio sta sempre nel fatto che qualcun altro ha fatto del lavoro che io evito di fare e nel caso di C# e Java questo lavoro svolto da altri è decisamente consistente. |
|
|
|
|
|
|
#242 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Sull'uso delle librerie nulla da dire: è chiaro che velocizzano.
Infatti avevo scritto che la produttività dipende ANCHE dal linguaggio.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#243 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
E spiegami cosa avrei detto di sbagliato. Quella libreria è utilizzata per la gestione di cluster di computer, tu parlavi genericamente di software parallelizzabile, che invece è gestito tranquillamente mediante multi-threading. Inoltre il message passing non è utilizzato solo ed esclusivamente in quel campo ma, tanto per fare un esempio che dovrebbe essere familiare un pò a tutti noi, SOAP e la OOP sono basati sul message passing.
__________________
|
|
|
|
|
|
|
#244 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Il trucco sta nel "tarpargli le ali" Scherzi a parte: considera che gia' un semplicissimo esempio ha mostrato che ci sono dei casi in cui Java ha prestazioni superiori a C++. Questa frase sembrava un'eresia, sembrava che sempre e comunque C++ dovesse essere superiore. Invece non e' cosi', e penso che ormai sia chiaro questo concetto. Quando C++ e' superiore? Quando Java e' superiore? Occorrerebbe tantissimo tempo per investigare, ma scommetto che i progettisti di Java avevano questo concetto bene in mente. Nel caso non l'avessero acquisito bene, cmq ci sta pensando la Microsoft (e' impossibile che la cosa sia sfuggita anche a loro). Secondo me (senza poter provare, e' solo un parere), si possono costruire esempi partendo dal "tarpare le ali" (detto da un pilota .. ESEMPIO (tutto da provare, beninteso): stai realizzando un sistema di scambio messaggi. Nell'architettura prevedi che in caso di ricezione di un messaggio, esso sia reindirizzato ai listener che si sono registrati per averlo. E' una architettura realizzata migliaia di volte, niente di particolare. I notri programmi, dunque, scriveranno: Codice:
MyListener listener; telegramDispatcher.addListener (listener); (Java) Codice:
void messageGot (Telegram telegram); Codice:
void messageGot (Telegram *telegram); Ma... per C++? Come siamo messi a livello sia di correttezza, sia di efficienza? Se avessi scritto Codice:
void messageGot (Telegram telegram); Ho invece scritto usando i puntatori per evitare la copia. Si, ma... siamo sicuri che abbiamo eliminato tutti i nostri problemi? Direi a naso che questa classe di problemi vedra' ancora vincere Java...
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#245 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
__________________
In God we trust; all others bring data |
|
|
|
|
|
#246 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Praticamente nel 90% dei casi i passaggi si fanno per riferimento o per puntatore...se lo fai per copia sei un masichista void messageGot (Telegram &telegram); Prima sei andato a sfruttare una caso (tante classi piccole) in cui il C++ era svantaggiato perché deallocavi subito, tra l'altro a mano... Con una politica di deallocazione più furba il C++ sarebbe tornato nuovamente in testa,,, |
|
|
|
|
|
|
#247 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
Quote:
Non so, spiegami come fai con i thread Java a gestire un algoritmo parallelo che gira su 128 processori ad esempio. Se non usi una libreria apposita, come fai a mappare ogni thread su un processore? Il veri algoritmi paralleli sono quelli nati per girare su più processori. Con il multi-threading te simuli questo comportamento, ma in realtà i programmi sotto girano sempre in maniera sequenziale se hai a disposizione un solo processore fisico.. Se ne hai più di uno già il discorso cambia e si può parlare di parallelizzazione. Ultima modifica di Unrue : 03-01-2008 alle 18:00. |
|
|
|
|
|
|
#248 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
I problema è che i thread sono fatti per le architetture a memoria condivisa...al contrario i super computer non lo sono...per questo il message passing viene in aiuto |
|
|
|
|
|
|
#249 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Senza considerare che, come sottolineato da ^TiGeRShArK, il Message Passing non è utilizzato/utilizzabile soltanto per implementare sistemi di elaborazione parallela, dunque non sussiste una relazione biunivoca tra MPI ed elaborazione parallela...
|
|
|
|
|
|
#250 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
Quote:
|
|
|
|
|
|
|
#251 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#252 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
Quote:
|
|
|
|
|
|
|
#253 | |||
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Quote:
Quote:
|
|||
|
|
|
|
|
#254 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
Dire che una libreria è usata principalmente per quello scopo è bel diverso dal dire che c'è una relazione biunivoca tra la libreria e lo scopo stesso.. Il che equivarrebbe a dire che la libreria in questione è stata costruita SOLO per quello. Cosa che non ho mai affermato. Mi pare che si stia cercando il cosiddetto pelo nell'uovo..
E' poi che MPI sia usato principalmente per il calcolo distribuito è un dato di fatto, non vedo cosa tu abbia da obbiettare.. Ultima modifica di Unrue : 03-01-2008 alle 18:19. |
|
|
|
|
|
#255 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#256 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#257 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
Continua a non tornarmi. In un singolo nodo di un supercomputers, possono esserci ad esempio 8 processori. Ebbene, la memoria globale del supercomputer non è condivisa ok, ma quella del nodo si. Quindi in teoria potrei usare thread per fare comunicazioni intranodo. Forse il message passing si attiva quando è richiesta la comunicazione tra nodi diversi?
|
|
|
|
|
|
#258 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Se sono processori x86 o Risc tradizionali allora sì. Se la memoria del nodo è condivisa potresti usarla per la comunicazione fra i thread, ma probabilmente non si usa per mantenere una certa uniformità in modo da non dover trattare diversamente thread locali tra loro e thread remoti. |
|
|
|
|
|
|
#259 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
Quote:
Ultima modifica di Unrue : 03-01-2008 alle 18:43. |
|
|
|
|
|
|
#260 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Perché la comunicazione fra i thread avviene attraverso la memoria
Ovviamente se i processori distinti sui quali girano non hanno memoria condivisa allora non possono comunicare |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:27.





















