La diffusione dei processori multi-core, anzi many-core, offre nuove opportunità a tutti gli sviluppatori e non più soltanto ad una élite di persone operanti in settori di nicchia (calcolo scientifico, ...).
Per sfruttare in modo efficace queste opportunità è necessario un nuovo grado di astrazione nei linguaggi e paradigmi di programmazione: operare con i concetti quali concorrenza, sincronizzazione, ... ad alto livello senza doversi preoccupare di "dettagli" di basso livello (lock, semafori, ...).
Le problematiche non sono di facile soluzione. Questo ha dato origine ad una serie di filoni di ricerca, alla cui base spesso ci sono scelte piuttosto differenti.
In questo panorama Microsoft si pone con un atteggiamento che, a mio avviso, cerca di equilibrare aspetti innovativi di ricerca con una buona dose di pragmatismo. A tal proposito si può ad esempio dare un'occhiata alle cosiddette PFX (Parallel Extensions to the .Net Framework 3.5), PLINQ, ... Questi lavori tentano, almeno al momento, di catturare le peculiarità del calcolo parallelo sotto forma di librerie di codice.
Ci sono altri progetti, di cui "Parallel C#" è sicuramente un esemplare interessante, che invece si ripropongono di estendere i linguaggi di programmazione stessi al fine di incorporare le astrazioni del caso.
mercoledì 14 maggio 2008 02:31