E' ormai il terzo anno di fila che frequento il WPC 2011: da quando il mio ex responsabile me lo fece conoscere nell'apparentemente vicino, ma incredibilmente lontano 2008, ho fatto di tutto per convincere, dapprima i miei datori di lavoro, ed oggi i miei soci, che partecipare a quest'evento è importante.
Non è importante perché ciò di cui si parla al WPC è impossibile apprendere in altro modo, anzi mi è capitato più di una volta di seguire sessioni i cui contenuti mi erano già noti anche al 90%, ma è importante perché si tratta di un full immersion formativo e di confronto con altri professionisti del settore che, sia per mancanza di tempo, che di opportunità, è a dir poco impossibile replicare. Insomma, pensateci bene: quante volte vi è capitato di ascoltare per tre giorni di fila sessioni tecniche dalla mattina alla sera? Se escludiamo i pochi di voi che hanno avuto la fortuna di fare qualche corso di formazione, probabilmente la risposta è mai.
Volendo fare un sunto degli argomenti trattati in questo WPC, posso dire che il 2012 è sicuramente l'anno del cloud e di Windows 8, un anno ricco di novità quindi, sia per quanto concerne lo sviluppo lato server, che lato client.
Lato server sono ormai parecchi mesi che gli addetti al settore avvertono che la direzione intrapresa è quella del cloud e ne è una prova anche la nascita di diversi provider di servizi di cloud computing, non necessariamente legate al mondo Microsoft. E' chiaro che per chi, come il sottoscritto, si è specializzato nelle tecnologie Microsoft, Windows Azure rappresenta la naturale piattaforma di riferimento ed è curioso vedere come le cose stiano evolvendo rapidamente: un anno fa Windows Azure era quasi un'entità astratta, oggi c'è un SDK maturo ed un'integrazione con Visual Studio 2010 davvero notevole.
Oltre a Windows Azure, ho seguito alcune sessioni anche sullo sviluppo lato client e, in particolare, su HTML5 e WinRT. Può sembrare curioso che io, che ho tenuto una sessione su HTML5 al Workshop Future Development, ne vada a seguire altre, ma nel campo dell'informatica, al di là degli appellativi attribuiti e/o guadagnati (junion, senior, technical lead, ecc....), non bisogna mai perdere l'umiltà e la voglia di apprendere e confrontarsi. Ed è proprio a tal proposito che vi racconto l'impressione che ho avuto seguendo le sessioni su WinRT e HTML5.
Osservando le reazioni delle persone e discutendo con alcuni miei collegi ed amici, penso che si sia creata parecchia confusione in merito a questi due argomenti. Alcuni pensano che .NET sia destinato al macero e che HTML5 rappresenti il futuro dello sviluppo per Windows 8, beh non è così e vi invito a leggere con attenzione la seguente frase.
WinRT è un'API nativa implementata in Windows 8 attraverso la quale è possibile sviluppare applicazioni Metro Style utilizzando come linguaggio di programmazione C++, C#, VB.NET e javascript e come linguaggio per la definizione della UI HTML5 e XAML.
Ho evidenziato la frase precedente perché mettere in risalto l'errore che commettono coloro che accostano WinRT a HTML5 come modello di programmazione primario. In particolare mi permetto di sottolineare i seguenti aspetti
- WinRT nasce per lo sviluppo di applicazioni Metro Style, quelle che, quindi, saranno accessibili dall'interfaccia Metro introdotta da Windows Phone e che sarà adottata anche in Windows 8. Quest'ultimo, tuttavia, consente di utilizzare anche la classica interfaccia di Explorer il che significa che si possono continuare a sviluppare applicazioni "vecchia maniera" senza problemi
- Le applicazioni Metro Style sono simili alle App dei dispositivi mobile: sono installabili solo mediante il Market Place, funzionano in una sandbox e nascono con l'obiettivo di facilitare l'uso di Windows specie su dispositivi touch come i tablet
- Programmare usando HTML5 e Javascript con le API WinRT, cioè per sviluppare applicazioni Metro Style, non consente nel modo più assoluto di poter riutilizzare lo stesso codice sia di markup, che javascript per fare un'applicazione web. Nel momento in cui si accede alle librerie WinRT (e lo si deve fare per forza perché altrimenti non si sta sviluppando un'applicazione Metro Style) l'applicazione risultante resta confinata al mondo WinRT
- Analogamente all'accoppiata HTML5/javascript, programmare usando C++/C#/VB.NET e XAML non significa avere la medesima applicazione disponibile, sia in versione Metro Style, che classica perché cambia il target di compilazione e cambiano i namespace di moltissime classi (ad esempio quelle della UI rispetto a WPF), oltre al fatto che WinRT espone un subset del .NET Framework e non il framework completo
.NET è, quindi, vivo e vegeto e nel 2012 uscirà la versione 4.5 che, tra le altre cose, porterà miglioramenti significativi proprio nello sviluppo di applicazioni WPF, oltre a tante altre novità che ne aumenteranno notevolmente la produttività (ad esempio la nuova gestione dei task asincroni).
A mio parere con WinRT Microsoft ha semplicemente voluto mettere a disposizione del più ampio parco di programmatori possibile (C++, .NET e Javascript) uno strumento per lo sviluppo delle applicazioni Metro Style probabilmente con la speranza che in ambito desktop/notebook/tablet accada ciò a cui assistiamo ormai da qualche anno in ambito mobile: un market place, specie quello di Apple, con migliaia di applicazioni disponibili e migliaia di acquisti effettuati grazie ai bassi costi che mediante queste anno.
Insomma, come avrete intuito, il tutto non ha la finalità di ottenere la pace nel mondo, ma le aspettative probabilmente sono quelle lecite di sempre: abbattimento della pirateria ed incremento dei profitti. E per noi programmatori cosa cambia? Fondamentalmente abbiamo l'occasione di sviluppare questo nuovo tipo di applicazioni, affrontando le sfide che esse ci porranno senza rinunciare al nostro linguaggio di programmazione preferito. Cosa possiamo chiedere di più? :-)