· 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