Selasa, 20 April 2010

Mengenal Erlang, bahasa yang sifatnya concurent proggraming..

Erlang merupakan bahasa pemrograman untuk keperluan umum yang sifatnya konkuren. Subset dari Erlang merupakan bahasa yang fungsional, dengan strict evaluation, single assignment dan juga dynamic typing. Bahasa ini didesain oleh perusahaan Ericsson untuk mendukung aplikasi yang terdistribusi, fault-tolerant, soft-real-time dan juga non-stop. Bahasa ini juga mendukung hot swapping, dimana kode bisa dirubah tanpa harus menghentikan jalannya aplikasi atau sistem. Erlang memang awalnya merupakan bahasa proprietary di dalam lingkungan Ericsson, tetapi akhirnya dikeluarkan secara open source pada tahun 1998. Implementasi Erlang oleh Ericsson secara utama sifatnya interpreter, tetapi ia juga dilengkapi dengan kompiler yang bernama HiPE (tetapi tidak didukung oleh setiap platform).

Membuat dan mengatur proses di dalam Erlang merupakan hal yang sangat mudah, dimana terkadang threads sering dianggap sebagai sesuatu yang rumit pada beberapa bahasa pemrograman yang lainnya.

Erlang berasal dari nama A. K. Erlang. Hal ini sering kali menimbulkan salah kaprah dimana orang sering berpikir Erlang adalah singkatan dari Ericsson Language. Wajar saja, karena memang Erlang adalah bahasa yang digunakan secara intensif di kalangan Ericsson.

Functional language
Coba perhatikan kode berikut ini:

module(fact).
-export([fac/1]).

fac(0) -> 1;
fac(N) where N > 0 -> N * fac(N-1).

Berikut ini adalah contoh dalam implementasi algoritma Quicksort.

%% quicksort(List)
%% Sort a list of items
-module(quicksort).
-export([qsort/1]).

qsort([]) -> [];
qsort([Pivot|Rest]) ->
qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]).

Contoh di atas secara rekursif akan memanggil fungsi qsort sampai tidak ada lagi elemen yang harus disort. Ekspresi [ X || X <- Rest, X < Pivot] dapat dibaca sebagai "pilih semua X dimana X adalah anggota dari Rest dan X kurang dari Pivot", hal ini akan menghasilkan sesuatu yang mudah dalam menghandle Lists. Karena Anda dapat mengevaluasi ekspresi boolean apapun di antara dua buah tipe data yang berbeda, maka proses evaluasi akan berlangsung secara langsung, misalnya 1 < a akan menghasilkan nilai true.
Referensi

* Erlang - Wikipedia - http://en.wikipedia.org/

Tidak ada komentar:

Posting Komentar