2010-12-11 2 views
1

A http://nodejs.org/#about il dit le texte suivant:Autre langue (cadres) dans laquelle la boucle d'événements est exposée en tant que construction de langage?

« Noeud est similaire dans sa conception à et influencé par des systèmes tels que Ruby machine événement ou Python Twisted nœud prend le modèle d'événement un peu plus-elle présente la. boucle d'événement comme une construction de la langue au lieu de bibliothèque. "

Existe-t-il d'autres cadres ou langages qui exposent également la boucle d'événements?

Répondre

5

Tcl a eu cette capacité tout au long (2 dernières décennies).Voir http://www.tcl.tk/about/netserver.html

Cela ne veut pas dire que Tcl fait - ou devrait faire - tout ce que Javascript et/ou node.js fait. Mais c'est une réponse valable à la question de savoir «quels autres cadres ou langages ... exposent également la boucle d'événement?

1

Pour être honnête, je ne pense pas qu'il y ait quelque chose de comparable à Node.js pour le moment.

Pourquoi? Eh bien, parce que JavaScript était un thread unique depuis le début, cela a fait évoluer le langage dans ce qu'il est aujourd'hui, un langage parfaitement adapté à la programmation asynchrone, comme vous le faites dans Node.js.

Les fonctions étant des objets de première classe, ainsi que d'avoir des fermetures est doit si vous voulez une expérience de type nœud. Par exemple, vous pouvez tout aussi bien entourer le langage C autour de l'événement lib et l'utiliser. Mais à quel point cela serait-il amusant? Même avec twisted, vous n'approchez même pas de l'expérience Node.js. Le deuxième point est que Node.js a - à l'exception des fonctions de synchronisation des modules fs - aucune fonction de blocage, alors même si vous pouvez certainement faire ce style de programmation en Python, vous ne savez jamais avec certitude si cet appel de bibliothèque est .nn Je ne vais pas bloquer tout votre programme. Et tuez le débit de votre serveur.

Aussi Node est rapide, comme en VRAIMENT rapide. V8 est définitivement en avance sur Python et Ruby, oui vous pouvez écrire des C-Extensions pour les deux, mais vous pouvez tout aussi bien le faire pour Node.js. Un autre avantage de l'utilisation de V8, Google investit une tonne de temps/argent dans ce moteur, une autre amélioration jusqu'à 2x est déjà sur le chemin avec Crankshaft. Node.js a plus de points positifs, c'est un framework complet (alors que Twisted est principalement en réseau asynchrone) et c'est du JavaScript. Ce dernier peut sembler stupide, mais la possibilité de réutiliser le code et de ne pas avoir à changer de contexte, tout en étant capable d'utiliser des frameworks matures pour la manipulation DOM (bien, c'est-à-dire dès que jsom entre dans un état plus stable) est une autre caractéristique de tueur.

Si vous ne l'avez pas encore fait, je vous recommande de regarder quelques-unes des conférences énumérées sur notre Tag Wiki.
Surtout le YUI montre quelles possibilités nous attendent dans un proche avenir.

Donc, pour résumer:
Bien qu'il ya pas mal de cadres là-bas qui ont une boucle d'événement, juste avoir la boucle elle-même ne vous donnera pas la même expérience que Node.js, vous devriez donc Ne vous attendez pas à une expérience comparable lorsque vous faites des choses en C ou Java par exemple.

+1

Downvoter, prendre soin d'élaborer? –

+1

Bien sûr. Votre réponse sentait l'évangélisation gratuite de node.js et n'a pas répondu à la question. Vous auriez pu arrêter avec votre commentaire "Je ne pense pas qu'il y ait quelque chose de comparable" et en faire un simple commentaire à la question. En tout cas, c'était une question rhétorique de ma part: je savais que Tcl était une réponse valable tout le long. Je n'accepterai pas ma propre réponse tant que les autres n'auront pas eu le temps de fournir d'autres réponses éventuellement plus complètes à la question (autres langues que Tcl?) –

+0

Puis changez le titre de votre question "..exposé comme langue construction?" me dit qu'il devrait se sentir * 100% * naturel lorsque vous écrivez du code asynchrone, et vous ne devriez pas avoir à vous inquiéter que tous les autres appels pourraient être potentiellement bloquants. –

0

Pour la plate-forme java je suppose que vous pouvez comparer netty à Node.js

+0

Oui il a une boucle d'évènement, mais c'est tout ce qu'ils ont en commun, je peux tout aussi bien l'écrire en C, Java elle-même a peu de soutien pour ce genre de programmation. Cela ne me semble pas naturel. –

+0

Le codage node.js semble plus naturel, mais avec les deux outils, vous pouvez écrire les mêmes applications de manière non bloquante – Alfred

Questions connexes