Pourquoi avez-vous décidé "contre" L'utilisation D'Erlang?

avez-vous réellement" essayé " (signifie programmé dans, pas simplement lire un article sur elle) Erlang et décidé contre elle pour un projet? Si oui, pourquoi? Aussi, si vous avez choisi de revenir à votre ancienne langue, ou d'utiliser une autre langue fonctionnelle comme F#, Haskell, Clojure, Scala, ou quelque chose d'autre alors cela compte aussi, et dire pourquoi.

72
demandé sur Zubair 2010-02-04 14:52:34

15 réponses

je suis retourné à Haskell pour mes projets personnels de Erlang pour la simple vertu du système de type étonnant de Haskell. Erlang te donne une tonne d'outils à gérer quand les choses vont mal. Haskell vous donne des outils pour vous empêcher de vous tromper.

lorsque vous travaillez dans une langue avec un système de type fort, vous prouvez effectivement des théorèmes libres sur votre code à chaque Compilation.

vous obtenez également un tas de sucre en surcharge de la machine typeclass de Haskell, mais c'est largement secondaire pour moi -- même si cela me permet d'exprimer un certain nombre d'abstractions qui seraient terriblement verbeuses ou non idiomatiques et inutilisables dans Erlang (par exemple catégorie-extras de Haskell).

j'aime Erlang, j'aime ses canaux et son évolutivité sans effort. Je me tourne vers elle quand ce sont les choses dont j'ai besoin. Haskell n'est pas une panacée. Je donne une meilleure compréhension de la consommation d'espace. J'abandonne l'magique un passage du garbage collector. J'abandonne les modèles OTP et tout ce travail d'extensibilité.

mais il est difficile pour moi de renoncer à la couverture de sécurité qui, comme on le dit souvent, à Haskell, si elle est dactylographiée, il est probablement correct.

49
répondu Edward Kmett 2011-07-02 00:59:44

nous utilisons Haskell, OCaml et (maintenant) F# donc pour nous cela n'a rien à voir avec le manque de syntaxe de type C. Plutôt nous sautons Erlang parce que:

  • C'est dynamiquement typés (nous sommes fans de Haskell type de système)
  • ne fournit pas un type de chaîne de caractères "réel" (je comprends pourquoi, mais c'est agaçant que cela n'ait pas encore été corrigé au niveau de la langue)
  • a tendance à avoir des pilotes de base de données médiocres (incomplets ou non)
  • Ce n'est pas les piles et ne semble pas avoir une communauté de travail sur la correction de ce. Si c'est le cas, ce n'est pas très visible. Haskell a au moins Hackage, et je suppose que c'est ce qui nous fait choisir cette langue plutôt qu'une autre. Dans les environnements Windows F# est sur le point d'avoir l'avantage ultime ici.

il y a probablement d'autres raisons pour lesquelles je ne peux pas penser pour le moment, mais ce sont les points majeurs.

26
répondu Shaun 2010-02-04 17:34:42

la meilleure raison d'éviter Erlang est quand vous ne pouvez pas vous engager à la manière fonctionnelle de la programmation.

j'ai lu un blog anti-Erlang il y a quelques semaines, et l'une des critiques de L'auteur sur Erlang est qu'il ne pouvait pas comprendre comment faire revenir une fonction d'une valeur différente chaque fois qu'il l'a appelé avec les mêmes arguments. Ce qu'il n'avait pas compris, C'est Qu'Erlang était là exprès. C'est comme ça Qu'Erlang réussit à fonctionner sur plusieurs processeurs. sans fermeture explicite. La programmation purement fonctionnelle est une programmation sans effets secondaires. Vous pouvez arm-twist Erlang dans le travail comme notre blogueur ranting voulu, en ajoutant des effets secondaires,mais en faisant cela, vous jetez loin la valeur des offres Erlang.

Pure programmation fonctionnelle n'est pas la seule bonne façon de programme. Tout n'a pas besoin d'être mathématiquement rigoureux. Si vous déterminez que votre application serait mieux écrit dans un langage qui abuse le terme "fonction", mieux rayez Erlang de votre liste.

25
répondu Warren Young 2012-03-02 19:25:06

J'ai déjà utilisé Erlang dans quelques projets. Je l'utilise souvent pour des services reposants. Cependant, je ne l'utilise pas pour les applications web frontales complexes où les outils comme Ruby on Rails sont bien meilleurs. Mais pour le Rôdeur dans les coulisses, Je ne connais pas de meilleur outil Qu'Erlang.

j'utilise aussi quelques applications écrites en Erlang. J'utilise un peu CouchDB et RabbitMQ et j'ai installé quelques serveurs EJabberd. Ces applications sont les plus puissantes, les plus faciles et des outils flexibles dans leur domaine.

ne pas vouloir utiliser Erlang parce qu'il n'utilise pas JVM est dans mon esprit assez stupide. JVM n'est pas un outil magique qui est le meilleur en faisant tout dans le monde. Dans mon esprit, la capacité de choisir parmi un arsenal d'outils différents et de ne pas être coincé dans une seule langue ou un cadre est ce qui sépare les experts des singes du code.

