Gibt es Dinge, die Elixir tun kann, die Erlang nicht kann, oder umgekehrt?

102

Diese Frage bezieht sich auf den Kontext der Beam-VM und die von ihr bereitgestellten Funktionen, nicht auf den allgemeinen Kontext dessen, was eine vollständige Turing-Sprache leisten kann. Ich möchte etwas Zeit investieren, um entweder reines Erlang oder Elixier zu lernen. Ich verstehe die grundlegenden Unterschiede zwischen den beiden und neige aufgrund der Makros, der besseren Syntax und der schnelleren Entwicklung der Sprache an diesem Tag zu Elixir.

Meine Frage ist: Wenn ich mich für Elixier entscheide, werde ich dann auf etwas stoßen, das ich nicht tun kann, aber in Erlang? Kann ich mit Elixir alle OTP-Inhalte, alle Erlang-Bibliotheken, das Neuladen von Code usw. verwenden?

Ich frage nicht nach der Präferenz von jemandem zwischen den beiden; nur Fakten über die Möglichkeiten der Sprachen. Am besten von jemandem, der beides in der Produktion verwendet hat.

Saša Šijak
quelle
19
@ Hedgehog keine Meinung, Tatsache. Die Frage lautet: "Meine Frage ist, wenn ich Elixir wähle, werde ich auf etwas stoßen, das ich nicht kann, aber in Erlang? Kann ich alle OTP-Inhalte, alle Erlang-Bibliotheken, das Neuladen von Code usw. mit Elixir verwenden?" und die Antwort basiert auf Fakten, nicht auf Meinungen.
Saša Šijak
4
Auf diese Frage lautet die Antwort: Alles, was Sie in Erlang tun können, ist in Elixir möglich. Aber der Titel legt nahe, dass die Frage ist, in was Sie investieren sollten, und hier lautet die Antwort "es kommt darauf an". Was möchten Sie tun? Für Webanwendungen ist Elixir viel besser geeignet, da es zur Lösung dieses Problems entwickelt wurde. Für einige Arten von verteilten Systemen können Sie die Einfachheit von Erlang überlegen finden. Mangel an Funktionen ist oft das Gute. Wenn Sie nur Erlang lernen, können Sie sich auf das Wichtigste konzentrieren: OTP.
Tkowal
2
@ SašaŠijak Ich habe den Titel der Frage geändert, damit IMO besser widerspiegelt, worum es geht - kehren Sie zurück, wenn Sie nicht einverstanden sind.
Paweł Obrok
2
@ PawełObrok große Bearbeitung, es fasst zu Recht zusammen, was ich wissen wollte
Saša Šijak
3
Jedes Mal, wenn ich diese Art von Fragen stelle,
bekomme

Antworten:

37

Nur zum Vorwort - ich habe Elixir nur in der Produktion verwendet und nicht Erlang.

Ich würde Elixir ehrlich empfehlen. Dies ist meine Meinung und nicht unbedingt die richtige für Sie, aber im Folgenden werde ich meine Gründe dafür auflisten.

  1. Produktivität: Ich komme aus einem Ruby / Rails-Hintergrund, daher war mir die Syntax und der Stil von Elixir sehr vertraut. Einer der Hauptfaktoren, der mir hilft, festzustellen, ob ich eine Sprache lernen soll oder nicht, ist, wie produktiv ich darin sein kann - hauptsächlich, warum ich mich für Ruby entschieden habe. Elixier ist das gleiche. Ich kann genauso schnell damit arbeiten wie Ruby mit all den zusätzlichen Vorteilen von Parallelität und Mustervergleich.
  2. Erlang: Da Elixir auf Erlang basiert und bis zu erlang und dem Strahl vm kompiliert wird, haben Sie Zugriff auf jedes erlang-Modul und -Paket. Wenn Sie sich also Sorgen machen, Elixier zu verwenden und alle Funktionen von Erlang zu verpassen, sollten Sie dies nicht tun. Elixir hat sogar eigene Implementierungen der meisten größeren Erlang / OTP-Funktionen wie GenServer, GenEvent usw.
  3. Community / Ressourcen: Die Elixir-Community ist wirklich großartig. Der Slack-Kanal ist sehr beliebt und eine großartige Möglichkeit, Antworten auf Anfängerfragen zu erhalten. Es gibt bereits einige wirklich gute Bücher über die Sprache (Programmierelixier 1.2 - Dave Thomas, Autor der Ruby Pickaxe), die den Einstieg in die Sprache sehr einfach machen.

