Quella su C# è stata forse la sessione più attesa dai developer, ancora di più delle keynote che pure hanno portato a novità interessanti.
Per PDC la sessione di Hejlsberg è una tappa fissa, il linguaggio evolve e permette di risparmiare ai developer migliaia di keystroke con guadagno anche nella stabilità del codice prodotto.
Nella PDC del 2008 Hejlsberg concluse con la promessa del "compiler as a service" e solo due giorni dopo Miguel de Icaza presentava quella stessa feature dentro Mono 2.0.
Quest'anno Hejlsberg mostra la nuova roadmap, il "compiler as a service" è sempre nei piani ma è ancora troppo presto per parlarne a fondo. La vera novità è il supporto alla programmazione asincrona integrata nel linguaggio.
Senza voler sminuire il lavoro del team di C#, il grosso lavoro è quello che si trova già dentro le parallel libraries del framework 4.0: task, parallel linq, scheduling e molto altro. Il team di C# sta facendo il suo mestiere, e cioè quello di rendere ancora più fluida, usabili, facile, naturale, l'uso del paradigma asincrono all'interno di una applicazione.
Attenzione alla parola "asincrono" perché il paradigma presentato si presta a scenari differenti da quelli delle task parallel library (cioè elaborazione concorrente) mentre in C# 5.0 le keyword forniscono un modo friendly per gestire l'asincronicità di una elaborazione come quelle che da sempre dobbiamo fare per non bloccare la UI. Due cose differenti che usano lo stesso cuore/librerie.
Vedremo perciò dichiarazioni del tipo: async void GetAndPlayMoviesAsync(string[] titles) {…}
Una funzione dichiarata come async deve tornare un Task<T>.
Allo stesso modo la keyword await sospende l'esecuzione di una funzione asincrona fino a che un task viene completato.
Dietro queste keyword si cela la generazione di codice (così come, per esempio, già avviene oggi per "yield") che usa le task parallel library opportunamente rivisitate per la futura versione del framework.
Ed ora i bit!
Per prima cosa le specifiche delle feature asincrone di C# 5.0, per chi non volesse scaricare altro:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C59F7633-37C7-4364-8F13-EFDB1E5CCB21
Per i "patiti" delle CTP, ecco la prima versione della Async CTP con tanto di esempi (e documenti tra cui quello sopra):
http://msdn.com/vstudio/async
Ah quasi dimenticavo, durante la chat post-sessione, ho mandato la mia domanda a Channel9. Ho chiesto se vedremo la composition di expression tree e la loro serializzazione, integrata nel framework. Ci sono dei bei progetti in giro ma sinceramente sono soluzioni farraginose. Hejlsberg ha commentato che gli piacerebbe molto inserire queste feature di cui si parla da tanto. Incrocio le dita e spero …