Mai come ora i developer hanno a disposizione librerie di funzioni pronte all’uso.
Un post di Allen Pike, sviluppatore Apple canadese e blogger, ci invita a riflettere su JavaScript e la sua dinamicità . L’articolo, pubblicato all’indirizzo
allenpike.com/2015/javascript-framework-fatigue, parla della velocità di proliferazione dei framework JavaScript sul web.
Si tratta di un problema che avevamo già incontrato quando, nel tempo in cui abbiamo letto il manuale di Prototype e Scriptaculous, si era già affermato come standard jQuery. Oggi i tempi sono più veloci e probabilmente la stella di un framework rischia di tramontare nel tempo in cui Amazon consegna il manuale. Qualcuno ha fatto una interessante collezione di framework sul sito web todomvc.com, che ospita una sessantina di esemplari della stessa applicazione: una lista di cose da fare, realizzata con uno stile MVC o MV* per sottintendere tutte le possibili variazioni.
Di ogni applicazione sono disponibili i sorgenti, tutti open source e archiviati su Github, in modo che uno sviluppatore possa rendersi conto di come sono i dettagli di ogni applicazione. Esiste anche una versione di riferimento, scritta per riferimento in puro e semplice JavaScript, senza nessun framework, che totalizza un numero di righe di codice piuttosto elevato.
La versione di controllo scritta con jQuery senza nessun framework, invece, si ferma a 212 righe di codice, che non è poi molto, ma non è di facile lettura.
Un framework è necessario. Può capitare di iniziare un progetto convinti di potersela cavare con un po’ di codice e la manipolazione del dom standard, ma, non appena la complessità sale di poco, si rischia di trovarsi con sorgenti in crescita continua e sempre più difficili da tenere insieme.
JavaScript, per di più non è mai stato rinomato per una standardizzazione eccellente, un disegno pulito e prestazioni elevate, quindi meglio non spingerlo ai limiti.
Per contro, come abbiamo rilevato parecchie volte su queste pagine, JavaScript è un linguaggino simpatico e che può essere abusato in molti modi utili, fino a trattarlo come un lisp con le parentesi graffe (questa affermazione va intesa come un complimento). Proprio per questa dinamica adattabilità e per la innegabile produttività , i framework continuano a proliferare.
Le ragioni sono da cercare nei limiti del browser: troppo codice e l’applicazione rischia di annaspare, specie sulle macchine più vecchie, poco codice ottimizzato e abbiamo un framework scattante, ma limitato nelle possibilità . Anche la modularizzazione del codice è un’arma a doppio taglio. Questo spiega perché spesso c’è chi si imbarca nella creazione di qualcosa di nuovo e, magari, riesce ad avere successo e popolarità , almeno fino al prossimo nato.
Questa situazione è del tutto diversa da quella che sperimentano gli sviluppatori di app per i quali la piattaforma spesso detta sia il linguaggio, sia il framework di riferimento. Sappiamo lo scalpore che si genera quando un produttore forza un cambio di pelle e liquido amniotico, per esempio quando Microsoft ha pensionato COM e Visual Basic per passare a.net e C#, così come quando Apple ha introdotto Swift.
Una soluzione originale e pragmatica al problema della scelta, Allen l’ha trovata in Google Trends, una funzione di ricerca di Google che permette di analizzare la frequenza di determinate stringhe di ricerca nel corso del tempo e di visualizzare grafici che confrontano l’andamento temporale di diverse stringhe. Un modo di verificare l’adozione di nuovi framework è valutare con quale frequenza si ricercano articoli introduttivi a un determinato corpo di codice. Il grafico in figura mostra in colori diversi l’andamento temporale della ricerca di tutorial per un certo numero di framework e, con sorpresa, mostra un chiaro vincitore: Angular.js. Abbiamo ripetuto il test, con un numero minore di variabili e con un ambito regionale italiano, ottenendo un’indicazione simile, insieme a una conferma della crescita dell’interesse per Meteor e Cordova, due framework che affiancano lo sviluppo mobile al web.
Per confronto, abbiamo provato a cercare tracce di interesse per linguaggi nativi, come Objective-C e Swift, ma i grafici viaggiano su due scale diverse non confrontabili.
Michele Costabile