posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

Il futuro di C++ raccontato da Herb Sutter

Herb Sutter parla del futuro standard ISO di C++. Non solo cose Microsoft e questo è bene precisarlo e sottolinearlo perchè  Herb Sutter si occupa della commissione ISO C++ e nessuno poteva dire meglio di lui quale sia la direzione del linguaggio.

Si parla quindi dello standard ISO C++0x con x presumibilmente sarà 9.

Tra gli argomenti del prossimo standard c'è la sintassi del foreach, la type inference (keyword "auto" equivalente di "var" di C# 3.0) che è già stata votata positivamente dalla commissione ISO. Tra le novità ci sono anche le lambda functions.
Ovviamente si parla anche dell'integrazione di Linq in C++ ma questo non è l'argomento della sessione di oggi.

"Concepts" è la soluzione proposta per rendere strong-typed le dichiarazione con template. Per esempio avere un controllo più preciso quando si vuole passare due iterators alla funzione Sort. Oggi è un incubo perchè se gli passo due interi il risultato è una serie di errori (tipici di quando ci sono i template di mezzo) che sono complessi da risolvere. Concepts risolve questo rendendo strong-typed la dichiarazione con i template. Veramente stupendo.

Concur, un progetto per rendere più semplice i problemi di concorrenza. Le problematiche sono quelle già dette nell'altra sessione che avevo seguito e bloggato sulla concorrenza. Herb Sutter mostra quindi Concur che è ciò a cui stanno pensando per risolvere a livello di linguaggio il problema della concorrenza, o perlomeno di fornire dei tool per minimizzare l'incubo.

Per il futuro si pensa ad un livello di astrazione che vada un passo oltre alla tradizionale concezione di OOP.

Il tradizionale memory model non ha futuro. I modi per acquisire un lock sono proni ad errore mentre per il futuro ISO si pensa a statemente come "once" che fungono da arbitro lasciando l'arbitraggio ad un livello più basso.

Si parla quindi di concetti come Active Object (keyword "active") per gestire le chiamate asincrone e permettere l'esecuzione parallela. La keyword "future" permette di effettuare la chiamata in modo asincrono e aspettare il risultato tramite una "wait". Notevole la demo che mostra active e lambda functions insieme. Una sintassi semplice e immediata.

La keyword active può anche essere usata sui block statement per parallelizzare i loop. Se OpenMP, già presente in VS2005, è sostanzialmente codice in "C", con active si risparmia tutto il codice di sincronizzazione, l'unione di "active" e di una nuova versione delle librerie STL per il calcolo parallelo permettono di ridurre a poche righe tutto il calcolo parallelo di un loop. Realmente impressionante.

Sempre per i loop il nuovo statement "atomic" permette di eseguire, ad esempio, una serie di assegnazioni in modo atomico.

Come sempre Herb Sutter è brillante e preciso nelle spiegazioni e il linguaggio C++ con lui ed il suo team (Brandon Bray) stanno fancedo un lavoro fantastico.

Print | posted on venerdì 16 settembre 2005 22:37 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET