Perché oggi esiste solo il supporto per JavaScript e alcuni VBScript nei browser? So che JavaScript è buono e tutto, ma la possibilità di utilizzare un altro linguaggio di programmazione non contribuirebbe a promuovere diversi stili di sviluppo?
Perché oggi esiste solo il supporto per JavaScript e alcuni VBScript nei browser? So che JavaScript è buono e tutto, ma la possibilità di utilizzare un altro linguaggio di programmazione non contribuirebbe a promuovere diversi stili di sviluppo?
Risposte:
Non è necessario aggiungere il supporto per più lingue, una soluzione sarebbe quella di standardizzare un bytecode generico che potrebbe essere utilizzato dagli implementatori del linguaggio. Ma al momento non ci sono piani per questo (è stato suggerito).
Le lingue possono essere implementate anche su Javascript. Javascript è abbastanza buono da consentire l'implementazione di altre lingue. E ci sono già molti esempi di questo.
<script type="text/cpp" src="test.cpp"></script>
.
JavaScript è lo standard di fatto ed è stato dal 1996. Essere uno standard semplicemente perché non c'è concorrenza non è esattamente giusto, ma non ho sentito molte lamentele sul perché non sia inclusa un'altra lingua.
L'aggiunta di un altro linguaggio "standard" promuove tutti i tipi di piccoli problemi divertenti.
Pensa alle incoerenze tra i browser per il loro supporto del solo javascript. Ora pensa a come sarebbe se ci fossero più lingue.
I browser devono essere standardizzati, in modo che ciò che sviluppi funzioni ovunque, su tutti i browser.
Se hai più lingue a disposizione, devi assicurarti che funzionino tutte in modo simile. Se sei uno sviluppatore web e hai una scelta di lingue, che possono essere o meno supportate in alcune località, allora questo è un ulteriore mal di testa.
Javascript è un linguaggio molto flessibile, è un imperativo, è funzionale, può essere OOP (dopo una moda con prototipi), ed è interpretato. Ora con motori decenti come quelli di Chrome, è ragionevolmente in grado di fare cose buone. I linguaggi extra riportano semplicemente le cose qui, guardano VBScript, solo IE, e quindi tutto ciò che è scritto in esso è legato a un particolare browser e piattaforma, incubo.
Invece di inserirli nei browser, ai fornitori piace creare plug-in per browser ingombranti: Java, Flash, Silverlight, ecc. Ciò garantisce coerenza multipiattaforma.
Uno dei motivi è che è praticamente impossibile per i diversi fornitori di browser anche concordare un'implementazione standard di Javascript e Javascript è in circolazione da sempre, almeno dal punto di vista del linguaggio web. Quindi la maggior parte delle persone pensa giustamente che ottenere un altro linguaggio lato client nell'ecosistema e convincere tutti i fornitori a sostenerlo sia praticamente impossibile e la maggior parte delle persone che potrebbero potenzialmente farlo accadere sono già coinvolte in problemi di standardizzazione Javascript che penso sia molto meglio uso del loro tempo.
Ci sono diverse risposte qui che sostengono che il supporto di più lingue renderebbe molto odioso per i costruttori di browser Web assicurarsi che siano conformi a tutte le lingue. Per me questo sembra errato.
Java, ad esempio, è uno standard estremamente ben definito. In sostanza, tutto ciò che devi fare è esporre il DOM del browser come API Java ed eseguire Java Virtual Machine (JVM) all'interno del tuo browser web. È possibile specificare che il codice di scripting debba essere consegnato sotto forma di file JAR compilati e firmati o come codice sorgente JavaScript. Se il browser rileva JavaScript, potrebbe eseguirlo tramite un interprete dedicato (come avviene oggi) o tramite Rhino in cima alla JVM. Se incontra file jar, crea un nuovo caricatore di classi e sandbox di sicurezza, carica il bytecode java in memoria ed esegue. Ciò sarebbe completamente compatibile con le pagine Web esistenti e consentirebbe al browser, con un solo colpo, di supportare dozzine di lingue in esecuzione sulla JVM.
Altri vantaggi:
Credo che JavaScript guadagnerà ancora più terreno come linguaggio standard per il Web. Stiamo assistendo a un aumento del JavaScript lato server. Ecco alcuni esempi di implementazioni di questo potente linguaggio sul server:
POW Web Server SJS - JavaScript lato server per POW Web Server, che viene eseguito come estensione di Firefox o come applicazione XULRunner. SJS svolge un ruolo simile a quello di PHP in Apache in quanto può connettersi a database e generare contenuti sul lato client.
NodeJS - JavaScript lato server che utilizza un modello basato su eventi. È costruito utilizzando il motore JavaScript V8 di Google . NodeJS è pubblicizzato come uno strumento per la creazione di programmi di rete scalabili. Un server Web "Hello World" può essere scritto in sole 6 righe!
Jaxer : un server JavaScript che interpreta tutti i blocchi di script con runat="server"
JavaScript lato server. Intere applicazioni Web possono essere scritte in JavaScript.
Rhino - JavaScript per Java - Mozilla ha creato questa implementazione JavaScript lato server che gira su Java. È essenzialmente un concetto simile a Querces PHP per Java , Jython, JRuby e molte altre astrazioni di altri linguaggi che girano su JVM. Rhino viene in genere utilizzato per incorporare JavaScript in Java per fornire strumenti di scripting agli utenti finali, ma potrebbe anche essere utilizzato per spostare il codice lato client sul server senza dover riscrivere la logica aziendale in un'altra lingua!
JQuery Claypool - Framework JavaScript lato server che utilizza la potenza di JQuery sul server. Molto bello! È stato sviluppato utilizzando l'implementazione JavaScript lato server di EnvJs di un browser.
EnvJs - Un browser senza testa costruito su Rhino.
Ciò che molte di queste implementazioni e framework dimostrano è che JavaScript sta diventando una forza così potente nello sviluppo Web che i leader della comunità hanno già iniziato a spostare JavaScript sul server. JavaScript è un linguaggio di programmazione funzionale estremamente potente e col passare del tempo sento che vedremo evolversi.
In sintesi, sembra una contraddizione portare le altre lingue sul browser quando invece possiamo portare questa singola lingua del browser sul server e colmare quel divario in un modo più unificato.
Esistono diversi esempi di strumenti che compileranno altre lingue in javascript, tra cui Haskel, Lisp e Python (probabilmente altri). Quindi, se vuoi lavorare in una di quelle lingue, puoi farlo.
E penso che uno dei miei professori dell'università abbia scritto un'implementazione dello schema in Javascript. Quindi se ti piace lo schema puoi farlo anche tu.
Le persone hanno aggirato la mancanza di varietà integrata in due modi: usando plugin come applet flash o java e costruendo livelli che usano javascript come loro "codice macchina", come jquery o google web toolkit. Se ci fosse un nuovo stile di sviluppo abbastanza popolare, le persone troverebbero un modo per ottenerlo.
Basta essere consapevoli se si esegue un runtime .net in javascript e diventa sempre popolare, alcuni circoli malediranno il tuo nome su Internet per sempre.