Arvand
Author
Arvand Azadvar
@arvand
Blog / Engineering & Design

Joy of Elixir & Phoenix

Joy of elixir and phoenix

Elixir is a process-oriented, functional, concurrent programming language created by José Valim. that runs on the Erlang virtual machine (BEAM) and is widely used to build fault-tolerant, scalable, and maintainable applications. The language provides scalability, concurrency, fault tolerance, and low latency. The language was influenced by Ruby. This inspiration can be seen and felt in Elixir’s ecosystem and tooling options. Elixir is known to be easy to learn and widely applicable within the software development industry.

Mazaryn Was created on Top of Elixir & Phoenix and here We describe why It’s the most suitable option for us to Develop the Application.

Elixir features and tools

Elixir has many great features such as:

  • Elixir compiles to bytecode for the Erlang VM
  • Elixir is dynamically typed, so all types are checked at runtime rather than at compilation
  • Pattern matching
  • Emphasis on higher-order functions and recursion
  • Lazy and async collections with streams
  • Built-in tooling for things like remote debugging, dependency management, code compilation, and more
  • Erlang functions can be called from Elixir, and vice versa, without run time impact, due to compilation to Erlang bytecode
  • Unicode support and UTF-8 strings
  • Meta programming allowing direct manipulation of abstract syntax tree (AST)

Elixir is a functional programming language. With functional languages like Elixir, we can make better use of our CPU multi-cores and write shorter and more explicit code. To better understand functional programming, I should first introduce the following fundamental principles: immutability, functions, and declarative code.

In functional programming, all values created in the program are immutable. By default, each function has a stable value, which means that lock mechanisms aren’t needed. This simplifies parallel work. Immutability is showing up more in conventional programming languages. These languages typically provide the immutable mechanism by giving an immutable data type alternative or a method to turn a value immutable.

Phoenix Framework

Introduced in 2015, Phoenix is now the go-to framework for creating web applications with Elixir. Like Rails, Phoenix uses a server-side model-view-controller (MVC) pattern and builds on Elixir’s developer productivity and speed philosophy.

Phoenix has several key features that improve product execution, including:

  • Cowboy: the default web server
  • Ecto: a language for reading and writing databases.
  • LiveView: a way to easily implement real-time updates of server-side rendered HTML pages.

Other features of LiveView Includes:

  1. Declarative module for rendering HTML on the server-side.
  2. Smart templating and change tracking.
  3. Live form validation (which also includes file upload support).
  4. Rich integration API included.
  5. Code reuse via components.
  6. Live navigation for link enrichment and redirects.
  7. A latency simulator.
  • Components: a way to have a server-side rendered HTML page with component architecture similar to React to better support SPA (single page applications).
  • Plug: a way to achieve easy guards for controllers and implement a robust permissions system.
  • Built-in Channels: a way to quickly implement real-time communication with and between millions of connected clients
  • Functional. In contrast to most other top web frameworks, Phoenix is written in a functional programming language, which helps to write more reliable, maintainable, and easier-to-test code. If you want to do or learn functional programming while working on a web project, this is one of your best options.
  • Productive. Phoenix helps you be productive while exposing the behind-the-scenes magic to anyone that is willing to explore it. In contrast to some of the more “opinionated” frameworks, it is also rather customizable.