DEV Community

Cover image for Hello World in Elixir
João Paulo Abreu
João Paulo Abreu

Posted on • Updated on

Hello World in Elixir

Elixir is a dynamic, functional programming language built on the Erlang virtual machine (BEAM). It was created to be scalable and maintain high-availability systems, making it a popular choice for web applications, distributed systems, and telecommunications.

What is Elixir?

Elixir is a language designed to be productive, with an elegant and modern syntax, while leveraging the robustness and concurrency capabilities of the Erlang virtual machine. Created by José Valim, one of the main contributors to the Ruby on Rails framework, Elixir combines the best of both worlds: the simplicity of Ruby and the power of Erlang.

Why use Elixir?

  • Concurrency: Elixir makes it easy to write concurrent code, leveraging BEAM's lightweight processes.
  • Scalability: Ideal for applications that need to handle a large number of simultaneous connections.
  • High Availability: Designed for systems that need to be constantly operational, with fault tolerance.
  • Performance: Takes advantage of the efficiency of the Erlang VM, known for its low latency and high throughput.
  • Active Community: A growing and welcoming community, with many resources and libraries.

To install Elixir, I recommend reading this procedure on the language's page:Install. If you want to install it on Fedora/Linux, I wrote an article explaining how to install it in this environment: Complete Guide: Installing Elixir on Fedora/Linux.

Running IEx (Interactive Elixir)

After installing Elixir, we can use IEx (Interactive Elixir), an interactive REPL (Read-Eval-Print Loop) that allows you to execute Elixir commands in real-time.

To start IEx, open your terminal and type:

iex
Enter fullscreen mode Exit fullscreen mode

You will see an interactive prompt where you can start typing Elixir commands.

Exiting IEx

To exit IEx, you can:

  • Press Ctrl + C twice.
  • Type Ctrl + G, followed by q and press Enter.

Examples

Let's explore some examples to get familiar with Elixir's syntax.

Basic Operations

Sum

Elixir allows you to perform basic arithmetic operations directly. Here is an example of a sum:

IO.puts(1 + 2)
Enter fullscreen mode Exit fullscreen mode

Expected output:

3
Enter fullscreen mode Exit fullscreen mode

Subtraction, Multiplication, and Division

Similarly, you can perform other arithmetic operations:

IO.puts(5 - 3)   # Subtraction
IO.puts(4 * 2)   # Multiplication
IO.puts(8 / 2)   # Division
Enter fullscreen mode Exit fullscreen mode

Expected output:

2
8
4.0
Enter fullscreen mode Exit fullscreen mode

String Concatenation

In Elixir, you can concatenate strings using the <> operator:

IO.puts("Elixir " <> "is fun!")
Enter fullscreen mode Exit fullscreen mode

Expected output:

Elixir is fun!
Enter fullscreen mode Exit fullscreen mode

Pattern Matching

Pattern matching is a powerful feature of Elixir that allows extracting values from data structures. Here is a simple example:

{a, b, c} = {1, 2, 3}
IO.puts(a) # 1
IO.puts(b) # 2
IO.puts(c) # 3
Enter fullscreen mode Exit fullscreen mode

Pattern matching can be used in lists, tuples, and other structures:

# Lists
[head | tail] = [1, 2, 3, 4]
IO.puts(head)  # 1
IO.inspect(tail) # [2, 3, 4]

# Tuples
{:ok, result} = {:ok, 42}
IO.puts(result) # 42
Enter fullscreen mode Exit fullscreen mode

Expected output:

1
2
3
1
[2, 3, 4]
42
Enter fullscreen mode Exit fullscreen mode

Your First Elixir Program

Let's create a simple program that prints "Hello, World!" to the console.

Create a file named hello.exs with the following content:

IO.puts("Hello, World!")
Enter fullscreen mode Exit fullscreen mode

To run the program, use the command:

elixir hello.exs
Enter fullscreen mode Exit fullscreen mode

You should see the message "Hello, World!" printed to the console.

Main Features of Elixir

  • Immutability: Values in Elixir are immutable, meaning they cannot be changed after being created. This helps prevent errors and facilitates concurrency.
  • Pattern Matching: Allows extracting values from data structures concisely and powerfully.
  • First-Class Functions: Functions are first-class citizens in Elixir, allowing you to pass them as arguments, return them from other functions, and store them in variables.
  • Lightweight Processes: The concurrency model based on lightweight processes allows creating millions of simultaneous processes without overloading the system.
  • Supervisors: Structures that monitor and manage processes, restarting them in case of failure, ensuring high system availability.

Elixir is a powerful and modern language that offers a unique combination of simplicity, productivity, and robustness. With its elegant syntax and concurrency capabilities, it is an excellent choice for a variety of applications. In this article, we covered the first steps with Elixir, from installation to running a simple program.

In the upcoming articles, we will explore the concepts and features of Elixir in more depth, helping you become a proficient developer in this amazing language.

Top comments (0)