"La predominanza di JavaScript è un incidente storico o qualcos'altro?"
Personalmente ritengo che il successo di JS sia una questione di design tanto quanto molti sono stati e continueranno a detestarlo per ammetterlo e non solo per qualche incidente o semplicemente per il fatto che è stato il primo a il parco giochi.
Sebbene sia stato chiamato in modo tale da fare appello agli sviluppatori Java e sintassi come la sintassi basata su C di Java anche per fare appello agli sviluppatori Java, Brendan Eich ha preso una delle decisioni più pessime nella storia del www che doveva principalmente trarre da Scheme per l'ispirazione della meccanica della lingua, che è qualcosa che gli sviluppatori Java non sembrano aver apprezzato molto (cosa che trovo molto divertente).
JavaScript utilizza l'ereditarietà 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 passati in giro come qualsiasi altro oggetto o tipo di dati e di essere riutilizzati in differenti contesti e persino essere applicati agli oggetti al volo come se fossero stati dichiarati come membri di oggetti reali dall'inizio. È praticamente urlante essere utilizzato per architetture basate sugli eventi che devono normalizzare una tonnellata di spazzatura proprietaria o gestire problemi di interfaccia utente non lineari.
Alla fine dell'alba del web è l'unico linguaggio che sia mai stato seriamente all'altezza del compito di normalizzare i browser attraverso una vera guerra dei browser in cui Netscape e IE hanno provato a fare le cose diversamente di proposito, seguite da 10+ anni di tregua nei browser in cui IE ha fatto le cose in modo diverso perché la MS è pigra e auto-trincerata in alcune pratiche anti-competitive virtuosamente stupide risultanti nella stagnazione del browser, e ora un mondo in cui i browser stanno finalmente iniziando a concordare le stesse specifiche generali per quanto riguarda in HTML, CSS e DOM API con IE sono solo 2-3 anni indietro rispetto agli ultimi sviluppi piuttosto che 10 a causa di Google e Mozilla che eliminano i compilatori JIT che hanno fatto apparire i numeri delle prestazioni di IE così patetici che MS è stata finalmente svergognata nel modernizzare correttamente i loro maledetti browser . IE9 è il primo ad aggiornare seriamente il supporto dell'API DOM ai livelli supportati da Netscape nel 2000.
JS ha avuto competizione sotto forma di applet Java e ActionScript per Flash di Adobe. Questo è tutto sul serio fronte dei contendenti. MS ha cercato di spingere VB ma ha fallito miseramente perché ... beh ... VB. Inoltre, proprietario. In realtà c'erano molti più siti Flash di quanto la maggior parte delle persone capisca. Non riuscivi a trovare le cose stupide con i motori di ricerca. Le applet facevano le loro cose, ed era brutto. Davvero brutto. JS era l'unico linguaggio che ha realmente affrontato il problema di lavorare nel contesto di più browser da persone che non erano d'accordo su chi stava impostando le specifiche con le quali avrebbero dovuto fare i conti.
Negli ultimi anni, JS è esploso in un campo di applicazione molto più ampio. In combinazione con altre tecnologie web, è in grado di battere fondamentalmente tutte le altre soluzioni sul fronte mobile dal momento che + la tecnologia web è davvero l'unica scelta realistica in questo momento se davvero vuoi scrivere un'app e farlo funzionare su tutto.
Quindi no, e sì, sono un grande fan, ma non penso che abbia danneggiato tutti gli altri contendenti sul lato client per caso, più di quanto non diventi esplosivo, il popolare al di fuori del browser potrebbe essere considerato un incidente adesso . Prima di JS, non c'erano molte lingue simili a Scheme che non fossero principalmente accademiche. Ciò ha dato a JS alcuni potenti vantaggi e le esigenze uniche del lato client hanno reso possibile che quei vantaggi diventassero lentamente chiari.