DEV Community

Cover image for Berkenalan Dengan Bahasa Pemrograman Elixir
Muzhawir Amri
Muzhawir Amri

Posted on • Edited on • Originally published at muzhawir.com

Berkenalan Dengan Bahasa Pemrograman Elixir

📜 You can read the English version here!

Daftar Isi


Di pelajaran sebelumnya kita telah mengenal Erlang sebagai bahasa yang dijalankan di atas BEAM. Namun, BEAM tidak hanya menjalankan Erlang. Ada juga bahasa lain seperti Elixir dan Gleam yang memanfaatkan platform yang sama. Dalam pelajaran ini, kita akan berkenalan dengan Elixir, bahasa modern untuk menulis kode di BEAM, sekaligus melihat peningkatan fitur yang membuatnya menarik untuk dipelajari.

Bahasa Modern untuk Menulis Kode di BEAM

Elixir adalah bahasa pemrograman fungsional yang berjalan di atas mesin virtual BEAM, mesin yang sama yang digunakan oleh Erlang. Elixir dirancang agar penulisan program lebih ringkas, mudah dibaca, dan mudah dirawat, sekaligus mewarisi keandalan serta kinerja tinggi dari platform Erlang.

Kode Elixir dikompilasi menjadi bytecode yang dijalankan oleh BEAM yang membuatnya sepenuhnya kompatibel dengan pustaka dan ekosistem Erlang. Kita bahkan bisa langsung menggunakan pustaka Erlang di proyek Elixir, dan sebaliknya.

Elixir juga dirancang dengan fokus pada produktivitas. Bahasa ini memiliki sintaks yang sederhana serta dilengkapi alat bantu modern, dukungan pengujian otomatis, dan utilitas debugging yang sesuai dengan kebutuhan pengembangan masa kini.

Dengan dukungan tersebut, pengembang dapat membangun aplikasi dari kecil hingga besar dengan lebih mudah dipahami dan dikelola. Elixir menjembatani keandalan dan daya tahan Erlang dengan kenyamanan serta ekspresivitas bahasa modern.

Elixir adalah proyek open source yang dikembangkan secara aktif oleh komunitas. Bahasa ini diciptakan oleh José Valim, dan source code-nya dapat diakses di repositori GitHub elixir-lang.

Peningkatan Fitur yang Dihadirkan oleh Elixir

Salah satu keunggulan utama Elixir adalah kemampuannya mengurangi boilerplate dan kebisingan sintaks (syntactic noise) yang umum dijumpai di Erlang. Hasilnya, kode menjadi lebih sederhana, ekspresif, dan mudah dipelihara. Bagi developer baru di ekosistem BEAM, sintaks Elixir terasa lebih ramah karena terinspirasi dari Ruby, bahasa yang dikenal bersih dan mudah dibaca. Hal ini menjadikan Elixir titik awal yang nyaman sebelum mempelajari kompleksitas Erlang secara mendalam.

Perhatikan perbandingan sintaks antara Ruby dan Elixir berikut.

Kode Ruby:

def greet(name)
  "Hello, #{name}!"
end

puts greet("Hello Rubyst!")
Enter fullscreen mode Exit fullscreen mode

Kode Elixir:

def greet(name) do
  "Hello, #{name}!"
end

IO.puts greet("Hello Alchemist!")
Enter fullscreen mode Exit fullscreen mode

