Qualche giorno prima di partire per l’EuroPython tenutosi a Firenze, mi è capitato di leggere un interessante articolo di ARS Technica che, però, mi ha messo parecchio in agitazione.
In estrema sintesi, alla prima dimostrazione pubblica di Windows 8 s’è parlato delle nuove API per le funzionalità introdotte con questo s.o., ma la notizia che ha fatto gelare il sangue a parecchi programmatori è stata che la nuova piattaforma di sviluppo sarebbe stata basata su HTML5 e Javascript (e i CSS, ovviamente).
Potete immaginare la valanga di indignazione e le rimostranze di cui è stata oggetto Microsoft, perché giustamente gli sviluppatori hanno visto compromessi anni spesi, oltre che per il lavoro, per l’acquisizione del necessario known-how, richiesto a nuovo cambio di API (dalle famose e sempre presenti Win32 alle ultime WPF ne sono state introdotte diverse).
Personalmente non ho lavorato molto a diretto contatto con le API fornite dalla casa di Redmond, avendo preferito per tanti anni i prodotti della Borland (Delphi in particolare, che le incapsulava nel suo stupendo framework VCL), e con qualche progetto sviluppato per VisualBasic 5 (che incapsulava anch’esso il necessario nei suoi controlli).
Da neo-sviluppatore Windows Phone 7, però, mi sono preoccupato molto. Ho lavorato poco su applicazioni web (celebri in azienda sono quelle “scritte nere su sfondo bianco” facenti uso di HTML puro, con giusto qualche misera riga di Javascript; giusto per rendere l’idea), perché è un settore che non m’è mai piaciuto e, fortunatamente, poche volte mi è stato richiesto di cimentarmi (il fortunatamente è principalmente per i malcapitati utilizzatori delle mie “opere d’arte”).
L’idea di passare ad HTML5 + CSS + Javascript (HCJ per comodità) non mi va proprio giù. Nella maniera più assoluta. Diversi sono i fattori che mi portano a questa presa di posizione (condivisa da tanti altri):
- ambiente di sviluppo (VisualStudio in generale, e la versione per Windows Phone 7 nello specifico)
- Silverlight (un sottoinsieme di WPF, Windows Presentation Foundation)
- .NET (con le sue centinaia di classi a disposizione)
- C# (per Windows Phone 7; per Windows c’è, oltre a questo, una pletora di linguaggi a disposizione)
Ognuno di questi elementi contribuisce a migliorare la produttività e a rendere decisamente comoda la scrittura del codice e la realizzazione dell’interfaccia utente (per quest’ultima c’è addirittura un’applicazione ad hoc, Expression Blend, che ne permette la progettazione in un ambiente totalmente grafico).
Anche pensando di realizzare un IDE “di spessore” per il nuovo ambiente di sviluppo, non si riuscirebbe in ogni caso a colmare l’enorme gap con quanto disponibile finora. Tra l’altro è anche il motivo per cui Silverlight è nato: offrire un’alternativa allo sviluppo di “Rich Internet Application”, senza quindi passare dalla tripletta HCJ.
Tornare indietro sarebbe, quindi, un clamoroso e inspiegabile (per i programmatori) passo indietro. Un po’ come tornare alla clava primordiale dopo avere imparato a usare arco e frecce.
Non v’è dubbio che Microsoft con Internet Explorer 9 (che sarà integrato col prossimo, corposo, aggiornamento di Windows Phone 7) abbia fatto un ottimo lavoro, mettendo a disposizione un’implementazione di HTML5 (standard ancora da definire, sia chiaro), un nuovo e veloce engine Javascript, ma soprattutto l’accelerazione grafica sfruttando le GPU (che, purtroppo, manca a WPF & Silverlight), ma non è un buon motivo per buttare l’eccellenza di quanto fatto finora e che non trova eguali nella concorrenza.
A confondere ancor di più la situazione è arrivato un altro articolo un po’ di giorni dopo, dov’è saltato fuori che alle Win32 sono state affiancate nuove e potenziate API (WinRT) con nuove funzionalità e miglioramento nella gestione di alcuni compiti delle precedenti, .NET & WPF & Silverlight sono stati aggiornati, ed è, manco a dirlo, spuntata una terza piattaforma chiamata HTA (HTML Application) che consente di sviluppare applicazioni anche con la tripletta HCJ.
Quest’ultima non sarà una Cenerentola, relegata a modesti ambiti, ma a quanto pare è da considerarsi “first class“, al pari delle altre due, tant’è che sarà possibile effettuare chiamate al sistema operativo. e, in generale, uscire dal tipico isolamento in cui vegeta un’applicazione web. Probabilmente HTML e/o Javascript saranno estesi allo scopo, similmente a quanto realizzato da Apple per il suo ecosistema mobile (è possibile scrivere applicazioni in HTMl5, infatti); non sarebbe altrimenti possibile tutto ciò.
Da sviluppatore è una situazione troppo caotica, che mi spiazza. In primis perché, nonostante queste notizie, la dichiarazione di cui parlavo a inizio articolo non è stata smentita tuttora, per cui permane l’idea che .NET & compagnia possano perdere il prestigioso ruolo che faticosamente si sono conquistati finora, a favore del nuovo nato HTA.
Secondariamente, la presenza di tutte queste piattaforme (con Win32 rinvigorita da WinRT) rende più difficile la scelta di quale utilizzare per lo sviluppo di un’applicazione. La difficoltà è dovuta anche al fatto che il tempo a disposizione per acquisire know-how rimane limitato, e padroneggiarle tutte, data anche la vastità di ognuna, non è praticamente possibile.
La mia opinione su HTA è controversa. Da una parte è chiaro che HTML5 e Javascript potranno attirare nuovi sviluppatori, ma vale anche il viceversa: offrire strumenti “standard” potrebbe invogliare ad abbandonare Windows e rivolgere le proprie attenzioni verso altre piattaforme.
L’ago della bilancia sarà rappresentato da quanto Microsoft riuscirà a “imbrigliare” HCJ nel suo ecosistema, ma di sicuro slegarsi da quanto realizzato finora attorno a .NET farebbe perdere parte della propria “identità” a Microsoft, cosa che non reputo sensato ancorché possibile (ma nella vita tutto può succedere).
Attendiamo settembre per vedere se arriveranno finalmente informazioni più chiare sulle piattaforme di sviluppo. I programmatori, si sa, hanno bisogno di certezze per poter lavorare, e al momento la situazione sembra tutt’altro che ben definita…