Wirklich, wenn Sie mit den beiden herumspielen, werden Sie wahrscheinlich zu der gleichen Entscheidung kommen, dass Elixir eine viel schönere Sprache mit allen Funktionen von Erlang + More ist. Es ist auch auf dem Vormarsch, ich kann mich nicht an die genauen Zahlen erinnern, aber ich erinnere mich, dass ich etwas von der Hex-Website (Paketmanager) über eine beträchtliche Zunahme der Paketdownloads gelesen habe.

Harrison Lucas
quelle
13
Elixir kompiliert nicht bis Erlang, sondern bis BEAM-Code. Elixier ist NICHT ähnlich wie Coffeescript, et. al. das schreibe einfach JS.
Peter R
64

Sie sollten nicht über irgendetwas stolpern, das Sie in einem tun können, was Sie in dem anderen nicht können, da Sie Elixir-Code von Erlang aus frei aufrufen können und umgekehrt. Sie können Erlang- und Elixir-Dateien sogar problemlos in einem Projekt mischen.

In Elixir:

:erlang_module.erlang_function(args)

in Erlang:

'Elixir.ElixirModule':elixir_function(args)
Paweł Obrok
quelle
2
Es kann manchmal etwas schwierig sein, Releases mit verschachtelten Abhängigkeiten oder anderen sehr spezifischen Fällen zu erstellen, aber ich denke, dies ist definitiv die richtige Antwort. ANMERKUNG : Wenn Sie auf Computern mit sehr eingeschränkten Ressourcen ausgeführt werden, kann das Hinzufügen von Elixir- und Elixir-Abhängigkeiten zu einer Version in Bezug auf den Speicher schwerer sein. Wenn ich mich also nicht irre, kann es manchmal vorkommen, dass das Festhalten an reinem Erlang den Vorteil hat, ein paar Megabyte Speicherplatz zu sparen, wodurch Abstürze leichter vermieden werden können, wenn kein Platz mehr zum Erweitern der VM vorhanden ist.
Laymer
37

TL; DR - Beginnen Sie mit Elixir

Erlang hat im Vergleich zu Elixir eine steilere Lernkurve. Sobald Sie Elixir lernen, lernen Sie automatisch Erlang. Beginnen Sie daher mit Elixir. Elixier ist in Erlang und Elixier geschrieben. Siehe Distribution auf Github (da Elixir voller Makros ist, auch bekannt als Meta-Programmierung). Elixir Project Code Distribution

Sie können Elixir mit Erlang verwenden und umgekehrt, daher das vollständige Erlang-Ökosystem mit mehr als 20 Jahren Bibliotheken.

Weitere Details von Erlang Solutions

Die "out of the box" -Produktivität von Elixir wird durch einen starken Fokus auf Werkzeuge und Bequemlichkeit bei der Darstellung von Datenmanipulationen erreicht. Das Systemdesign ist in Elixir und Erlang gleich, aber Elixir entfernt viel Code auf dem Boilerplate und ist einfacher zu erweitern. Das Entfernen der Boilerplate erhöht die Produktivität und ermöglicht es Programmierern, schneller Feedback zu erhalten - entscheidend, wenn Sie Ihr Produkt so schnell wie möglich auf den Markt bringen möchten. Weniger Boilerplate sorgt auch für glückliche Entwickler, und glückliche Entwickler sind nicht überraschend produktive Entwickler.

Joe Armstrongs (Erlang Erfinder) Blogpost über Elixir

Beginnen Sie hier, um mehr über Elixir - Erste Schritte zu erfahren

Wenn Sie das Gefühl haben, dass es gut läuft, arbeiten Sie daran, sich mit Bewegung und anderen Ressourcen zu beschäftigen .

Sairam
quelle
3

Es gibt ein paar Dinge. Ich denke, Sie können in Elixir keine rekursive Anon-Funktion erstellen. Nun, um fair zu sein, das ist etwas, was ich in mehr als 8 Jahren Erlang nicht jemals tun musste, und wenn ich es getan hätte, könnte es leicht auf andere Weise getan werden. Es gibt wahrscheinlich noch ein paar andere Dinge, die Sie ganz ehrlich ignorieren können.

Im Allgemeinen können Sie für Dinge, die den meisten Menschen wichtig sind, alles, was Sie in Erlang tun können, in Elixir tun und umgekehrt. Die Community auf der Elixir-Seite scheint aktiver zu sein, daher würde ich vorschlagen, dort zu beginnen. Ich bin kürzlich von Erlang zu Elixir gewechselt und mit Ausnahme einiger ausgefallener Dinge in Proper kann ich sagen, dass es ein ziemlich einfacher Übergang ist

Zachary K.
quelle