Bahasa Pemrograman Erlang

Ikhtisar

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.

Aspek Historis

Penciptaan dan Pengembangan Awal

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.

Evolusi Menjadi Open Source

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.

Keadaan Saat Ini

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.

Fitur Sintaksis

Paradigma Pemrograman Fungsional

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

Proses ringan Erlang memungkinkan pembuatan ribuan proses bersamaan tanpa overhead yang signifikan.

spawn(fun() -> io:format("Hello from a process!~n") end).

Pengiriman Pesan

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!"}.

Pencocokan Pola

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]).

Toleransi Kesalahan

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).

Pertukaran Kode Secara Langsung

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").

Immutabilitas

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].

Dukungan Bawaan untuk Distribusi

Erlang memiliki fitur yang memungkinkan distribusi proses dengan mudah di berbagai node.

net_adm:start() -> 
  net_adm:ping('other_node@hostname').

Tipe Rekaman

Erlang mendukung tipe rekaman untuk membuat tipe data terstruktur.

-record(person, {name, age}).
Person = #person{name="Alice", age=30}.

Pemahaman Daftar

Erlang memungkinkan pemahaman daftar untuk menghasilkan dan memanipulasi daftar dengan ringkas.

Squares = [X*X || X <- [1,2,3]].

Alat Pengembang, Runtime, dan IDE

Runtime

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.

IDE Populer

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.

Membangun Proyek

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

Aplikasi Erlang

Erlang banyak digunakan dalam telekomunikasi, sistem pesan, dan aplikasi waktu nyata. Aplikasi yang terkenal termasuk:

Perbandingan dengan Bahasa Serupa

Kekuatan utama Erlang terletak pada model konkurensinya dan toleransi kesalahannya, yang membedakannya dari bahasa seperti:

Tips Terjemahan Sumber ke Sumber

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: