Monday 25 January 2010

Erlang Bahasa Back-end dari Erricson

Pernahkah mendengar bahasa Erlang???
Ya, hanya segelintir orang yang mengetahui tentang bahasa pemrograman ini. Bahasa ini sering disebut dengan bahasa back-end. Erlang adalah bahasa fungsional, dengan evaluasi yang ketat, single assignment, dan pengetikan dinamis. Erlang sangat cocok untuk aplikasi yang membutuhkan pengolahan sistem terdistribusi, soft real time, sistem konkurensi, misal untuk sistem telekomunikasi untuk mengendalikan switch atau pengkonversi protokol. Juga untuk server untuk aplikasi Internet, misal mail server, WAP server. Bisa juga untuk aplikasi telekomunikasi, misal untuk messaging layanan mobil. Erlang bisa juga digunakan aplikasi database yang membutuhkan persyaratan soft real time

Di awal pengembangan Erlang pada tahun 1982-1985, Ericsson mencoba lebih dari 20 bahasa pemrograman yang ada saat itu, dari C, hinggal LISP dan Prolog. Sekitar tahun 1987 bahasa Erlang mulai digunakan di lingkungan Ericsson. Berbagai fitur Lisp, Prolog, Parlog diserap dalam bahasa ini. Sejak tahun 1993, Erlang telah memiliki kemampuan untuk mendukung sistem terdistribusi, sehingga memungkinkan menjalankan sistem Erlang pada perangkat keras yang heterogen. Erlang mulai banyak digunakan di berbagai perusahaan dan organisasi.

Versi pertama ini dikembangkan oleh Joe Armstrong pada 1986. [1] Erlang mendukung swapping kode sehingga dapat diubah tanpa harus menghentikan sebuah sistem. [2] Erlang awalnya adalah bahasa original dari Ericsson, tapi dirilis sebagai open source pada tahun 1998. Erlang telah tersedia untuk berbagai sistem operasi dari VxWorks, MacIntosh dan berbagai Unix dan juga MS Windows.

Erlang merupakan lingkungan sistem dan bahasa pemrograman yang umum. Memiliki dukungan untuk konkurensi, sistem terdistribusi dan serta fault tolerance. Bahasa Erlang sangat cocok untuk penggunaan aplikasi telekomunikasi dan jaringan karena memang didisain dari awal untuk kebutuhan tersebut. Erlang menyediakan penanganan kesalahan yang baik. Menulis program yang dijalankan di mesin terpisah tidaklah sulit. Hal ini karena sejak awalnya Erlang memang didisain untuk mendukung aplikasi terdistribusi. Proses distribusi program terjadi secara transparan: program aplikasi tidak perlu peduli atau ditangani khusus sebagai program yang terdistribusi.

Konkurensi dan pengiriman pesan (message passing) adalah dasar dari bahasa Erlang ini. Aplikasi yang ditulis Erlang sering disusun dari ratusan atau ribuan proses ringan (lightweight proces). Perpindahan konteks (context switching), antara proses Erlang jauh lebih rendah dari perpindahan konteks antara thread pada program C.
Erlang menggunakan mesin virtual seperti Java. Oleh karena itu, program yang telah dikompilasi di suatu arsitektur Erlang dapat dijalankan di arsitektur lainnya. Bahkan program Erlang dapat diperbaharui (diupdate) tanpa menghentikan running program.

Erlang dikembangkan oleh Ericsson untuk memenuhi kebutuhan pengembangan produknya sejak 1982. Saat itu dibutuhkan suatu bahasa pemrograman yang memudahkan pemrograman di lingkungan terdistribusi dan cukup kebal kesalahan. Salah satu prasyarat bahasa tersebut haruslah bersifat simbolik tinggi serta mendukung pemrograman fungsional. Karena akan digunakan untuk aplikasi terdistribusi, maka harus mendukung konkurensi. Konkurensi ini harus cukup ditail sehingga proses asinkron telfon dapat direpresentasikan sebagai 1 proses. Penanganan kesalahan harus ditangani dengan baik.

Berikut contoh penggunaan bahasa Erlang kedalam program fungsional.

Impelementasi program factorial di Erlang:

-module(fact). % Ini adalah file 'fact.erl', modul dan filename harus match
-export([fac/1]). % Fungsi eksport 'fac' dari iterasi 1 (1 parameter, no tipe, no nama)

fac(0) -> 1; % jika 0, kemudian mengembalikan 1, sebalikanya ( artinya 'else')
fac(N) -> N * fac(N-1).
% determinasi dengan rekursif, kemudian mengembalikan hasil
% (tanda titik “.” artinya 'endif' atau 'fungsi end')

Implementasi Algoritma Quicksort:

%% quicksort:quicksort(List)
%% Mengurutkan item-item sebuah list
-module(quicksort). % Ini merupakan file 'quicksort.erl'
-export([quicksort/1]). % Sebuah fungsi 'quicksort' dengan 1 parameter yang
% dieksport (no tipe, no nama)


quicksort([]) -> []; % Jika list [] adalah kosong, mengembalikan sebuah
% list kosong (tak ada data untuk diurutkan)

quicksort([Pivot|Rest]) -> % Compose sebuah list dengan rekursif dari 'Front'
% dari 'Pivot' dan 'Back' dari 'Rest'
quicksort([Front || Front <- Rest, Front <>= Pivot]).

[Download Link]

Komentar :

ada 0 comments ke “Erlang Bahasa Back-end dari Erricson”

Post a Comment

 

Development by Sigit Widiyanto '@2009'