PS: après avoir lu mon commentaire dans le contexte, je l'ai remarqué on dirait que j'appelais oxbow_lakes un singe de code. Je n'étais pas vraiment et m'excuse si il l'a pris comme ça. Je généralisais au sujet des types de programmeurs et je n'appellerais jamais un individu un nom aussi négatif basé sur un commentaire par lui. Il est probablement un bon programmeur, même si je l'inciter à ne pas faire la JVM d'un briseur d'affaire.

16
répondu Jon Gretar 2010-02-04 13:27:28

alors que je ne l'ai pas fait, d'autres sur l'internet ont, par exemple

nous avons examiné les mérites relatifs de C++ et Erlang dans la mise en oeuvre d'un traçage acoustique parallèle algorithme pour la marine américaine. Nous avons trouvé une courbe d'apprentissage beaucoup plus petite et meilleur environnement de débogage pour en parallèle Erlang que pour programmation C++ basée sur pthreads. Notre La mise en œuvre de C++ a donné de meilleurs résultats Programme d'Erlang d'au moins 12x. Tentatives d'utilisation de Erlang sur la cellule IBM ÊTRE microprocesseur ont été frustrés par L'empreinte de mémoire d'Erlang. (Source)

Et quelque chose de plus proche de mon coeur, je me souviens de la lecture à la suite de l'ICFP concours:

le codage était très simple, traduire le pseudocode en C++. Je J'aurais pu utiliser Java ou C#, mais je suis à le point où la programmation à un haut niveau en C++ est tout aussi facile, et Je voulu conserver la possibilité de rapidement tomber dans un niveau bas il se tordait si on en arrivait là. L'Erlang est mon autre langue préférée pour le piratage, mais était inquiet sur l'exécution dans certaines performances problème que je ne pouvais pas sortir de moi-même. (Source)

9
répondu Will 2010-02-04 11:55:54

pour moi, le fait Qu'Erlang soit dynamiquement tapé est quelque chose qui me rend méfiant. Bien que je do utilise des langages dactylographiés dynamiquement parce que certains d'entre eux sont tellement axés sur les problèmes (prenez Python, Je résous beaucoup de problèmes avec lui), je souhaite qu'ils soient dactylographiés statiquement à la place.

cela dit, J'ai en fait l'intention de donner à Erlang un essai pendant un certain temps, et je viens de commencer à télécharger la source. Donc votre "question" a obtenu quelque chose après tout. ;- )

7
répondu Konrad Rudolph 2010-02-04 12:26:43

je connais Erlang depuis l'université, mais je ne l'ai jamais utilisé dans mes propres projets jusqu'à présent. Principalement parce que je développe principalement des applications bureautiques, et Erlang n'est pas un bon langage pour faire des interfaces graphiques de nice. Mais je vais bientôt implémenter une application serveur, et je vais donner un essai à Erlang, parce que c'est ce que c'est bon pour. Mais je m'inquiète d'avoir besoin de plus de bibliothèques, alors peut-être que je vais essayer avec Java à la place.

6
répondu Jonas 2010-02-04 12:11:14

un certain nombre de raisons:

  • parce qu'il semble étranger à toute personne habituée à la famille C des langues

  • parce que je voulais pouvoir courir sur la Java Virtual Machine pour profiter des outils que je connaissais et compris (comme JConsole) et les années d'effort qui sont allés dans JIT et GC.

  • parce que je ne voulais pas je dois réécrire toutes les bibliothèques (Java) que j'ai construites au fil des ans.

  • parce que je n'ai aucune idée de l '"écosystème" D'Erlang (accès à la base de données, configuration, construction, etc.).

fondamentalement, je suis familier avec Java, sa plate-forme et son écosystème et j'ai investi beaucoup d'efforts dans la construction de matériel qui fonctionne sur la JVM. Il était plus facile de loin de se déplacer à scala

6
répondu oxbow_lakes 2010-02-04 12:57:10

j'ai décidé de ne pas utiliser Erlang pour mon projet qui allait être exécuté avec beaucoup de données partagées sur un seul système multi-processeur et est allé avec Clojure parce que Clojure obtient vraiment partage-mémoire-concurrence. Quand J'ai travaillé sur les systèmes de stockage de données distribués Erlang était un grand ajustement parce que Erlang brille vraiment sur les systèmes de transmission de messages distribués. je compare le projet à la meilleure caractéristique dans la langue et choisir en conséquence

6
répondu Arthur Ulfeldt 2010-02-04 18:47:58

L'a utilisé pour une passerelle de messages pour un propriétaire, multi-couches, protocole binaire. Les modèles OTP pour les serveurs et les relations entre les services ainsi que l'appariement des modèles binaires ont rendu le processus de développement très facile. Pour un tel cas, je préférerais sûrement Erlang à d'autres langues.

5
répondu yawn 2010-02-04 12:23:58

