Pemrograman Fungsional

Paradigma pemrograman Fungsional
· Didasari oleh konsep pemetaan dan fungsi pada matematika.
· Fungsi dapat berbentuk sebagai fungsi ‘primitif’ atau komposisi dari fungsi lain yang 
  terdefinisi.
· Pemrogram mengasumsikan bahwa ada fungsi dasar yang dapat dilakukan. Penyelesaian
  masalah didasari atas aplikasi dari fungsi-fungsi tersebut. Dasar pemecahan persoalan
  adalah transformasional.
· Semua kelakuan program adalah suatu rantai transformasi dari sebuah keadaan awal
  menuju ke suatu rantai keadaan akhir, melalui keadaan antara, melalui suatu aplikasi
  fungsi.
· Paradigma ini tidak mempersoalkan memorisasi dan struktur data, tidak ada pemilahan
  antara data dan program, tidak ada lagi pengertian tentang ‘variabel’.
· Pemrogram tidak perlu lagi mengetahui bagaimana mesin mengeksekusi atau bagaimana
  informasi disimpan dalam memori. Adapun yang menjadi perhatian adalah keadaan awal
 dan akhir saja.Program fungsional  jika dilihat harus diolah lebih dalam dari pada program
 prosedural (oleh pemroses bahasanya), karena itu salah satu keberatan adalah kinerja 
 dan  efisiensinya.
Karena itu, dalam bahasa pemrograman fungsional, program adalah fungsi hasil komposisi dari fungsi-fungsi lain, apakah fungsi itu dasar atau hasil komposisi dari fungsi dasar. Bahasa pemrograman fungsional memperoleh hasil dengan cara mengaplikasikan fungsi terhadap argumen atau parameternya,yang juga dapat berupa fungsi.

Bahasa pemrograman fungsional menonjol dalam kemampuan struktur datanya. Karena bahasa ini tidak dibatasi oleh variabel yang berasosiasi dengan lokasi memori, maka sebuah struktur data cukup ditangani sebagai sebuah nilai. Yang termasuk dalam bahasa pemrograman fungsional antara lain Lisp, Scheme, Erlang, Clean, Mercury, ML, OCaml, SQL, XSL dan lain-lain.


Bahasa pemrograman fungsional mirip dengan spreadsheet, di mana nilai dari tiap cell ditetapkan yang berpengaruh pada nilai dari cell lainnya. Lebih fokus kepada apa yang akan dihitung, bukan bagaimana proses penghitungannya.
Adapun kelebihan dari bahasa pemrograman fungsional antara lain:
1. Singkat , 
    Program fungsional cenderung lebih ringkas dibanding program terstruktur (2 sampai 10
    kali).
2. Mudah dimengerti ,
    Program fungsional sering lebih mudah untuk dimengerti.
3. Tidak ada tumpukan pada memori ,
    Tidak ada kemungkinan memperlakukan integer sebagai pointer, atau dilanjutkan 
    dengan pointer null.
4. Kode dapat digunakan kembali.
5. Pelekatan yang kuat.
   Bahasa fungsional non-strict memliki fitur kuat lainnya: hanya mengevaluasi program  
   seperti yang diperlukan  untuk menghasilkan jawaban, yang sering disebut dengan lazy
   evaluation. Struktur data dievaluasi secukupnya untuk menghasilkan jawaban, dan
   sebagian mungkin tidak dievaluasi sama sekali.
   Hal ini memungkinkan “pelekatan” untuk menyusun bersama program yang sudah ada.
   Hal ini memungkinkan penggunaan kembali program, atau potongan program lebih sering
   dari yang dapat dilakukan oleh pengaturan terstruktur.
6. Abstraksi yang kuat.
   Secara umum bahasa fungsional menawarkan cara-cara baru yang kuat untuk
   meng-enkapsulasi abstraksi. Abstraksi mengizinkan kita untuk menentukan objek yang
   pekerjaan internalnya tersembunyi. Abstraksi merupakan kunci untuk membangun
   program modular yang dapat dipelihara. Satu mekanisme abstraksi yang kuat yang
   terdapat dalam bahasa fungsional adalah higher-order function.
7. Manajemen memori yang terintegrasi.
    Kebanyakan program rumit perlu mengalokasikan memori dinamis dari tumpukan
    (heap). Setiap bahasa fungsional memudahkan pemrogram dari beban manajemen
    penyimpanan tersebut. Penyimpanan dialokasikan dan diinisialisaikan secara implisit, dan
    diselamatkan secara otomatis oleh kolektor sampah.

0 comments

Posting Komentar