Erlang adalah bahasa pemrograman fungsional yang dirancang untuk membangun sistem yang dapat diskalakan dan tahan kesalahan, terutama dalam domain aplikasi terdistribusi dan bersamaan. Bahasa ini awalnya dikembangkan oleh Ericsson pada akhir 1980-an untuk menciptakan sistem telekomunikasi yang tangguh. Fitur unik Erlang mencakup dukungannya untuk proses ringan, konkurensi berbasis pengiriman pesan, pertukaran kode secara langsung, dan penekanan yang kuat pada keandalan. Saat ini, Erlang banyak digunakan di industri yang memerlukan ketersediaan tinggi dan sistem terdistribusi, seperti telekomunikasi, aplikasi pesan, dan sistem basis data.
Erlang diciptakan pada akhir 1980-an oleh Joe Armstrong, Robert Virding, dan Mike Williams di Ericsson, terutama untuk memenuhi kebutuhan industri telekomunikasi. Bahasa ini dikembangkan untuk memfasilitasi pembangunan sistem besar yang tahan kesalahan yang dapat mengelola banyak panggilan dan koneksi secara bersamaan.
Pada awal 1990-an, Ericsson menyadari potensi Erlang di luar telekomunikasi. Pada tahun 1998, Erlang dirilis sebagai open source, yang memungkinkan komunitas pengembang yang lebih luas untuk berkontribusi pada pertumbuhannya. Gerakan open-source ini mengarah pada pengembangan mesin virtual BEAM, yang mengeksekusi kode Erlang dan sejak itu berkembang untuk mendukung bahasa lain.
Erlang saat ini dipelihara oleh tim Erlang/OTP dan memiliki komunitas yang berdedikasi. Siklus rilis Erlang telah menjadi lebih konsisten, dengan pembaruan dan perbaikan rutin yang berfokus pada kinerja, fitur baru, dan dokumentasi yang ditingkatkan. Bahasa ini juga menginspirasi pengembangan Elixir, bahasa pemrograman modern yang berjalan di mesin virtual Erlang dan menggabungkan banyak prinsipnya sambil menyediakan fitur tambahan.
Erlang pada dasarnya adalah bahasa fungsional, yang berarti fungsi adalah warga negara kelas satu dan dapat dipindahkan seperti variabel.
double(X) -> X * 2.
Proses ringan Erlang memungkinkan pembuatan ribuan proses bersamaan tanpa overhead yang signifikan.
spawn(fun() -> io:format("Hello from a process!~n") end).
Proses dalam Erlang berkomunikasi menggunakan pengiriman pesan, yang memungkinkan komunikasi yang aman tanpa keadaan bersama.
Pid = spawn(fun() -> receive
{msg, Content} -> io:format("Received: ~s~n", [Content])
end end),
Pid ! {msg, "Hello!"}.
Erlang menggunakan pencocokan pola, fitur yang kuat yang memungkinkan kode yang jelas dan ringkas.
match(X) when X > 0 -> io:format("Positive number: ~B~n", [X]);
match(X) -> io:format("Non-positive number: ~B~n", [X]).
Erlang mendukung toleransi kesalahan melalui filosofi "let it crash", yang memungkinkan proses gagal dan di-restart tanpa mempengaruhi sistem.
start_process() ->
spawn(fun() -> crash() end).
Erlang memungkinkan pengembang untuk mengubah kode dalam sistem yang sedang berjalan tanpa menghentikannya.
%% Versi lama
-module(example).
-export([hello/0]).
hello() -> io:format("Old Version~n").
%% Versi baru
-module(example).
-export([hello/0]).
hello() -> io:format("New Version~n").
Data dalam Erlang bersifat tidak dapat diubah, yang mengarah pada lebih sedikit bug dan pemahaman yang lebih mudah tentang kode.
List = [1, 2, 3],
NewList = [4 | List].
Erlang memiliki fitur yang memungkinkan distribusi proses dengan mudah di berbagai node.
net_adm:start() ->
net_adm:ping('other_node@hostname').
Erlang mendukung tipe rekaman untuk membuat tipe data terstruktur.
-record(person, {name, age}).
Person = #person{name="Alice", age=30}.
Erlang memungkinkan pemahaman daftar untuk menghasilkan dan memanipulasi daftar dengan ringkas.
Squares = [X*X || X <- [1,2,3]].
Erlang dieksekusi di mesin virtual BEAM, yang dirancang untuk menjalankan aplikasi bersamaan dan tahan kesalahan. BEAM mengoptimalkan kinerja dan memungkinkan fitur seperti pertukaran kode secara langsung.
Ada beberapa lingkungan pengembangan untuk Erlang, dengan Emacs dan IntelliJ IDEA (dengan plugin Erlang) menjadi yang paling populer. Alat lain yang patut dicatat termasuk editor khusus Erlang seperti Erlide.
Untuk membuat proyek Erlang, biasanya digunakan alat rebar3
, yang mengelola ketergantungan dan pembangunan. Misalnya, untuk membuat proyek baru, Anda akan mengeksekusi:
rebar3 new app myapp
Kemudian, Anda dapat membangun proyek dengan:
rebar3 compile
Erlang banyak digunakan dalam telekomunikasi, sistem pesan, dan aplikasi waktu nyata. Aplikasi yang terkenal termasuk:
Kekuatan utama Erlang terletak pada model konkurensinya dan toleransi kesalahannya, yang membedakannya dari bahasa seperti:
Menerjemahkan kode ke dan dari Erlang bisa menjadi kompleks karena paradigma uniknya. Alat seperti erl2cpp
ada untuk beberapa terjemahan, tetapi tidak ada alat otomatis yang luas untuk semua bahasa. Terjemahan manual mungkin melibatkan: