J'ai posé cette question sur SO mais on m'a suggéré d'essayer ici. Alors voilà:
Jusqu'à présent, ma compréhension de Javascript est qu'il s'agit d'un langage côté client qui capture les événements et rend une page Web dynamique.
Mais en lisant la comparaison entre MongoDB et CouchDB, j'ai remarqué que les deux utilisent Javascript. Cela me fait me demander la raison du choix de JavaScript par rapport aux autres langages conventionnels.
Je suppose que j'essaie de comprendre le rôle de JavaScript et ses avantages par rapport à d'autres langues.
Mise à jour: je ne pose pas de questions sur les langues / pilotes pris en charge par les deux bases de données. La comparaison dit:
CouchDB et MongoDB utilisent Javascript. CouchDB utilise largement Javascript, y compris dans la construction de vues .
MongoDB prend également en charge l'exécution de fonctions javascript arbitraires côté serveur et utilise javascript pour les opérations de mappage / réduction.
Mon manque de compréhension concerne la raison pour laquelle Javascript est utilisé pour le travail backend. Pourquoi est-il préférable de créer des vues dans CouchDB ou d'utiliser des opérations de carte / réduction? Pourquoi C / C ++ ou Java n'ont pas été utilisés? Quels sont les avantages d'utiliser Javascript pour un tel travail back-end?
la source
Réponses:
Code mobile et multiplateforme
JavaScript est ce qu'on appelle le code mobile , le code est transporté du serveur (MongoDB et CouchDB dans ce cas) au client (le navigateur Web) et exécuté sur le client sans processus d'installation.
Les environnements d'exécution JavaScript (navigateurs Web) sont également largement disponibles sur de nombreuses plateformes. Cela fait de JavaScript un bon langage multiplateforme .
JavaScript n'est pas utilisé comme langue principale principale
Le backend MongoDB est implémenté en C ++ et le CouchDB est implémenté en Erlang. Donc, JavaScript n'est pas utilisé comme langue principale pour le backend de ces systèmes.
De mongodb.com :
De couchdb.apache.com :
la source
Parce que JavaScript est un langage de script.
C'est un langage flexible et dynamique familier aux gens.
L'autre raison pour laquelle JavaScript est utilisé est qu'il s'aligne bien avec le format JSON utilisé par ces bases de données.
Et enfin, ces bases de données ont besoin d'un langage qui puisse être interprété. Parce que le code de ces requêtes est envoyé sur le réseau.
Vous avez donc besoin d'un
Langue. Je ne pense pas que JavaScript soit un mauvais choix ici. Il est probablement choisi pour avoir une syntaxe de style C.
Maintenant, pourquoi JavaScript a été choisi sur un autre langage de script est une bonne question.
la source
Now why JavaScript was chosen over another scripting language
: Je pourrais supposer que c'est parce que JavaScript est le langage de script le plus utilisé, extrêmement bien testé via son utilisation sur les navigateurs, et qu'il existe quelques excellentes implémentations d'interprètes open source. CouchDB utiliseuneval()
, un indice qu'ils ont construit leur interprète sur SpiderMonkey .Nous devrons tous manger une tarte humble quand nous nous rendrons compte que JS est utilisé pour écrire:
Bases de données
Les serveurs
Système opérateur
et une myriade de bibliothèques, de frameworks, de moteurs de rendu et de langages de compilation,
... parce que c'est mieux.
Sérieusement, s'il vous plaît ... écoutez-moi. Ne frappe pas le messager.
Demandez à Microsoft pourquoi ils construisent Windows 8 avec JS en tant que citoyen de première classe. Ou le nouveau système d'exploitation mobile de Mozilla, ou Rivertrail d'IBM, PhoneGap, ExtJS ou WebGL.
Mais, mieux c'est subjectif: nous devons donc explorer et comparer. Qu'est-ce qui est mieux?
Ça a commencé avec AJAX ... et ça ne s'est pas arrêté.
E / S non bloquantes. C'est vraiment un gros problème et mérite d'être connu. Dans JS, c'est le modèle de rappel. Il s'avère que l'utilisation de rappels peut activer un serveur non bloquant: Node.js ~ environ 8 lignes de code. setTimeout () est un rappel. Traitement asynchrone à un seul thread.
La flexibilité. Quelle? -Java et C ont des classes et une interface, mais sont appelés orientés objet. JavaScript n'a que des objets. Mais ça s'appelle ... autre chose.
-Avoir uniquement des objets est une bonne chose pour la flexibilité, car les membres et les méthodes sont entièrement dynamiques au moment de l'exécution. -L'hérédité prototypique n'est pas effrayante. Certains experts le décrivent comme un pack d'objets. -JS est amical sur les erreurs. -Le code peut se mélanger pour aboutir à des Composites-Composants, sans trop d'effort, ni connaissance des ... "interfaces", "abstraction", "héritage", "encapsulation", "polymorphisme". De bonnes choses, mais comme Nike, en JS; vous venez de le faire.
Traduction de données. Avec JSON, les objets peuvent être transférés d'avant en arrière, d'arrière en avant. Aucune traduction de données XML. JSON est clairement simple.
Courbe d'apprentissage faible. Il est possible de couper et coller du code extrêmement complexe, puis de le déboguer par étapes pour qu'il existe. J'entends un collègue ... «noobs». Mais ce n'est pas seulement pour les noobs.
-Il s'avère que c'est une fonctionnalité vraiment intéressante pour le prototypage rapide. Et des sites surgissent partout qui exploitent cette conception dans le navigateur, et plus largement; prototypage à l'exécution. Checkout JSFiddle et CodePen, également MicroJS. GitHub.
MISE À JOUR: depuis cette publication, JavaScript est maintenant largement utilisé par d'autres langues.
la source
Vous pouvez faire moins avec plus - Il y a quelques écoles à ce sujet. L'école de verbosité veut que tout soit expliqué dans les moindres détails que tout idiot puisse comprendre. JS est membre de l'école opposée où vous pouvez superposer la complexité de manière à ce qu'il soit plus facile d'avoir une vue d'ensemble avant de comprendre le fonctionnement des détails les plus fins. Il est beaucoup plus facile d'écrire sur une interface en JS que dans la plupart des langues, IMO.
Fonctions de première classe, fermetures, héritage prototypique - C'est un combo vraiment, vraiment flexible. Nous pouvons imiter les cours si nous le voulons. Mais cela est considéré comme un effort quelque peu inutile par ceux qui comprennent très bien JS. Le compositing convient beaucoup mieux à JS que l'héritage chaîné.
Le blocage est utile à un niveau supérieur. Oui, tu m'as entendu. Il vous aide à rester concentré sur le JS en tant que messager plutôt que sur le cheval de bataille et les processus se mettent à peu près en file d'attente tout en permettant des interruptions du comportement asynchrone entre les appels de fonction.
Je dirais que la courbe d'apprentissage est en fait un peu abrupte pour écrire un JS puissant mais une fois que vous y êtes, c'est une huée. Cependant, il n'est pas du tout difficile d'implémenter des éléments précuits dans JS au niveau de compétence inférieur.
la source
Cette question est un peu datée mais la raison d'utiliser JavaScript vs Java / C ++ est que ni Java ni C ++ ne supportent facilement les fragments de code.
Même si JavaScript n'a jamais été inventé, Java ou C ++ auraient été un bon choix pour les fragments de code source qui s'exécuteraient côté serveur. Ils auraient choisi une autre langue ou inventé la leur. De retour dans la journée, les produits utilisés pour créer leur propre langue, définir leurs propres règles de production, AST, interprète, etc., spécialisés dans leur domaine.
Mais avec JavaScript, il est extrêmement facile de créer un langage spécifique au domaine (DSL) pour votre produit et d'intégrer le moteur sans avoir à vous soucier de créer toutes les autres infrastructures non liées au domaine.
la source
Modèle de programmation piloté par les événements
JavaScript a été créé avec une approche de la mémoire non partagée basée sur les événements pour l'informatique. Dans le développement de l'interface utilisateur, c'est un chapeau complètement ancien. Il n'y a aucune hypothèse que votre "application" contrôle un processus. Il n'y a pas d'API de processus. Il n'y a pas non plus de fonction principale.
Votre "application" est une collection de scripts qui seront exécutés lorsqu'une chose particulière se produira telle que
Cela correspond assez bien aux petits morceaux de logique de traitement nécessaires aux transformations de données.
Langage de script
Le fait de pouvoir exécuter sans étape de compilation signifie que les instructions de traitement peuvent être stockées facilement. Vous pouvez facilement enregistrer le script sous forme de texte et le transmettre sans aucun type de données ou connaissances particulières.
Assez simple, stable et rétrocompatible
Le code que vous écrivez aujourd'hui n'est pas très différent d'il y a 10 ans. Le contrôle de version n'est probablement pas un problème majeur pour les personnes qui l'intègrent.
Performant
Il existe plusieurs bons moteurs open source avec une tonne de travail. Il s'exécute un peu plus rapidement que de nombreuses alternatives.
Accolades
Beaucoup de gens sont limités dans leur confort avec une gamme de langages de programmation. Ils savent seulement programmer Java ou C # par exemple. Ils s'attendent donc à apprendre JavaScript facilement car il semble familier. C'est bien sûr une illusion. Quand j'ai appris Python, c'était à peu près au même rythme que l'apprentissage de JavaScript. La syntaxe n'a de signification émotionnelle que si elle n'est pas complètement obscure.
la source