Aspetti e caratteristiche generali



Javascript è molto semplice da imparare per chi già conosce linguaggi simili come il C++ o Java, ma non è neanche difficile per chi si approccia per la prima volta a questo linguaggio data la sua semplicità sintattica e la sua maneggevolezza. Tuttavia ciò può rappresentare un'arma a doppio taglio perché la semplicità si gioca anche su una disponibilità limitata di oggetti per cui alcuni procedimenti, all'apparenza molto semplici, richiedono script abbastanza complessi.

La caratteristica principale di Javascript, infatti, è quella di essere un linguaggio di scripting, ma soprattutto è il linguaggio di scripting per eccellenza e certamente quello più usato. Questa particolarità comporta una notevole serie di vantaggi e svantaggi secondo l'uso che se ne deve fare e tenendo in considerazione il rapporto che si instaura nel meccanismo client-server. Spiegando in parole molto semplici quest'ultimo rapporto, possiamo dire che il server invia i dati al client e questi dati possono arrivare in due diversi formati: in formato testo (o ASCII) o in formato binario (o codice macchina). Il client sa comprendere solo il formato binario (cioè la sequenza di 1 e 0), per cui se i dati arrivano in questo formato diventano immediatamente eseguibili (e purtroppo senza la possibilità di effettuare controlli), mentre se il formato è diverso devono essere interpretati e tradotti in formato binario, e quindi il client ha bisogno di un filtro o meglio di un interprete che sappia leggere questi dati e li possa tradurre in binario. I dati in formato testo sono visibili all'utente come semplici combinazioni di caratteri e di parole, quindi di facile manipolazione, ma richiedono più tempo per la loro interpretazione a causa dei passaggi e delle trasformazioni che devono subire per essere compresi dal client; i dati in formato binario, invece, sono di difficile comprensione da parte dell'utente, ma immediatamente eseguibili dal client, senza richiedere passaggi intermedi.

Effettuata questa premessa si possono suddividere i linguaggi di solito utilizzati per il Web in quattro tipologie:

  1. HTML: è in formato testo e non è un linguaggio nel senso tradizionale, ma un impaginatore per consente di posizionare degli oggetti nella pagina con le caratteristiche indicate, naturalmente per la sua peculiarità risulta essere statico e non interagisce con l'utente e non può prendere decisioni se non per i formulari, mentre per la sua interpretazione ha bisogno di un browser;
  2. linguaggi compilati: sono quei linguaggi abbastanza complessi in cui il sorgente (un file di testo con le operazioni da eseguire) viene compilato in codice macchina e viene impacchettato in un eseguibile utilizzabile solo nella forma e per le operazioni per cui è stato progettato;
  3. linguaggi semicompilati: in realtà a questa classe appartiene solo Java perché è un linguaggio compilato in un formato intermedio tra il file ASCII e il file binario, tale formato si chiama bytecode e va interpretato sul client da una macchina virtuale chiamata Java Virtual Machine, in tal modo all'atto della ricezione tale macchina completa la compilazione e rende il file eseguibile;
  4. linguaggi interpretati: sono quei linguaggi che risultano molto simili all'HTML, ma hanno potenzialità maggiori perché consentono di effettuare controlli e operazioni complesse, vengono inviati in file ASCII, quindi con codice in chiaro che viene interpretato ed eseguito riga per riga dal browser in modalità runtime.

Il concetto di script è bene espresso con una similitudine nel testo di Michael Moncur su Javascript, apparso di recente e pubblicato in Italia da Tecniche Nuove, dove la spiegazione è didattica ma molto efficace e merita la citazione: script in inglese significa "copione" o "sceneggiatura", ed infatti l'utilizzo è proprio questo: il browser legge una riga, la interpreta e la esegue, poi passa alla successiva e fa la stessa cosa, e così di seguito fino alla chiusura dello script.

Vantaggi e svantaggi

Quali sono i vantaggi e gli svantaggi tra linguaggi di scripting e linguaggi compilati? Cerchiamo di riassumerne qualcuno:

  1. il linguaggio di scripting è più sicuro ed affidabile perché in chiaro e da interpretare, quindi può essere filtrato; per lo stesso Javascript la sicurezza è quasi totale, perché solo alla sua prima versione erano stati segnalati dal CIAC (Computer Incident Advisory Committee) dei problemi di lieve entità, tra cui la lettura della cache e dei siti visitati, dell'indirizzo e-mail e dei file presenti su disco, tali "falle", però, sono state corrette già con le versioni di Netscape successive alla 2.0;
  2. gli script hanno limitate capacità, per ragioni di sicurezza, per cui non è possibile fare tutto con Javascript, ma occorre abbinarlo ad altri linguaggi evoluti, magari più sicuri, come Java, e tale limitazione è ancora più evidente se si desidera operare sull'hardware del computer, come ad esempio il "settaggio" in automatico della risoluzione video o la stampa di un documento;
  3. un grosso problema è che il codice è visibile e può essere letto da chiunque, anche se tutelato con le leggi del copyright, ma questo, che secondo me è un vantaggio, è il prezzo da pagare da chi vuole utilizzare il web: la questione dei diritti d'autore è stata rivoluzionata con l'avvento di Internet (si veda soprattutto l'MP3), e la tutela è molto labile e inadeguata alle leggi attuali, per cui occorre prendere la situazione con molta filosofia;
  4. il codice Javascript viene eseguito sul client per cui il server non è sollecitato più del dovuto; uno script eseguito sul server, invece, sottoporrebbe questo ad una dura sollecitazione e i server di capacità più limitate ne potrebbero risentire se interrogati da più utenti;
  5. il codice dello script deve essere scaricato completamente prima di poter essere eseguito, e questo è il risvolto della medaglia di quanto detto precedentemente, per cui se i dati che uno script utilizza sono tantissimi (ad esempio una raccolta di citazioni da mostrare in maniera casuale), ciò comporterebbe un lungo tempo di scaricamento, mentre l'interrogazione dello stesso database sul server sarebbe più rapida.

Ultimi articoli JavaScript

PhantomJS, headless browser per test con Javascript

Il tool ideale per realizzare, da terminale, operazioni in remoto su...

Creare e leggere QR Code in JavaScript

Applicazioni 'QR Code enabled' per il Web e per il mobile,...

Jquery UI Map: web-mapping con Google Maps e jQuery

Un plugin di jQuery UI per intefacciare applicaizoni Web/mobile con...

Scrollorama e Scrolldeck, slideshow d'effetto con jQuery

Plugin jQuery per ottenere Slideshow con diversi effetti di scrolling

jCanvas, un primo semplice grafico

Alla scoperta della libreria jCanvas, per semplificare il disegno e...

Altri articoli

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida Javascript: tecniche avanzate

Una guida dal taglio pratico per approfondire la programmazione a...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti