Qual è la base storica dell'utilizzo di Javascript nella programmazione web?


9

Vengo da un background di biologia scientifica in cui usiamo molto Python.

Ora che ho iniziato a iniziare con lo sviluppo Web, mi sono sempre trovato a chiedermi perché JavaScript sia la lingua principale sul lato client sul Web.

La predominanza di JavaScript è un incidente storico o qualcos'altro? Inoltre, sono curioso di sapere se ci sono ostacoli all'integrazione di Python nello scripting lato client?


Questo ha bisogno dell'attenzione del moderatore basata su meta.programmers.stackexchange.com/questions/363/… ?
Rein Henrichs,

@Rein - Potresti vote to closese ritieni che sia fuori tema. Se gli altri si sentono allo stesso modo, o loro, o un moderatore, seguiranno il tuo esempio.
jmort253,

@ jmort253 (Forse dovrei passare a meta) Non c'era consenso nel thread collegato e sono ambivalente. :(
Rein Henrichs

@Rein - Il processo di pensiero nei commenti va bene (in quanto funge da cartello, sul perché o perché no, la comunità ha deciso di agire su un post. Se non c'è accordo, fai quello che pensi sia meglio. :) Personalmente, penso che queste informazioni storiche possano aiutare gli altri a capire il futuro di JavaScript come lingua e perché è importante capire e adottare questa lingua.
jmort253,

Risposte:


16

JavaScript è stato il primo linguaggio di scripting reso disponibile in un popolare browser Web, quindi è stato implementato quasi universalmente. Essendo l'unico linguaggio di programmazione disponibile in tutti i browser più diffusi, non c'era altra scelta se non quella di essere il principale linguaggio di programmazione lato client.

Internet Explorer ha implementato JavaScript in un modo che consente motori di script collegabili (fornito con VBScript e JScript). Se hai preferito (come ho fatto io) scrivere il tuo codice in PerlScript o PythonScript, potresti, ma tutti i tuoi client dovevano avere quel linguaggio di script installato e dovevano usare IE. Potresti farlo per progetti interni, ma non funzionerebbe mai su Internet.


Qualcos'altro che ho trovato interessante erano i progetti per scrivere compilatori da python a javascript, ad esempio Pajamas pyjs.org .
rd108,

"Pajamas è una piattaforma di sviluppo RIA (Rich Internet Application) sia per Web che per desktop. Contiene un compilatore da Python a Javascript, un framework AJAX e un'API Widget Set. Il pigiama ha iniziato la sua vita come una porta Python di Google Web Toolkit, il Compilatore da Java a Javascript. Leggi le FAQ e l'elenco delle funzionalità. "
rd108,

Ci sono tonnellate di compilatori da qualcosa a javascript. CoffeeScript, TypeScript, ClojureScript, LispyScript, ecc.
Ecc

7

JavaScript è stato originariamente creato da Brendan Eich. È stato distribuito per la prima volta con la versione beta di Netscape Navigator 2.0 nel settembre 1995 come LiveScript, ma è stato ribattezzato JavaScript in un annuncio congiunto con Sun Microsystems nel dicembre 1995. Fu solo più tardi (nel 1996) che JavaScript fu presentato a Ecma International e alla fine divenne l'ECMAScript standardizzato.

Il suo attuale dominio sul mercato è in gran parte dovuto all'inerzia storica.

Fonte: http://en.wikipedia.org/wiki/JavaScript#History


2

Non sono sicuro, ma è un linguaggio di scripting leggero sul lato client. Penso che le sue origini dipendano dai primi browser Netscape (sebbene potrei sbagliarmi). In effetti, il suo stesso nome è stato cambiato prima del rilascio per includere la parola "java" anche se non aveva nulla a che fare con java. Fu una tattica rapida per guadagnare popolarità in quel momento.


1

Sono sicuro che ha molto a che fare con la storia.

Ma sono anche sicuro di non voler che i siti Web siano in grado di eseguire linguaggi di programmazione completi come python sul mio browser. Le implicazioni di sicurezza mi spaventerebbero da qualsiasi sito del genere (o dovrei essere molto sicuro che il sandbox del browser fosse a tenuta d'aria).


Questo non ha senso. L'IT spetta all'ambiente decidere quali API sono disponibili per un linguaggio di programmazione. Naturalmente, se Python fosse distribuito nei browser, avrebbe accesso alle stesse API che Javascript ha ora (come il DOM), quindi non avrebbe alcun modo di creare danni.
Andrea

@Andrea - potresti sostenere che una lingua sia tanto le sue librerie standard quanto la sua sintassi e semantica. Javascript non ha una libreria standard per l'I / O dei file, e questo è intenzionale, per motivi di sicurezza. Python ha librerie standard per l'I / O dei file e per molte altre cose che potrebbero essere considerate problemi di sicurezza. Non consentire questi e probabilmente non hai più a che fare con Python. Molto tempo fa, Python aveva un sandbox - ricordo che era lì intorno alla versione 1.5 - ma è stato abbandonato IIRC perché non era abbastanza usato ed era tutt'altro che a tenuta d'aria.
Steve314,

Sono in fase di scrittura librerie standard per I / O in Javascript. Naturalmente questi non sono disponibili nel browser. Sto solo dicendo che se Python fosse implementato nel browser, le librerie non sicure non sarebbero disponibili. E presumibilmente non ti mancheranno, dal momento che non sono pensati per essere utilizzati su un sito Web.
Andrea

-2

"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.


Citi due volte Scheme senza mai dire come JS si collega a Scheme. Certamente non pensi che JS abbia macro, espressioni S, ricorsione della coda, continuazioni o una qualsiasi delle altre caratteristiche distintive di Scheme - vero?
Gabe,

@Gabe. Controlla il 4 ° blocco di testo. Le chiusure, la digitazione dinamica e le funzioni di prima classe sono piuttosto importanti. Il fatto che JS utilizzi la sintassi c-like non consentirà l'uso delle macro Scheme. Non è una copia caratteristica per funzione di Scheme ma ne è sicuramente influenzata.
mike30,

Quindi chiusure e digitazione dinamica rendono un linguaggio simile allo Schema? Significa che C # è simile allo schema? Che dire di Ruby, Python e Perl? E perché Scheme piuttosto che Lisp o qualsiasi altra lingua simile?
Gabe,

@Gabe Non sono un esperto di Scheme ma su Wikipedia casuale direi che la combinazione di ambito lessicale, funzioni di prima classe e chiusure sono i tre che mettono JS molto più vicino a Scheme che a Java. Altrimenti stavo solo prendendo in considerazione la parola di Brendan Eich e supponevo che le principali funzioni di prima classe fossero le migliori.
Erik Reppen,

OK, quindi JS ha chiusure (che credo implicano funzioni di prima classe e scoping lessicale) e la tipizzazione dinamica, come Scheme. Dato che C # ha chiusure, tipizzazione dinamica e una forma limitata di espressioni S, ciò significa che C # è ancora più simile allo schema di JS?
Gabe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.