Ricordo ancora quando ero un giovine pieno di belle speranze che, quando sentiva parlare di studenti che impiegavano 8 anni invece di 5 a laurearsi, dichiarava spavaldamente:

“Per quanto un corso di Laurea possa essere difficile, sono convinto che basti un po’ di impegno per rimanere in pari. Di certo io non ci metterò così tanto tempo.”

E fu così che, dopo 7 anni e 3 mesi dalla sua iscrizione alla Laurea di primo livello, Federico Bellucci (in arte Uccio) entrò in tesi (di secondo livello), con un’aspettativa realistica di Laurea di 8 anni esatti, o forse un paio di mesi in meno.

Certo, ci sono delle attenuanti (più o meno valide):

  • il fatto di non aver fatto nulla dalla discussione della tesi di primo livello, il 28 aprile 2006, all’iscrizione alla specialistica in Tecnologie informatiche di Pisa nell’ottobre dello stesso anno;
  • l’impatto con un modello di studio completamente diverso da quello a cui ero abituato;
  • la presenza di esami particolarmente ostici come ASE ed LC;
  • l’aver investito parecchi mesi in un lavoro (tra l’altro malpagato).

Bisogna anche aggiungere che quello di Tecnologie Informatiche è effettivamente un corso impegnativo. Conoscendo un po’ di colleghi, non sono neanche risultato uno dei più lenti, anzi forse sono anche un pochino sopra media come tempi. Tirando le somme, sicuramente non sarei riuscito a laurearmi in tempo perfetto ma se ci avessi messo più impegno avrei potuto senz’altro impiegarci un anno in meno, se non addirittura due.

Comunque, ormai è inutile piangere sul latte versato, ma è tempo di rimboccarsi le maniche e mettersi sotto con la tesi.

Tesi – episodio 1

Negli ultimi tempi ho constatato una certa affinità con le interfacce grafiche. Come non potevo quindi andare a chiedere la tesi ad un professore che ha consacrato la sua carriera allo studio delle interfacce? Il professor Fabio Paternò mi ha proposto una serie di argomenti fra cui uno di essi ha attratto particolarmente la mia attenzione:

Migrazione di interfacce con grafica vettoriale: capacità di prendere “a caldo” lo stato di un’applicazione grafica, trasmetterlo e riadattarlo per un altro dispositivo.

WOW! Quasi fantascienza. In particolare mi affascinava il fatto che il trasporto della grafica vettoriale si sarebbe dovuto basare sull’utilizzo di SVG, un linguaggio basato sull’XML in grado di rappresentare grafica vettoriale. Inoltre, essendo SVG totalmente editabile in tempo reale mediante linguaggi di scripting come JavaScript, è potenzialmente in grado di supportare capacità di animazione ed interazione che non hanno niente da invidiare a Flash e che sarebbero però aderenti ad uno standard aperto del W3C. Sono da sempre sostenitore degli standard aperti come SVG e quindi, con questa tesi, speravo anche di contribuire nel mio piccolo alla sua diffusione.

Dato che all’HIIS Laboratory, di cui Paternò è direttore, è già stata sviluppata una piattaforma per la migrazione di siti web, il mio compito sarebbe stato, almeno inizialmente, quello di estenderla per aggiungere il supporto a SVG.

Già dopo poche settimane di studio, mi rendo purtroppo conto di quanto SVG sia poco supportato dai browser, soprattutto da Internet Explorer, l’unico browser a non supportarlo affatto, costringendo a ricorrere a dei plugin per poter visualizzare SVG. L’entusiasmo mi si smorza un po’ e nel frattempo perdurano gli ultimi strascichi del lavoro su EduTangram, fino ad arrivare alle vacanze natalizie, facendomi rallentare notevolmente le ricerche per la tesi.

Tesi – episodio 2

A gennaio mi arriva come una doccia fredda una comunicazione del professore: dato che SVG è così poco supportato (e soprattutto poco diffuso) e dato che nell’architettura di migrazione manca ancora il supporto per il JavaScript, sarebbe il caso occuparsi prima di come estendere la piattaforma per supportare il mantenimento dello stato JavaScipt dei siti web.

Se prima ero un po’ incerto sul da farsi, dopo questa notizia avevo perso completamente l’orientamento. Si trattava di buttare una parte del lavoro svolto (o quanto meno di accantonarlo a tempo indeterminato) e di mettersi a lavorare su un linguaggio di cui non sapevo quasi nulla. Un linguaggio completamente diverso da quelli a cui ero abituato, debolmente tipato, dinamico, non compilato e difficile da debuggare.

Mi veniva quindi chiesto di improvvisarmi esperto di JavaScript, non esperto dal punto di vista dell’esperienza ovviamente ma dal punto di vista della conoscenza approfondita del linguaggio. Andavano infatti risolti molti problemi non banali quali ad esempio:

  • come conservare i riferimenti ad oggetti, in particolare i riferimenti ad oggetti del DOM, suscettibile di cambiare notevolmente da un dispositivo ad un altro (si pensi ad esempio alle possibili differenze tra un PC desktop e un palmare); come trattare infine l’annoso problema dei riferimenti ciclici;
  • come conservare le chiusure lessicali;
  • come suddividere lo stato JavaScript nel caso una pagina web “grande” venga suddivisa in più pagine “piccole” e, simmetricamente, come rimettere insieme lo stato in caso di migrazione inversa.

Nonostante la recalcitranza iniziale ho cominciato a documentarmi sul JavaScript in guide ed articoli più o meno autorevoli, cominciando ad appassionarmi a questo strano linguaggio e scoprendo molte cose interessanti di cui forse parlerò in articoli futuri.

Tag:, ,
3 Risposte a “Esperto JavaScript improvvisato”
  1. Daniele scrive:

    Wow. Potremmo farci una chiaccherata, che a me queste cose intrigano abbastanza ;) Buon lavoro!

  2. Massimiliano scrive:

    Si una la puoi fare anche con me e ho un libro da prestarti :)

  3. Uccio scrive:

    Mi era rimasto in sospeso il commento di Massimiliano…
    Che libro avresti da prestarmi?

  4.  
Scrivi un Commento

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>