Schöner Erlang Code [geschlossen]

15

Ich versuche mehr über Erlang zu lernen als über die Spielzeugprojekte, mit denen ich gespielt habe. Zu diesem Zweck lese ich Erlang und einige Archive von Armstrong über Software .

Ich würde auch gerne ein Beispiel (vorzugsweise Produktionscode) durchlesen, das die Art von Dingen zeigt, die Sie mit Erlang erstellen können, die in anderen Sprachen unverhältnismäßig schwierig wären. Abgesehen von (ich nehme an) Yaws , gibt es öffentlich zugängliche Beispiele für schönen Erlang-Code, die ich durchlesen könnte, um ein besseres Verständnis der Sprache zu erlangen und / oder die idiomatischen Verwendungen für verschiedene Sprachkonstrukte zu erkennen?

Ich suche speziell keinen Code, der "die Arbeit erledigt", sondern fragwürdige Praktiken oder Beispiele im Sinne von "So schreibt man factorialin Erlang" verwendet.

Kann mir jemand eine gute Literatur zum Erlernen dieser Sprache empfehlen (mit Ausnahme der erwähnten "Programming Erlang")? Am liebsten etwas, das Sie selbst gelernt haben, aber wenn es ein paar Community-Standardbücher dafür gibt, werfen Sie diese auch hinein.

Inaimathi
quelle
Erlang wurde von Ericcson entwickelt, um massiv parallele Switches für den Telefonverkehr zu entwerfen und zu bauen. Es wurde von Ericsson entwickelt, um verteilte, fehlertolerante Echtzeitanwendungen ohne Unterbrechung zu unterstützen. Das ist der Problembereich, in dem es sich auszeichnet. Für alle anderen Problembereiche ... Ihr Kilometerstand kann variieren.
Robert Harvey

Antworten:

-4

Wie wäre es mit dem Schreiben eines Erlang-Compilers oder -Interpreters in Haskell, nachdem Sie das Tag Funktionsprogrammierung hinzugefügt haben? Erlang ist nicht mehr ganz auf dem neuesten Stand der Technik. Ich empfehle, Erlang in ein oder zwei Tagen zu lernen, wie einige andere Sprachen (LISP, Prolog), und sie dann zu vergessen. Sie sind nur ein Schritt, um zwingende OOP-Sprachen zu verlernen.

Informationen zu kleineren Aufgaben als zum Implementieren eines Compilers finden Sie unter Project Euler .

[BEARBEITEN] Um den Kommentar zu beantworten:

Aus technischer Sicht: Erlang war früher gut, als es keine Multicore-Prozessoren gab. Aber jetzt - da mir die vorhandenen Compiler / Interpreten zur Verfügung stehen - skaliert es einfach nicht mehr so, wie es sein sollte. Ein in Haskell geschriebener Interpreter würde skalieren, nach Haskell kompiliert, würde es schneller machen, würde aber die Funktion zum schnellen Ersetzen von Code entfernen.

Aus Sicht der Programmierer: Haskell ist nicht für alle anwendbaren Aufgaben die beste Wahl, aber atm, die wahrscheinlich fortgeschritteneren Sprachen, sind sehr experimentell, und diese nicht anwendbaren Aufgaben haben normalerweise etwas mit eingebetteten Systemen (wie Mikrocontrollern und GPUs) oder zu tun Zahlenverarbeitung, wobei C und Assembler immer noch die beste Wahl sind.

Was genau könnten Sie mit Erlang besser machen als in anderen Sprachen?

comonad
quelle
4
Ich habe nicht behauptet, es zu lernen, weil es auf dem neuesten Stand der Technik war. Ich denke nur, dass es interessant aussieht, und es gibt möglicherweise Dinge, die Sie damit aufbauen können, die Sie mit anderen Sprachen nicht leicht erreichen können. Wenn Ihre Antwort "Haskell ist eine bessere Wahl für alle anwendbaren Aufgaben" lautet, warum genau (anstatt es nur vage zu behaupten) und die ursprüngliche Frage für Haskell anstelle von Erlang beantworten?
Inaimathi
1
Ich weiß nicht , dass diese Antwort ist , dass schlecht, obwohl es Rock gleich um die ursprüngliche Frage tut. Wenn Sie Haskell in dem Sinne sehen möchten, von dem Comanad spricht, schauen Sie sich de.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours an. Es ist ein Tutorial, das Hashkell, die Parsec-Parsing-Bibliothek und das Schema durch Schreiben eines Schema-Parsers lehrt . Parser-Kombinatoren sind meines Erachtens eines der schönsten Dinge, mit denen man in funktionalen Sprachen spielen kann. Sie sind auch ein bisschen praktisch; Sobald Sie wissen, wie man Parser schreibt, können Sie Ihre eigenen Sprachen entwerfen, um bestimmte Probleme zu lösen.
CodexArcanum
1
"Was genau könnte man mit Erlang besser machen als in anderen Sprachen?" Ich weiß es nicht; deshalb versuche ich es zu lernen. Mein Bauch sagt mir, dass eine Sprache, deren Hauptkonstruktion der Prozess ist (im Gegensatz zum Abschluss wie in CL, dem Lambda wie in Schema oder dem Wörterbuch wie in Python), etwas Interessantes zu bieten hätte. Haskell ist ebenfalls funktionsfähig und verfügt über ähnliche Pattern-Matching-Konstrukte, aber es gibt keinen unerbittlichen Fokus auf Parallelität. Tatsächlich scheint das Hauptkonstrukt in Haskell der Typ zu sein, weshalb ich denke, dass es sich um sehr unterschiedliche Tiere handelt.
Inaimathi
2
@CodexArcanum - AFAIK, Erlang und OTP sind unter einem Derivat der Mozilla Public License erhältlich und bei den Debian-Repos kostenlos erhältlich. Was meinten Sie mit "das System ist proprietär"?
Inaimathi
1
@comonad - Was ich mit "Haskell ist eine bessere Wahl für alle anwendbaren Aufgaben" meinte, war "Für jede Aufgabe, die ich akzeptabel mit Erlang erledigen konnte, kann Haskell es besser machen". Ich wollte nicht implizieren, dass Sie alle Programmierarbeiten in einer einzigen Sprache ausführen könnten oder dass ich für alle meine Projekte nur eine Sprache verwenden wollte. Sie schienen zu fragen: "Warum sollten Sie Erlang verwenden, wenn Sie Haskell verwenden können?", Was impliziert, dass Sie glauben, Haskell sei direkt überlegen. Ich wollte, dass Sie diese Behauptung klarstellen und vielleicht unterstützen.
Inaimathi