Alcune considerazion su Javascript

Friday, 09 March 07

Definizione

Javascript e' un linguaggio di programmazione che permette di aggiungere dei comportamenti dinamici alle pagine web. Piu' in breve e nella linga in cui e' stato inizialmente pensato: javascript is used for scripting web pages.

Questo e' stato sempre vero in teoria, ma nella sostanza si e' passati dall'usare javascript in contesti quali la validazione di un form, suscitando tra l'altro lo sdegno dei puristi che vedevano javascript come un giocattolo mal funzionante e disordinato, al suo utilizzo come linguaggio per creare delle vere e proprie applicazioni che girano sulla piattaforma web.

Di come javascript si sia purificato

Dopo essersi reincarnato diverse volte man mano che i browser si succedevano, aver avuto accesso al DOM, e grazie al fatto che i browser maggiori diventavano pian piano piu' consistenti rispetto alla sua implementazione, javascript iniziava ad essere visto in una luce diversa, ma la vera purificazione passa sicuramente per un suo ormai celebre oggetto chiamato XmlHttpRequest, che ha dato vita ad Ajax. Tramite l'Ajax javascript non era solo un metodo farlocco di fare con un alert quello che potevi fare in maniera piu' consistente tramite il refresh della pagina nella validazione di un form, o un modo per far scendere i fiocchi di neve dalla parte superiore del sito verso il basso a natale. Capovolgeva un meccanismo di base: le applicazioni web erano tutte stateless fino a quel momento, senza stato. Tramite javascript diventavano stateful, come una applicazione residente. Con grandi vantaggi per il programmatore e con un beneficio non da poco per l'interfaccia utente. Piu' Ajax prende piede e piu' Javascript diventa un linguaggio che viene recepito dai programmatori come serio.

Meriti e demeriti

Il fatto e' che javascript ha davvero dei meriti come linguaggio: object oriented, con un buon supporto per la programmazione funzionale, funzioni come oggetti di prima classe, chiusure, funzioni anonime, il modello degli oggetti basato sui prototipi, un late binding estremo come quello di Ruby, e una sintassi per scrivere in maniera letterale gli oggetti che rende la programmazione piu' immediata (e ha dato vita a JSON, che sta per rimpiazzare XML dal panorama della applicazioni web come protocollo utilizzato per serializzare gli oggetti).

Prima di Ajax gran parte dei suoi demeriti non erano dovuti al linguaggio in se ma al fatto che i browser lo implementavano in maniera piu' inconsistente di quanto accade oggi. Javascript e' un linguaggio in cui il programmatore non puo' scegliere l'interprete sul quale far girare la propria applicazione. Deve considerarne nel migliore dei casi quattro o cinque (Firefox, IE, Opera, Konqueror, Safari). L'esperienza continua ad essere frustrante oggi, ma qualche anno fa era peggio e far funzionare in maniera compatibile codice non banale era una vera impresa, anche per la mancanza di documentazione che per fortuna ultimamente non e' piu' un problema. Ci sono blog e siti di vario genere pieni di informazioni su questa o quella incoerenza, librerie piu' o meno cross-browser che possono essere consultate, e sicuramente implementazioni un po' piu' standard rispetto al passato.

Considerazioni finali

Il linguaggio lato client e' difficile da modificare, quello lato server invece no, per cui mi piacerebbe vedere una robusta implementazione di javascript server side al fine di unificare il linguaggio con cui scrivere le applicazioni web. In alcuni contesti sarebbe una scelta molto ragionevole, specialmente nei casi in cui si finisce per avere lato client e lato server delle funzionalita' molto simili. Javascript e' ancora lontano dall'essere accettato come linguaggio di programmazione serio (paradossale visto che molto spesso le stesse persone che pensano a Javascript come un giocattolo scelgono PHP), ed una implementazione server side dovrebbe essere dotata di un buon debugger e binding ben fatti verso librerie quali *SQL, GD, e il sistema operativo (almeno il subset di POSIX normalmente disponibile in tutti i linguaggi moderni, da Python a Ruby a PHP).
2288 views*
Posted at 11:42:24 | permalink | 2 comments | print