Struktur def, penggunaan string interpolation (#{name}), dan alur logikanya hampir identik. Perbedaannya terletak pada penggunaan pasangan do ... end di Elixir untuk mendefinisikan function. Kemiripan ini membuat transisi dari Ruby ke Elixir terasa mulus, sementara bagi pemula seperti kita yang langsung belajar Elixir, sintaksnya tetap intuitif dan mudah diikuti.

Setelah melihat kemiripan sintaks antara Ruby dan Elixir, kita bandingkan dua bahasa yang sama-sama berjalan di atas mesin BEAM: Erlang dan Elixir. Meskipun keduanya berorientasi pada paradigma pemrograman fungsional, alur program dalam Elixir terasa lebih alami dan mudah dibaca.

Di Erlang, pemanggilan function sering kali dilakukan secara bersarang (staircasing), di mana setiap function dijalankan dari dalam ke luar. Pola ini cepat menurunkan keterbacaan ketika jumlah function bertambah.

Result = process3(process2(process1(Input))).
Enter fullscreen mode Exit fullscreen mode

Contoh di atas baru menggabungkan tiga function; bayangkan tingkat kompleksitasnya jika ada sepuluh atau lebih.

Elixir menyederhanakan pola tersebut dengan menghadirkan pipe operator (|>), yang menuliskan alur eksekusi dari kiri ke kanan atau atas ke bawah, sehingga logika program lebih mudah diikuti.

# Satu baris
input |> process1() |> process2() |> process3()

# Multi baris
input
|> process1()
|> process2()
|> process3()
Enter fullscreen mode Exit fullscreen mode

Operator ini menjadi ciri khas gaya penulisan Elixir karena memudahkan pembacaan alur data dari awal hingga akhir.

Selain pipe operator, Elixir menambahkan berbagai fitur yang meningkatkan pengalaman pengembangan. Dokumentasi dapat ditulis langsung di dalam kode menggunakan atribut @moduledoc dan @doc, lalu diuji otomatis melalui doctest seperti contoh berikut.

defmodule Math do
  @moduledoc """
  Provides simple mathematical operations.
  """

  @doc """
  Multiply number.

  ## Examples

      iex> Math.multiply(10)
      100
  """
  @spec multiply(number()) :: number()
  def multiply(number) do
    number * number
  end
end
Enter fullscreen mode Exit fullscreen mode

Dokumentasi ini dapat diubah menjadi HTML atau EPUB menggunakan ExDoc. Kamu bisa melihat hasil nyatanya di dokumentasi resmi Elixir, karena dokumentasi yang kamu baca di sana juga dihasilkan langsung oleh ExDoc.

Dengan ExDoc, developer dapat menulis dokumentasi langsung di dalam codebase, dan alat ini secara otomatis menghasilkan dokumentasi yang selalu selaras dengan perubahan kode. Pendekatan ini membantu menjaga keakuratan dan konsistensi antara kode dan penjelasannya.

Untuk kebutuhan sehari-hari, Elixir menyediakan Mix, alat terpadu untuk manajemen proyek, pengujian, kompilasi, serta pengelolaan dependensi.

Mix Tool

Mix terhubung langsung dengan Hex, package manager resmi ekosistem BEAM yang memudahkan distribusi dan instalasi pustaka. Keduanya terintegrasi erat, memungkinkan proses membangun, menguji, dan mendistribusikan aplikasi dilakukan sepenuhnya di dalam ekosistem Elixir.

Singkatnya, Elixir menghadirkan kekuatan dan keandalan Erlang dalam pengalaman pengembangan yang lebih modern, efisien, dan menyenangkan. Dengan fitur-fitur tersebut, kita dapat menulis kode yang ringkas, terstruktur, dan terdokumentasi dengan baik sejak awal.

Fitur-fitur yang dibahas di sini hanyalah sebagian kecil dari yang tersedia. Kamu dapat menjelajahi lebih banyak peningkatan dan kemampuan Elixir melalui dokumentasi resminya.

Kekurangan Elixir

Tidak ada teknologi yang sepenuhnya sempurna, termasuk Elixir dan platform yang berjalan di atas BEAM. Memahami kekurangan serta keterbatasannya penting agar kita dapat menilai apakah Elixir sesuai dengan kebutuhan proyek yang sedang dikembangkan. Pada akhirnya, keberhasilan sebuah proyek tidak ditentukan oleh seberapa populer teknologinya, melainkan oleh ketepatan memilih alat yang paling sesuai untuk menyelesaikan masalah yang dihadapi.

Performa Bukan untuk Raw Performance

Salah satu keterbatasan utama Elixir terletak pada performa eksekusinya. Karena berjalan di atas mesin virtual BEAM, Elixir tidak dapat menandingi kecepatan bahasa yang dikompilasi langsung ke kode mesin seperti C, C++, atau Rust. Untuk aplikasi yang sangat bergantung pada pemrosesan intensif CPU, seperti pengolahan gambar, machine learning, atau video encoding, Elixir bukanlah pilihan ideal.

Namun, hal ini bukan merupakan kelemahan desain, melainkan konsekuensi dari keputusan arsitektur yang sengaja dibuat. BEAM memprioritaskan stabilitas di bawah beban tinggi, toleransi terhadap kegagalan, dan kemampuan menjalankan banyak proses (concurrency) dalam skala besar, bukan mengejar raw performance atau jumlah requests per second semata.

Jika sebagian kecil dari aplikasi membutuhkan performa tinggi, bagian tersebut dapat ditulis menggunakan bahasa lain seperti C, lalu diintegrasikan melalui NIF (Native Implemented Function). Pendekatan ini memungkinkan kita memanfaatkan keunggulan BEAM tanpa kehilangan efisiensi di bagian yang benar-benar kritis terhadap performa.

Apabila aplikasi sepenuhnya bergantung pada komputasi intensif CPU, ada baiknya mempertimbangkan teknologi lain yang lebih sesuai dengan kebutuhan tersebut.

Ekosistem Masih Lebih Kecil Dibanding Bahasa Populer

Ekosistem Elixir saat ini masih lebih kecil dibanding bahasa pemrograman yang sudah lebih mapan. Sebagai perbandingan:

  • Hex, package manager resmi ekosistem BEAM (Erlang, Elixir, Gleam), menyediakan sekitar 20.000 pustaka.
  • Packagist untuk PHP memiliki lebih dari 400.000 pustaka.
  • NPM untuk JavaScript dan TypeScript memiliki lebih dari 3 juta pustaka.

Keterbatasan ini berarti beberapa pustaka yang dibutuhkan mungkin belum tersedia. Meski demikian, Elixir memiliki keunggulan interoperabilitas dengan bahasa lain di ekosistem BEAM. Kita dapat menggunakan pustaka Erlang secara langsung, bahkan pustaka dari Gleam, karena seluruh bahasa di BEAM saling kompatibel. Dengan begitu, ruang eksplorasi dan solusi yang tersedia tetap luas.

Meskipun ekosistem Elixir masih berkembang dan belum sebesar bahasa populer seperti JavaScript atau PHP, minat terhadapnya terus meningkat. Berdasarkan Stack Overflow Developer Survey 2025, Elixir menempati posisi ketiga sebagai bahasa yang paling diinginkan, tepat di bawah Gleam di posisi kedua. Phoenix Framework, web framework utama Elixir, bahkan menduduki peringkat pertama dalam kategori web frameworks and technologies yang paling diinginkan sejak 2023.

Tren ini menunjukkan peningkatan minat yang konsisten dari komunitas pengembang. Pertumbuhan tersebut memperkuat ekosistem Elixir dari waktu ke waktu. Komunitasnya juga dikenal ramah dan suportif terhadap pendatang baru, menjadikannya lingkungan yang kondusif untuk belajar, berkontribusi, dan berkembang bersama.

Sumber Belajar Elixir

Jika kamu ingin mulai belajar Elixir, tempat terbaik untuk memulainya adalah dokumentasi resminya, terutama bagian Getting Started. Di sana kamu akan menemukan penjelasan dasar tentang sintaks, struktur data, dan konsep inti yang membentuk cara kerja Elixir.

Selain dokumentasi, buku Elixir in Action edisi ketiga karya Saša Jurić juga sangat direkomendasikan. Buku ini dibagi menjadi tiga bagian besar: dasar bahasa, pemrograman concurrent di BEAM, dan penerapan Elixir di sistem produksi. Penjelasannya runtut, praktis, dan cocok untuk siapa pun yang ingin memahami Elixir secara menyeluruh.

Jika kamu lebih suka belajar lewat video, ada juga sumber visual seperti serial ElixirCasts dan kanal YouTube Elixir Mentor. Keduanya menyajikan video pendek dan langsung ke intinya, jadi pas buat belajar konsep Elixir secara praktis tanpa bertele-tele.

Dan tentu saja, kekuatan Elixir tidak hanya terletak pada teknologinya, tetapi juga pada komunitasnya. Forum Elixir Forum, kanal Discord, serta subreddit r/elixir menjadi tempat yang baik untuk berdiskusi, bertanya, dan berbagi proyek atau ide. Komunitasnya dikenal terbuka dan suportif; kamu dapat bertukar pengalaman dan belajar langsung dari para alchemist 🧙‍♂️ yang lebih berpengalaman.

Referensi

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.