2 Punkte von GN⁺ 2023-11-11 | 1 Kommentare | Auf WhatsApp teilen

Wechsel zu Elixir

  • Im neuen Job wird Elixir als wichtigste Backend-Sprache verwendet.
  • Es gab keine Erfahrung mit Elixir oder Erlang, aber dank der Ruby-ähnlichen Syntax ließ es sich leicht erlernen.
  • Man vermeidet die Probleme der Zustandsverwaltung in objektorientierten Sprachen und profitiert von den Vorteilen von Immutability und funktionaler Programmierung.

Vorteile von Elixir

  • Code mit veränderlichem Zustand ist schwer zu warten.
  • Elixir unterstützt wie Ruby DSLs, verwendet jedoch Compile-Time-Makros, um Code zur Laufzeit zu erzeugen.
  • Auch ohne Tests zu schreiben lassen sich Fehler bei der Nutzung von Makros bereits zur Compile Time erkennen.

Syntax und Ausdrücke

  • Die Pipeline-Syntax von Elixir ist gut, aber die „threading“-Operatoren von Clojure werden bevorzugt.
  • Mit dem with-Ausdruck lassen sich komplexe Funktionen in einen Erfolgs-Pfad und einen Teil zur Fehlerbehandlung aufteilen.

Ausnahmebehandlung

  • In Ruby ist es üblich, Ausnahmen für den Kontrollfluss zu verwenden.
  • In Elixir werden statt Ausnahmen eher Result-/Either-Monaden verwendet, sodass ok und error als Rückgabewerte dienen.

Meinung von GN⁺

Das Wichtigste an diesem Artikel ist die Freude am Programmieren mit Elixir und die einfache Wartbarkeit. Interessant ist, wie die Sprache die komplexen Probleme der Zustandsverwaltung in objektorientierten Sprachen löst und durch Immutability und funktionale Programmierung Stabilität und Lesbarkeit des Codes verbessert. Besonders das Makro-System, mit dem sich Fehler schon zur Compile Time finden lassen, bietet Entwicklern eine verlässlichere Umgebung zum Schreiben von Code. Diese Eigenschaften dürften auch bei angehenden Software Engineers das Interesse am Erlernen von Elixir wecken.

1 Kommentare

 
GN⁺ 2023-11-11
Hacker-News-Kommentare
  • Das Interesse an der Sprache Elixir ist in den letzten Wochen durch YouTube-Videos gestiegen.

    • Elixir gefällt wegen der Ideen aus Erlang, die tatsächliche Nutzung wirkt jedoch etwas eigenartig.
    • Positive Sicht auf isolierte Prozesse und Message Passing (Actors) als Zukunft des verteilten Programmierens.
    • Sympathie für Pattern Matching, aber Skepsis gegenüber der „Magie“ von Elixirs LiveView und LiveBook.
    • Unvertrautheit mit Elixir-spezifischen Begriffen und Konzepten wie GenServers.
    • Wahrgenommenes Risiko einer kleinen Community, aber Lob für deren Leistungen.
    • Ausdruck von Vorfreude auf die Implementierung eines Typsystems.
  • Als wichtiger Vorteil von Elixir/Erlang wird die Einfachheit von Background-Jobs hervorgehoben.

    • Aus Erfahrungen im vorherigen Job wurde erkannt, dass sich mit Elixirs Task HTTP-Anfragen verarbeiten lassen, ohne den Server zu blockieren.
  • Der Vortrag „The Soul of Erlang and Elixir“ von Sasa Juric unterstreicht die Stärke der Sprache.

  • Geteilte Erfahrung mit Erlang seit 1991.

    • Andere Sprachen wurden ebenfalls genutzt, aber Erlang ist die Sprache, die am meisten Freude bereitet.
    • Geplant ist, Erlang bis zur Rente weiter zu verwenden.
  • Das Lernen und Verwenden von Elixir macht Spaß, und es wird Zufriedenheit mit der Schlichtheit und den Fähigkeiten von BEAM/OTP ausgedrückt.

  • Als Vorteil von Elixir werden der Spaßfaktor ähnlich wie bei Ruby sowie die Immutable- und funktionalen Eigenschaften hervorgehoben, die die Nachteile der objektorientierten Programmierung beseitigen.

    • Die Hoffnung auf ein zusätzliches Typsystem soll das Verständnis großer Codebases verbessern.
  • Es wird auf ein Missverständnis hingewiesen, Exceptions in Ruby als Control Flow zu verwenden.

  • Aus Sicht eines F#-Nutzers wird die Verwirrung durch Elixir ausgedrückt.

    • Da Funktionssignaturen keine Typinformationen liefern, ist die Nutzung in großen Bibliotheken schwierig.
    • Es wird gefragt, worin die wichtigsten Reize von Elixir liegen.
  • Aus Nutzungserfahrungen mit Elixir werden die leichte Erlernbarkeit, Pattern Matching und die Vorteile unveränderlicher Daten hervorgehoben.

    • Es wurde erlebt, dass sich Elixir hervorragend für den Aufbau von CQRS-Systemen eignet.
    • Gelobt werden die Stabilität der BEAM und die Art, wie GenServer mit Fehlern umgehen.
  • Es wird vor zu frühem Optimismus gegenüber neuen Technologien gewarnt.

    • Empfohlen wird, Erfahrungen erst nach langer tatsächlicher Nutzung zu teilen.