La programmazione prossima ventura…

Non sono un estimatore della Microsoft, lo sapete, ma ho molta stima nel gruppo di lavoro che la Microsoft ha messo in piedi per realizzare l’architettura .Net. Per quanto inizialmente fosse la copia di tutte le idee sviluppate da Sun, negli ultimi due anni .Net è riuscita a far mangiare un pò di polvere a James Gosling e soci.

In un video presentato su Channel9 (purtroppo occore Silverlight per poterlo vedere), Anders Hejlsberg ci illumina su quelle che saranno le direttrici del C# 4:

  • più costrutti dichiarativi sullo stile di LINQ, raro esempio di innovazione targata Microsoft;
  • Dynamic vs Static, anzi Dynamic and Static (nel video queste due parole rappresentato circa l’80% dei termini pronunciati);
  • Parallel processing.

Queste direttrici saranno ampiamente svelate nella conferenza PDC 2008 ma per ora, il gruppo di lavoro, si è divertito a darci una anticipazione sui temi che vi verranno trattati in modo che noi, che di programmazione non ne capiamo niente, possiamo andare a cercarli e studiarli: ad esempio quanti di voi sanno cos’è la metaprogrammazione, cos’è la programmazione parallela, cos’è LINQ etc etc? Sicuramente tantissimi, ma quelli di M$ l’hanno scoperto ora e, a modo loro (abbastanza bene fino ad ora), cercheranno di rendere questi concetti accessibili alle masse.

Guardando il video, ma sapendo che alcuni dei cavalli di battaglia di Visual Studio sono i progetti open source IronPython e http://www.ironruby.net/, sembra strano vedere omini microsoft parlare bene di progetti che non appartengono alla loro casa madre: anche loro, come molti negli anni passati, sono rimasti folgorati dalle avanzate potenzialità di Python e dalle “evil features” di Ruby on Rails (tra cui l’alto grado di metaprogramming) e, facendo leva su questi mostri sacri dello scripting, annunciano che il “dinamismo” sarà alla base del prossimo .Net Framework.

Anche C#, mantenendo la sua natura di linguaggio “statico”, trarrà enormi vantaggi dai nuovi costrutti che, come LINQ, consentiranno di manifestare più facilmente i desideri dei programmatori. L’unica piccola parentesi, che i moschettieri si pigliano per parlare di J2EE, la aprono per denigrare quanto J2EE sia complesso, pesante e quanto invece Ruby e Python siano snelli e facili. Un pò hanno ragione ma comunque nessuno di questi tre prodotti è robba loro.

Tra i nuovi costrutti che verranno introdotti, PLINQ, la versione parallela di LINQ, di cui ne andiamo parlando da un bel pò, consentirà di sviluppare, facilmente, algoritmi che sfruttano la potenza dei processori multi-core. Ormai sappiamo già che questa tecnica non offrirà vantaggi rispetto alla gestione con i thread ma la semplicità di scrittura del codice ne risulterà notevolmente semplificata. E con essa anche l’adattamento di molti degli algoritmi già esistenti (in realtà non mi è sembrato che la scrittura di codice con un Parallel.For o con un .AsParallel() sarà poi così semplice come dicono). Il prossimo passo sarà quello di coinvolgere anche le GPU e le PPU nei calcoli dei nostri algoritmi paralleli.

Insomma mentre il java community process si arrabbatta per decidere se inserire o meno i closures nella prossima versione di Java, la Microsoft cerca di mantenere le distanze.

Vedremo se la comunità open source saprà, spero presto, prendersi la sua bella rivincita.

Zac