Perchè Javascript è usato in MongoDB e CouchDB invece di altri linguaggi come Java, C ++?

17

Ho fatto questa domanda su SO ma è stato suggerito di provare qui. Quindi ecco qui:

La mia comprensione di Javascript finora è che è un linguaggio lato client che cattura gli eventi e rende dinamica una pagina web.

Ma leggendo il confronto tra MongoDB e CouchDB ho notato che entrambi stanno usando Javascript. Questo mi fa riflettere sul motivo alla base della scelta del JavaScript rispetto ad altri linguaggi convenzionali.

Credo che sto cercando di capire il ruolo di JavaScript e i suoi vantaggi rispetto ad altri linguaggi.

Aggiornamento: non sto chiedendo informazioni sui linguaggi / driver supportati dai due database. Il confronto dice:

Both CouchDB and MongoDB make use of Javascript. CouchDB uses Javascript extensively including in the building of views.

MongoDB also supports running arbitrary javascript functions server-side and uses javascript for map/reduce operations.

La mia mancanza di comprensione riguarda il motivo per cui Javascript viene utilizzato per tutto il lavoro di back-end. Perché è preferibile per la creazione di viste in CouchDB o per l'utilizzo di mappe / operazioni di riduzione? Perché non sono stati usati C / C ++ o Java? Quali sono i vantaggi nell'uso di Javascript per questo tipo di lavoro di back-end?

    
posta jeff musk 24.11.2011 - 01:25
fonte

6 risposte

15

Codice cellulare e amp; Cross-platform

JavaScript è ciò che viene chiamato codice mobile , il codice viene trasportato dal server (MongoDB e CouchDB in questo caso) al client (il browser Web) ed eseguito sul client senza un processo di installazione.

Gli ambienti di runtime JavaScript (browser Web) sono anche ampiamente disponibili su molte piattaforme. Ciò rende JavaScript una buona lingua multipiattaforma .

JavaScript non viene utilizzato come lingua back-end primaria

Il backend MongoDB è implementato in C ++ e CouchDB è implementato in Erlang. Quindi JavaScript non è usato come lingua principale per il back-end per questi sistemi.

Da mongodb.com :

Written in C++

Da couchdb.apache.com :

CouchDB is written in Erlang, a robust functional programming language ideal for building concurrent distributed systems. Erlang allows for a flexible design that is easily scalable and readily extensible.

    
risposta data 24.11.2011 - 01:44
fonte
7

Perché JavaScript è un linguaggio di scripting.

È un linguaggio flessibile e dinamico che è familiare alle persone.

L'altra ragione per cui JavaScript è usato è perché si allinea bene con il formato JSON utilizzato da questi database.

E infine questi database hanno bisogno di un linguaggio che possa essere interpretato. Perché il codice per queste query viene inviato tramite la rete.

Quindi hai bisogno di un

  • dinamica
  • flessibile
  • familiare
  • interpretato

lingua. Non penso che JavaScript sia una pessima scelta qui. Probabilmente è stato scelto per avere la sintassi in stile C.

Ora perché JavaScript è stato scelto su un'altra lingua di scripting è una buona domanda.

    
risposta data 24.11.2011 - 01:37
fonte
6

Dovremo tutti mangiare humble-pie quando ci rendiamo conto che JS è usato per scrivere:

  • Database

  • Server

  • Sistema operativo

  • e una miriade di librerie, framework, motori di rendering e linguaggi di compilazione,

... perché è meglio.

Seriamente, per favore ... ascoltami. Non sparare al messaggero.

Chiedi a Microsoft perché stanno costruendo Windows 8 con JS come cittadino di prima classe. Oppure il nuovo sistema operativo mobile di Mozilla, o Rivertrail IBM, PhoneGap, ExtJS o WebGL.

Would any of these companies or projects have been successful if the experts did not find something better in implementation?

The answer is... They did. We did. So the theme here should be clear: there is a better way.

Ma, meglio è soggettivo: quindi dobbiamo eseguire il drill down e confrontare. Cosa c'è di meglio?

È iniziato con AJAX ... e non si è fermato.

  1. IO non bloccante.  Questo è davvero un grosso problema e vale la pena saperlo.  In JS questo è il pattern di callback.  Si scopre che l'utilizzo di callback può abilitare un server non bloccante: Node.js ~ circa 8 righe di codice.  setTimeout () è un callback. Elaborazione asincrona a thread singolo.

  2. Flessibilità.   Che cosa?   -Java e C hanno classi e interfacce, ma sono chiamati object-oriented.   JavaScript ha solo oggetti. Ma si chiama ... qualcos'altro.

    "Salvare gli oggetti - è una cosa carina per la flessibilità, perché membri e metodi sono completamente dinamici in fase di runtime.   -L'eredità prototipale non è spaventosa. Alcuni esperti lo descrivono come un pacchetto di oggetti. -JS è amichevole sugli errori.   -Codice può mescolarsi per dare origine a Composite-Components, senza molto sforzo, o conoscenza di ... 'interfacce', 'astrazione', 'ereditarietà', 'incapsulamento', 'polimorfismo'. Cose buone, ma come la Nike, in JS; lo fai e basta.

  3. Data-Traduzione.   Con JSON, gli oggetti possono essere trasferiti front-to-back, back-to-front. Nessuna traduzione di dati XML. JSON è chiaramente semplice.

  4. Curva di apprendimento bassa.   È possibile tagliare e incollare codice estremamente complesso, quindi eseguirne il debug in modo definitivo. Sento un collega ... "noobs". Ma non è solo per i noobs.

