Perché JavaScript ha tanto successo?
Lunedì 19 Dicembre 2011 - 12:13
di Fabio Lelli

Tutti i linguaggi di programmazione hanno amanti e detrattori, ma in quanto a detrattori JavaScript potrebbe probabilmente vantare un primato assoluto. Lo ricordava già uno dei più importanti sviluppatori di software client-side come Douglas Crokford, che più volte, in testi e conferenze giustamente famose, lo ha difeso enumerandone gli aspetti positivi.
Ma la polemica non si è certo arrestata grazie alla parole del creatore di JSON, ed è interessante seguire un thread particolarmente animato condotto su Stack Overflow. La domanda di partenza era: ma perché solo JavaScript è stato implementato nei browser, e non linguaggi decisamente migliori (a parere di chi ha iniziato la discussione) come Python o Ruby? Inutile dire che da queste parole è partita una lunga serie di opinioni una diversa dall’altra, e dalla quale certo non si può trarre una conclusione definitiva.
Ma almeno due temi ricorrono con una discreta frequenza: JavaScript è stato già pensato per essere applicato con forti politiche restrittive (il cosiddetto sandboxing) che sarebbe stato molto difficile applicare agli altri linguaggi menzionati. Inoltre è proprio dalle limitazioni di JavaScript che oggi nascono progetti che cercano di superarlo, fra i quali ricordiamo almeno CoffeeScript, che si ispira per certi versi a Ruby, Pyjamas che si rifà a Python, e Dart, la nuova proposta di Google.
Categoria: Scripting | Permalink
Commenti
1
Io tifo per DART, l’ho visto un pò e mi sembra che abbia ottime pontenzialità pur senza discostarsi troppo da JS.
# - postato da diegoitaliait - 19 Dicembre 2011 - 12:38
2
Io tifo per la standardizzazione e la sua uguale implementazione in ogni browser, qualsiasi linguaggio sia.
# - postato da Slam - 19 Dicembre 2011 - 14:42
3
più che superare limitazioni di javascript, che è evidentemente impossibile compilando in javascript, tentano di portare expertise di programmatori java(GWT) etc. in contesto web.
leggendo il sito di pyjamas, che non conoscevo, si dice esplicitamente.
la comunità non ha ancora chiarito se il prezzo di un layer di astrazione su javascript, da mantenere aggiornato e da debuggare, valga i vantaggi che promette, uno su tutti class inheritance# - postato da devsmt - 19 Dicembre 2011 - 15:51
4
Visto che ora va di moda il cloudcomputing, SaaS, PaaS, etc, e che spesso queste risorse hanno tempi di accesso molto variabili e difficilmente sincroizzabili tra loro (specie se si combinano servizi differenti), si ha la necessitá di ridisegnare i pattern piú comuni riadattandoli ad un flusso asincrono e non-bloccante.
Qualcuno mi fa un esempio di script non bloccante? in javascript suona piú o meno cosí:
myVerySlowStoredProcedure(paramA, paramB, function(){
//codice da eseguire solo quando la procedura ha terminato
});Questo, unito al fatto che con lo stesso linguaggio posso programmare un server di rete o creare uno slide di foto su web, mi sembrano due ottimi motivi per affezionarsi a questo linguaggio.
# - postato da balanza - 19 Dicembre 2011 - 18:16
5
@balanza: ciao balanza. Per capire cosa è una operazione non bloccante bisogna capire come funziona javascript.
Javascript è un linguaggio single-thread, e quindi può fare solo una operazione alla volta. Se provi ad esempio a lanciare un ciclo for da 1 a un milione su una pagina web che ha molte animazioni vedrai che tutta la pagina si blocca fino a quando l’esecuzione del ciclo non è terminata.
Se pensi che javascript deve gestire anche gli eventi e le animazioni della pagina capisci che operazioni troppo lunghe possono bloccante l’esecuzione.
Anche chiamata a risorse esterne, come file db o chiamate ajax, fatte in modo sincrono possono bloccare l’esecuzione del motore javascript.
Per evitare questo in javascript, soprattutto con l’arrivo di node.js lato server, si usano tecniche asincrone che non bloccano l’esecuzione della pagina.
In pratica immagina una persona che una cosa alla volta ma a una tale velocità da sembrare che faccia tante cose in parallelo. Mentre aspetta il risultato di un’operazione passa a eseguirne altre mille
# - postato da sasuke - 19 Dicembre 2011 - 23:42







