Beautiful Erlang Code [fermé]

15

J'essaie d'en savoir plus sur Erlang que sur les projets de jouets avec lesquels je joue. À cette fin, je lis la programmation d'Erlang et certaines des archives d' Armstrong sur le logiciel .

Je voudrais également lire un exemple de code (de préférence de production) qui présente le genre de choses que vous pouvez créer avec Erlang qui seraient disproportionnellement difficiles dans d'autres langues. Mis à part (je suppose) Yaws , y a-t-il des exemples publiquement disponibles de beau code Erlang que je pourrais lire pour mieux comprendre le langage et / ou voir les utilisations idiomatiques de diverses constructions de langage?

Je ne recherche pas spécifiquement de code qui "fait le travail" mais utilise des pratiques douteuses ou des exemples du type "voici comment vous écrivez factorialen Erlang".

Dans la même veine, quelqu'un peut-il recommander une bonne littérature pour apprendre cette langue (autre que la "programmation Erlang" mentionnée)? De préférence, quelque chose que vous avez vous-même utilisé pour l'apprendre, mais s'il y a des livres standard pour la communauté, jetez-les aussi.

Inaimathi
la source
Erlang a été créé par Ericcson pour concevoir et construire des commutateurs massivement parallèles pour le trafic téléphonique. Il a été conçu par Ericsson pour prendre en charge les applications distribuées, tolérantes aux pannes, en temps réel doux, sans interruption. C'est le domaine problématique dans lequel il excelle. Pour tous les autres domaines problématiques ... Votre kilométrage peut varier.
Robert Harvey

Réponses:

-4

Depuis que vous avez ajouté la balise fonctionnelle-programmation, que diriez-vous d'écrire un compilateur ou un interprète Erlang dans Haskell? Erlang n'est plus du tout à la pointe de la technologie, comme du tout. Je recommande d'apprendre Erlang en un ou deux jours, comme certaines autres langues (LISP, Prolog), puis de les oublier; ils ne sont qu'une étape pour désapprendre les langages OOP impératifs.

Pour des tâches plus petites que l'implémentation d'un compilateur, voir Project Euler .

[EDIT] Pour répondre au commentaire:

D'un point de vue technique: Erlang était bon dans le passé, quand il n'y avait pas de processeurs multicœurs. Mais maintenant, étant donné les compilateurs / interprètes existants dont je suis conscient, il ne se modifie plus comme il se doit. Un interprète écrit en Haskell évoluerait, compilé en Haskell le rendrait plus rapide mais supprimerait la fonctionnalité de remplacement de code à la volée.

Du point de vue des programmeurs: Haskell n'est pas pour toutes les tâches applicables le meilleur choix, mais atm, les langages probablement plus avancés sont très expérimentaux, et ces tâches non applicables ont généralement quelque chose à voir avec les systèmes embarqués (comme les microcontrôleurs et les GPU) ou nombrecrunching, où C et Assembler sont toujours le meilleur choix.

Qu'est-ce que vous pourriez faire de mieux avec Erlang que dans d'autres langues?

comonad
la source
4
Je n'ai pas prétendu l'apprendre parce que c'était à la pointe de la technologie; Je pense juste que cela semble intéressant, et il pourrait y avoir des choses que vous pouvez construire avec cela que vous ne pouvez pas facilement avec d'autres langues. Si votre réponse est "Haskell est un meilleur choix pour toutes les tâches applicables", pourquoi ne pas me dire pourquoi spécifiquement (au lieu de simplement l'affirmer vaguement), et répondre à la question initiale pour Haskell au lieu d'Erlang?
Inaimathi
1
Je ne sais pas si cette réponse est si mauvaise, bien qu'elle contourne la question d'origine. Si vous souhaitez voir une jolie Haskell dans le sens dont parle la comanade, consultez en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours C'est un didacticiel qui enseigne haskell, la bibliothèque d'analyse parsec et un schéma en écrivant un analyseur de schéma. . Les combinateurs d'analyseurs sont, je pense, l'une des plus belles choses à jouer dans les langages fonctionnels. Ils sont aussi un peu pratiques; une fois que vous savez écrire des analyseurs, vous pouvez concevoir vos propres langues pour résoudre des problèmes spécifiques.
CodexArcanum
1
"Qu'est-ce que tu pourrais faire avec Erlang mieux que dans d'autres langues?" Je ne sais pas; c'est pourquoi j'essaye de l'apprendre. Mon instinct me dit qu'un langage dont la construction principale est le processus (par opposition à la fermeture comme en CL, le lambda comme dans Scheme ou le dictionnaire comme en python) aurait quelque chose d'intéressant à offrir. Haskell est également fonctionnel, et il a des constructions de correspondance de motifs similaires, mais il n'y a pas de concentration constante sur la concurrence. En fait, la construction principale de Haskell semble être le type, ce qui me fait penser que ce sont des animaux très différents.
Inaimathi
2
@CodexArcanum - AFAIK, Erlang et OTP sont disponibles sous un dérivé de la licence publique de Mozilla, et il est gratuit en bière à partir des dépôts Debian. Qu'entendiez-vous par «le système est propriétaire»?
Inaimathi
1
@comonad - Ce que je voulais dire par "Haskell est un meilleur choix pour toutes les tâches applicables" était "Pour chaque tâche que je pourrais accomplir de manière acceptable avec Erlang, Haskell peut le faire mieux". Je ne voulais pas dire que vous pouviez faire tout le travail de programmation avec un seul langage, ou que je cherchais à utiliser un seul langage pour tous mes projets. Vous sembliez demander "Pourquoi utiliser Erlang quand vous pouvez utiliser Haskell?", Ce qui implique que vous pensez que Haskell est directement supérieur. Je voulais que vous clarifiiez et souteniez peut-être cette affirmation.
Inaimathi