"La predominanza di JavaScript è un incidente storico o qualcos'altro?"
Personalmente sono dell'opinione che il successo di JS sia una questione di design tanto quanto molti lo sono stati e continueranno a detestare per ammetterlo e non solo per un incidente o semplicemente per il fatto che è stato il primo bambino nel parco giochi.
Sebbene chiamato in modo da fare appello agli sviluppatori Java e sintattizzato come la sintassi basata su C di Java anche per fare appello agli sviluppatori Java, Brendan Eich prese una delle decisioni più toste della storia del www che doveva attingere principalmente da Scheme per la meccanica del linguaggio reale ispirazione, che è qualcosa che gli sviluppatori Java non sembrano apprezzare molto (che trovo molto divertente).
JavaScript utilizza un'eredità prototipale altamente flessibile / granulare per OOP, ha chiusure, i tipi sono dinamici al 100%, le funzioni stesse sono di prima classe permettendo loro di essere passate in giro come qualsiasi altro oggetto o tipo di dati e riutilizzate in contesti diversi e persino vengono applicati agli oggetti al volo come se fossero stati dichiarati come membri effettivi dell'oggetto fin dall'inizio. Praticamente urla per essere utilizzato per architetture guidate da eventi che devono normalizzare una tonnellata di rifiuti proprietari o gestire problemi di interfaccia utente altamente non lineari.
Alla fine dell'alba del Web è l'unica lingua che sia mai stata seriamente all'altezza del compito di normalizzare i browser attraverso una vera e propria guerra dei browser in cui Netscape e IE hanno provato a fare le cose diversamente di proposito, seguite da oltre 10 anni di browser tregua in cui IE ha semplicemente fatto le cose diversamente perché MS è pigro e auto-radicato in alcune pratiche anticoncorrenziali giustamente stupide con conseguente stagnazione del browser, e ora un mondo in cui i browser stanno finalmente iniziando a concordare le stesse specifiche generali per quanto riguarda HTML, CSS e l'API DOM con IE sono solo 2-3 anni indietro rispetto agli ultimi sviluppi piuttosto che 10 a causa di Google e Mozilla che hanno eliminato i compilatori JIT che hanno fatto sembrare i numeri delle prestazioni di IE così patetici che la MS è stata finalmente vergognata nel modernizzare correttamente i loro dannati browser.IE9 è il primo ad aggiornare seriamente il supporto API DOM a livelli supportati da Netscape nel 2000.
JS ha avuto concorrenza sotto forma di applet Java e ActionScript per Flash di Adobe. Questo è tutto sul serio fronte del contendente. MS ha provato a spingere VB ma ha fallito miseramente perché ... beh ... VB. Inoltre, proprietario. In realtà c'erano molti più siti Flash di quanto la maggior parte della gente capisca. Non riuscivi a trovare le cose stupide con i motori di ricerca. Le applet hanno fatto le loro cose ed è stato brutto. Davvero brutto. JS era l'unico linguaggio che affrontava davvero il problema di lavorare nel contesto di più browser da persone che non erano d'accordo su chi stesse impostando le specifiche che avrebbero dovuto corrispondere.
Negli ultimi anni JS è esplosa in un ambito di applicazione molto più ampio. In combinazione con altre tecnologie web, è sostanzialmente pronta a rovesciare tutte le altre soluzioni sul fronte mobile poiché la tecnologia web + è davvero l'unica scelta realistica in questo momento se vuoi davvero scrivere un'app e farla funzionare su tutto.
Quindi no, e sì, sono un grande fan, ma non credo che abbia bloccato per sbaglio tutti gli altri contendenti sul lato client più di quanto diventi esplosivamente popolare al di fuori del browser, ora potrebbe essere considerato un incidente. Prima di JS, non c'erano molte lingue simili allo schema là fuori che non erano principalmente accademiche. Ciò ha dato a JS alcuni potenti vantaggi e le esigenze uniche del lato client hanno reso possibile che questi vantaggi diventassero lentamente cristallini.