- Si scopre che questa è una funzionalità davvero interessante per la prototipazione rapida. E i siti stanno spuntando ovunque che fanno leva su questa cosa del design-in-browser, e più ampiamente; runtime-prototipazione. Acquista JSFiddle e CodePen, anche MicroJS. GitHub.

Like Transformers, with JS, there is more than meets the eye.  

It is a big deal.

AGGIORNAMENTO: dal momento che questo JavaScript viene ora utilizzato ampiamente da altre lingue.

In Java - check out Nashorn.
In C++ - check out Emscripten, or ASM.
And there are many more.

The big surprise since the original writing of this answer was JS cross-compilation.

It turns out that many languages can be compiled to JS.

And the community is encouraging that... CoffeeScript, Dart, etc.    

This is not my specific area of expertise, but it is going on in big ways.

Simply put, we just don't know how the dynamism of JS is going to hash out yet. 
    
risposta data 14.08.2012 - 00:15
fonte
1
  • Puoi fare di meno con più - ci sono un paio di scuole su questo. La scuola della verbosità vuole che tutto sia spiegato dettagliatamente in modo superbo che ogni idiota può capire. JS è un membro della scuola opposta in cui è possibile stratificare la complessità in modo tale che sia più facile ottenere il quadro generale prima di capire come funzionano i dettagli più fini. È molto più facile scrivere su un'interfaccia in JS che nella maggior parte delle lingue, IMO.

  • Funzioni di prima classe, chiusure, eredità prototipale - È una combinazione davvero flessibile. Possiamo imitare le classi se vogliamo. Ma questo è visto come un tentativo un po 'inutile da parte di coloro che capiscono davvero bene JS. Il compositing si adatta a JS molto meglio dell'ereditarietà concatenata.

  • Il blocco è utile a un livello superiore. Sì, mi hai sentito. Ti aiuta a mantenere l'attenzione sul JS come messenger piuttosto che sul cavallo di battaglia e processa praticamente da solo mentre consente interruzioni dal comportamento asincrono tra le chiamate di funzione.

  • Direi che la curva di apprendimento è in realtà un po 'ripida per scrivere potenti JS ma una volta che sei lì, è un vero spasso. Tuttavia, non è affatto difficile implementare roba pre-cotta in JS al livello di abilità inferiore.

risposta data 14.08.2012 - 01:40
fonte
0

Questa domanda è un po 'datata ma la ragione per usare JavaScript vs Java / C ++ è che né Java né C ++ supportano facilmente i frammenti di codice.

Anche se JavaScript non è mai stato inventato, Java e C ++ sarebbero stati una buona scelta per i frammenti di codice sorgente che verranno eseguiti sul lato server. Avrebbero scelto un'altra lingua o inventato la propria. Nel passato i prodotti utilizzati per creare la propria lingua, definiscono le proprie regole di produzione, AST, interpreti ecc. Specializzati nel loro dominio.

Ma con JavaScript è estremamente facile creare una DSL (Domain Specific Language) per il tuo prodotto e incorporare il motore senza doversi preoccupare di creare tutte le altre infrastrutture non correlate al dominio.

    
risposta data 14.08.2012 - 01:16
fonte
0

Modello di programmazione guidato dagli eventi

JavaScript è stato creato con un approccio basato sulla memoria non condivisa da eventi per l'elaborazione. Nello sviluppo dell'interfaccia utente questo è completamente vecchio. Non vi è alcun presupposto che la vostra "applicazione" abbia il controllo di un processo. Non c'è alcuna API di processo. Né esiste una funzione principale.

La tua "applicazione" è una raccolta di script che verrà eseguita quando accade una cosa particolare come

  • lo script è caricato nel browser
  • il caricamento della pagina html raggiunge un certo punto
  • su una particolare interazione dell'utente con un determinato elemento

Questo si combina abbastanza bene con i piccoli pezzi della logica di elaborazione necessaria per le trasformazioni di dati.

Lingua di scripting

Essere in grado di eseguire senza una fase di compilazione significa che le istruzioni di elaborazione possono essere memorizzate facilmente. Puoi salvare facilmente lo script come testo e trasferirlo senza particolari tipi di dati o conoscenze.

Abbastanza semplice, stabile e retrocompatibile

Il codice che scrivi oggi non è molto diverso da 10 anni fa. Non è probabile che il controllo delle versioni sia un problema per le persone che lo incorporano.

Performant

Ci sono diversi buoni motori open source là fuori con un sacco di lavoro. Esegue un po 'più veloce rispetto a molte alternative.

Parentesi graffe

Molte persone sono limitate nel loro comfort con una gamma di linguaggi di programmazione. Sanno solo come programmare Java o C # per esempio. Quindi si aspettano di imparare JavaScript facilmente perché sembra familiare. Questa è ovviamente un'illusione. Quando ho imparato Python era quasi allo stesso ritmo dell'apprendimento di JavaScript. La sintassi è solo emotivamente significativa supponendo che non sia completamente oscura.

    
risposta data 28.04.2015 - 19:18
fonte

Leggi altre domande sui tag