2 puntos por GN⁺ 2023-11-11 | 1 comentarios | Compartir por WhatsApp

Cambiar a Elixir

  • En su nuevo trabajo usan Elixir como lenguaje principal de backend.
  • No tenía experiencia con Elixir ni Erlang, pero lo aprendió con facilidad gracias a una sintaxis similar a la de Ruby.
  • Evita los problemas de manejo de estado de los lenguajes orientados a objetos y aprovecha las ventajas de la inmutabilidad y la programación funcional.

Ventajas de Elixir

  • El código con estado mutable es difícil de mantener.
  • Elixir, al igual que Ruby, soporta DSL, pero usa macros en tiempo de compilación para generar código en tiempo de ejecución.
  • Incluso sin escribir pruebas, es posible detectar en tiempo de compilación errores en el uso de macros.

Sintaxis y expresiones

  • Le gusta la sintaxis de pipeline de Elixir, pero prefiere los operadores de 'threading' de Clojure.
  • Mediante la expresión 'with', se pueden dividir funciones complejas en la ruta de éxito y la parte de manejo de errores.

Manejo de excepciones

  • En Ruby, es común usar excepciones para el control de flujo.
  • En Elixir, en lugar de excepciones, se usan los mónadas Result / Either para devolver ok y error como valores de retorno.

Opinión de GN⁺

Lo más importante de este texto es el placer de programar que ofrece el lenguaje Elixir y la facilidad de mantenimiento que brinda. Resulta interesante cómo resuelve los complejos problemas de manejo de estado de los lenguajes orientados a objetos y mejora la estabilidad y legibilidad del código mediante la inmutabilidad y la programación funcional. En especial, el sistema de macros que permite descubrir errores en tiempo de compilación ofrece a los desarrolladores un entorno más seguro para escribir código. Estas características también harán que ingenieros de software principiantes sientan atractivo por aprender el lenguaje Elixir.

1 comentarios

 
GN⁺ 2023-11-11
Opiniones de Hacker News
  • El interés por el lenguaje Elixir ha aumentado en las últimas semanas a través de videos de YouTube.

    • A Elixir le gustan las ideas de Erlang, pero la experiencia real de usarlo se siente algo extraña.
    • Hay una visión positiva sobre los procesos aislados y el paso de mensajes (Actors) como el futuro de la programación distribuida.
    • Gusta la capacidad de pattern matching, pero existe escepticismo sobre la “magia” de Elixir como LiveView y LiveBook.
    • Resultan poco familiares los términos y conceptos propios de Elixir, como GenServers.
    • Se percibe el riesgo de una comunidad pequeña, pero también se elogian sus logros.
    • Se expresa expectativa por la implementación de un sistema de tipos.
  • Se destaca como una gran ventaja de Elixir/Erlang la facilidad para manejar trabajos en segundo plano.

    • A partir de la experiencia en un trabajo anterior, se reconoció que usando Task de Elixir el servidor puede atender solicitudes HTTP sin caerse.
  • Se resalta la potencia del lenguaje a través de la charla de Sasa Juric, "The Soul of Erlang and Elixir".

  • Se comparte la experiencia de haber usado Erlang desde 1991.

    • Aunque también se han usado otros lenguajes, Erlang es el que más disfrute ha dado.
    • Hay intención de seguir usando Erlang hasta antes de retirarse.
  • Aprender y usar Elixir resulta disfrutable, y se expresa satisfacción con la simplicidad y funcionalidad de BEAM/OTP.

  • Como ventajas de Elixir, se destaca que tiene la diversión de Ruby, pero elimina las desventajas de la programación orientada a objetos mediante la inmutabilidad y sus características funcionales.

    • Se espera que la incorporación de un sistema de tipos ayude a mejorar la comprensión de codebases grandes.
  • Se señala un malentendido sobre el uso de excepciones como control de flujo en Ruby.

  • Como usuario de F#, se expresa que Elixir puede resultar confuso.

    • Como las firmas de las funciones no proporcionan información de tipos, es difícil usarlo con bibliotecas grandes.
    • Se pregunta cuáles son los principales puntos atractivos de Elixir.
  • Desde la experiencia de uso de Elixir, se destacan su facilidad de aprendizaje, el pattern matching y las ventajas de los datos inmutables.

    • Se experimentó que sobresale al construir sistemas CQRS.
    • Se elogian la estabilidad de BEAM y la forma en que GenServer maneja los errores.
  • Se advierte contra el optimismo de las primeras etapas respecto a nuevas tecnologías.

    • Se recomienda compartir experiencias después de haberlas usado realmente durante un largo período.