65 votes

Investissement d'avenir: Erlang vs Scala

depuis la programmation simultanée devient sans cesse plus important, je me demandais ce que vous pensez d'Erlang vs Scala à cet égard. Il me semble que la Scala a une plus grande base d'utilisateurs et potentiellement un avenir meilleur que Erlang. En outre, Scala est une sorte de java.

Je sais que ces questions sont toujours un peu subjectif, mais ce qui serait le mieux investissement d'avenir: Erlang ou Scala. Ou même une autre langue?

Merci, Marque

87voto

romusz Points 1356

Erlang a été conçu pour simultanées, à tolérance de pannes des systèmes de communication. Vous pouvez facilement écrire des serveurs qui gèrent un grand nombre de connexions réseau et (grâce à un garbage collector par Erlang processus) les serveurs peuvent conserver soft en temps réel les caractéristiques (c'est à dire, l'ensemble du serveur n'est pas en pause jusqu'à ce que le GC se termine). Vous pouvez aussi hot-swap Erlang code, de le distribuer à travers plusieurs nœuds, etc. C'est pourquoi (sans doute) la plus évolutive serveur XMPP (ejabberd) est écrit en Erlang. Le pian (un serveur web) est un autre exemple où Erlang excelle, voir: http://www.sics.se/~joe/apachevsyaws.html. Riak/Canapé sont des exemples de NoSQL DB construire avec Erlang. Ce sont les problèmes où l'Erlang est un excellent choix.

Mais Erlang VM est pas aussi rapide que la JVM en termes de matières premières des calculs, de sorte que dès que vous avez besoin de faire quelque chose de calcul intensif (par exemple, la modélisation financière) de la JVM sera votre préféré plate-forme. En outre, Erlang simultanéité de modèle (les acteurs) est cuit dans la langue. Si cela ne résout pas le problème que vous essayez de résoudre, alors vous ne serez pas heureux avec Erlang.

Scala est plus "général" de la langue, en un sens, que la simultanéité, de l'évolutivité horizontale, ou la tolérance à l'erreur n'est pas partie de la langue. Il est résolu au niveau des bibliothèques (c'est pourquoi il y a au moins 3 implémentations des acteurs de la Scala). La bonne chose est que vous pouvez choisir de simultanéité modèle qui s'adapte à votre domaine. Par exemple, si vous avez besoin de logiciels de la mémoire transactionnelle (STM), il suffit de choisir Akka et vous êtes bon pour aller (http://akka.io/).

Il y a en Plus toute l'argumentation qu'avec Scala, vous pouvez tirer parti de votre "JVM investissements" et la multitude de JVM libs.

Vous n'avez pas à donner des infos sur ce genre de logiciel que vous souhaitez écrire avec l'une de ces langues, il est donc difficile de vous donner une réponse définitive. Ayant dit que, compte tenu de tout ce qui précède, Scala peut être plus "sécuritaire" de l'investissement que Erlang (pas bashing Erlang/OTP à tous, c'est une belle langue/plate-forme).

BTW. Si un seul ordinateur dans la simultanéité est important pour vous Clojure (http://clojure.org/) ne doit pas être négligée (également JVM de la langue).

UPDATE1: Si vous aimez ce Erlang offre mais pas de sa syntaxe, de prendre un coup d'oeil à elixir-lang.org

37voto

Robert Greiner Points 16237

Ce n'est pas grave il suffit de choisir un et de s'y tenir pendant un certain temps. Apprendre quelques trucs, faire des choses cool et soit aller de l'avant avec cette langue, ou de passer à un autre.

À l'égard de l'apprentissage de la programmation simultanée, soit fera l'affaire. La clé ici est que vous allez apprendre quelque chose de nouveau et, sauf si il y a un travail d'ouverture que vous essayez d'obtenir embauché pour qui utilise Erlang plus précisément, il n'a vraiment pas d'importance. De Plus, même si cette ouverture n'a besoin d'Erlang, vous serait probablement encore ont une bonne chance si tu savais Scala vraiment bien.

Il suffit de penser tout le temps que vous avez passé à essayer de choisir une nouvelle langue aurait pu être mieux dépensé si vous avez juste pris un et déjà commencé à apprendre maintenant.

5voto

Diego Sevilla Points 17274

Les deux langues, à la base, ne sont pas difficile à apprendre, et aussi pour apprendre les fonctionnalités de simultanéité qu'ils fournissent. En fait, la Scala acteurs sont influencés par Erlang acteurs. Je voudrais aller à tous les deux, prenez votre temps en regardant leurs construire, de faire des tests dans les problèmes de simultanéité, etc.

Si vous connaissez Java, Scala sera plus naturel, comme Erlang est plus comme prolog. Si, au contraire, vous êtes plus orienté vers les mathématiques ou logiques type de langues, commencer avec Erlang.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X