la JVM n'est pas un outil, c'est une plate-forme. Bien que je sois tout à fait en faveur de choisir le meilleur outil pour le travail, la plate-forme est la plupart du temps déjà déterminée. À moins que je ne développe quelque chose de Autonome, à partir de zéro et sans le désir de réutiliser un code/bibliothèque existant (trois aspects qui sont peu probables dans l'isolement déjà) je peux être libre de choisir la plate-forme.

j'utilise plusieurs outils et langages mais je cible principalement la plate-forme JVM. Cela exclut Erlang pour la plupart, si pas tous mes projets, intéressant que certains concepts.

Silvio

4
répondu Silvio Bierman 2010-02-04 13:53:07

bien que j'ai aimé de nombreux aspects de la conception de L'Erlang Run Time et de la plateforme OTP, J'ai trouvé que c'était un langage de programme assez ennuyeux à développer. Les virgules et les périodes sont totalement boiteuses, et exigent souvent réécrire le dernier caractère de plusieurs lignes de code juste pour changer une ligne. En outre, certaines opérations qui sont simples dans Ruby ou Clojure sont fastidieuses dans Erlang, par exemple la manipulation de chaînes.

pour les systèmes distribués s'appuyant sur une base de données partagée le Mnesia le système est vraiment puissant et probablement une bonne option, mais je programme dans une langue pour apprendre et m'amuser, et le facteur ennuyeux D'Erlang a commencé à l'emporter sur le facteur amusant une fois que j'ai passé les tutoriels de base sur les comptes bancaires et commencé à écrire des plugins pour un serveur XMPP.

4
répondu rosejn 2010-02-09 14:56:47

J'aime Erlang du point de vue de la concurrence. Erlang a vraiment bien fait la concurrence. Je n'ai pas fini par utiliser erlang principalement à cause de la syntaxe.

Je ne suis pas programmeur de métier. J'utilise généralement C++, donc je convoite ma capacité à passer d'un style à l'autre (OOP, imperative, meta, etc.). C'était comme si Erlang me forçait à adorer la vache sacrée de l'immuable-data.

j'aime l'approche de la simultanéité, simple, beau, évolutive, puissante. Mais pendant tout le temps où je programmais dans Erlang Je n'arrêtais pas de penser, mec je préférerais beaucoup un sous-ensemble de Java qui interdisait le partage de données entre les threads et utilisé le modèle de concurrence D'Erlangs. J'ai pensé que Java aurait le meilleur pari de restreindre le langage de l'ensemble de fonctionnalités compatibles avec les processus et canaux D'Erlang.

tout récemment, j'ai trouvé que le d langage de programmation offre Erlang style concurrence avec une syntaxe de style C familière et un langage multi-paradigme. Je n'ai pas encore essayé quoi que ce soit massivement concurrencé avec D, Donc je ne peux pas dire si c'est une traduction parfaite.

donc professionnellement j'utilise C++ mais je fais de mon mieux pour modéliser massivement des applications concurrentes comme je le ferais dans Erlang. À un moment donné, j'aimerais tester les outils concurrents de D.

3
répondu deft_code 2010-10-25 01:03:37

Je ne vais même pas regarder Erlang.

deux billets de blog cloués pour moi:

  1. Erlang machinery marche sur toute la liste pour savoir s'ils ont un message à traiter, et la seule façon d'obtenir un message signifie marcher sur toute la liste (je soupçonne que le filtrage des messages par pid implique également de marcher sur toute la liste de messages)

    http://www.lshift.net/blog/2010/02/28/memory-matters-even-in-erlang

  2. il n'y a pas de miracles, en effet, Erlang ne fournit pas trop de services pour faire face à des surcharges inévitables - par exemple, il est encore laissé au programmeur d'application de vérifier l'espace disponible dans la file d'attente de messages (soi-disant en marchant dans la file d'attente pour comprendre la longueur actuelle et je suppose qu'il n'y a pas de mécanismes intégrés pour assurer une certaine équité entre les expéditeurs).

    erlang - comment limiter la file d'attente de messages ou l'émuler?

les deux (1) et (2) sont bien au-dessous de la naïveté sur mon livre, et je suis sûr qu'il y a plus de "gemmes" logicielles de nature similaire à l'intérieur de la machine D'Erlang.

donc, pas D'Erlang pour moi.

il semble qu'une fois que vous avez à traiter avec un grand système qui exige de hautes performances sous overload C++ + Boost est toujours le seul jeu en ville.

je vais regarder D à côté.

2
répondu zzz777 2017-05-23 11:53:07

je voulais utiliser Erlang pour un projet, parce que c'est incroyable d'évolutivité avec LE nombre de processeurs. (Nous utilisons d'autres langues, et parfois frappé le mur, nous laissant avec le fait d'avoir à ajuster l'application)

le problème était que nous devions livrer notre application sur plusieurs plateformes: Linux, Solaris et AIX, et malheureusement il n'y a pas D'installation D'Erlang pour AIX pour le moment.

étant une petite opération empêche l'effort en maintenir une version AIX D'Erlang, et demander à nos clients D'utiliser Linux pour une partie de notre application est un non go.

j'espère toujours qu'une AIX Erlang arrivera pour que nous puissions l'utiliser.

2
répondu Roger 2012-03-05 06:41:15