- PENGERTIAN PEMROGRAMAN FUNGSIONAL
Pemrograman Fungsional adalah sebuah pemrograman yang melakukan proses komputasi
sebagai evaluasi fungsi-fungsi matematika.
Pemrograman Fungsional sering
disebut juga pemrograman yang aplikatif karena fungsi-fungsinya yang di
aplikasikan kedalam argumentasi menjadi deklaratif dan non-prosedural.
Pemrograman Fungsional juga
didasarkan pada konsep dasar matematika dari sebuah fungsi dan seluruh kode
programnya berupa fungsi-fungsi.
Karena pemrograman fungsional
berdasarkan pada matematika maka akan lebih mudah untuk mendeteksi bahwa
program tersebut benar atau tidak.
Bahasa Pemrograman Fungsional lebih
disukai untuk tujuan ilmiah dan dan akademik, bukan untuk pengembangan
perangkat lunak dan komersial. Namun, ada beberapa bahasa pemrograman
fungsional yang digunakan untuk komersial pengembangan aplikasi diantaranya
adalah :
1.
XSLT
2.
XML
3.
OCaml
4.
Haskell
5.
Mathematica
6.
Erlang
- TIGA KOMPONEN PRIMER BAHASA
FUNGSIONAL
1. Objek Data
Menggunakan mekanisme struktur data
tingkat tinggi. Contohnya : Array
atau List.
2. Fungsi Built-in
Untuk memanipulasi objek data dasar
yang menyediakan sejumlah fungsi untuk membuat serta mengakses list.
3. Functional Forms
Untuk membuat fungsi baru yang
mengizinkan programmer mendefinisikan sebuah operasi baru dari kombinasi fungsi
yang ada.
- LAMBDA KALKULUS PADA
PEMROGRAMAN FUNGSIONAL
Lambda Kalkulus bisa disebut sebagai
asal muasal bahasa pemrograman fungsional yang dikembangkan untuk bekerja
dengan aplikasi rekursif fungsi dan definisi.
- Ada 3 Elemen Pada Lambda
Kalkulus Yaitu :
- Lambang Primitif
- Aplikasi Fungsi
- Fungsi Ciptaan
Lambda Kalkulus Murni juga tidak
memiliki fungsi tetap dan konstanta.
- DARI LAMBDA KALKULUS KE BAHASA
PEMROGRAMAN FUNGSIONAL
Ambil Lambda Kalkulus Dan :
·
Perbaiki Strategy Pengurangan
β-pengurangan dalam
kalkulus λ-dapat terjadi di mana saja dan dalam urutan apapun. ini dapat
mempengaruhi penghentian dan efisiensi algoritma program. Sebuah tetap strategi
pengurangan memungkinkan programmer untuk alasan tentang pemberhentian dan
algoritmik kompleksitas.
·
Tambahkan tipe data primitif (integer, string), operasi primitif
(aritmatika, logis), dan struktur data primitif (daftar, catatan). Semua ini
dapat dikodekan dalam kalkulus λ-, namun pengkodean tidak wajar dan tidak
efisien. Mengembangkan model eksekusi efisien.
Berulang ulang oleh
aturan β adalah cara yang sangat tidak efisien untuk mengeksekusi program pada
komputer.
- PEMROGRAMAN FUNGSIONAL DAN
IMPERATIVE
Ada dua kubu besar dalam bahasa
pemrograman yaitu pemrograman fungsional dan pemrograman imperative. Sampai
saat ini kubu imperative masih mendominasi di industri perangkat lunak dunia,
seperti C, Java, C#, Pascal, dan Visual Basic.
Namun, jangan remehkan fungsional
karena kini mendapatkan tempat di industri perangkat lunak dunia khususnya
untuk memberi solusi terhadap isu scalability, fault-tolerance, concurrency,
parallel programming. Beberapa bahasa pemrograman fungsional antara lain
Erlang, Haskell, Scala (multi-paradigm), F#, Clojure.
KELEBIHAN
PEMROGRAMAN FUNGSIONAL
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 seringkali lebih mudah untuk
dimengerti. Dalam kasus Quicksort, tidak terlalu diperlukan pengetahuan mengenai
Haskell maupun quicksort. Hal tersebut tidak dapat terjadi pada program C, yang
membutuhkan waktu untuk dimengerti, dan sangat mudah untuk melakukan kesalahn
kecil yang mengakibatkan program tidak dapat dieksekusi.
3.
Tidak ada tumpukan pada memori.
Tidak ada kemungkinan memperlakukan integer sebagai
pointer, atau dilanjutkan dengan pointer null.
4.
Kode dapat digunakan kembali.
Bahasa pemrograman fungsional menggunakan polymorphism,
yang akan meningkatkan penggunaan kembali kode.
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.
.
KELEMAHAN FUNGSIONAL PROGRAMMING:
.Kode
programnya cenderung agak lambat berkembang, Bahasa pemrogramannya cenderung
sulit untuk didebug, Kelemahan kedua bukanlah masalah yang terlalu besar tetapi
yang pertama agak mengganggu, namun walaupun demikian CPU time selalu lebih
murah daripada programmer time dan tidak apalah jika harus menunggu sedikit
lebih lama untuk melihat outputnya setelah menyimpannya beberapa hari terhitung
dari saat diprogram dan didebug. Namun demikian pemrograman fungsional
sekarang telah memiliki standard interface fungsi asing atau foreign-function
interface yang memperbolehkan kita untuk berhubungan dengan kode
program yang ditulis dalam berbagai jenis bahasa pemrograman.
Contoh program bahasa
C dan C++ menurut nilai kembalian yang dihasilkan
:
1. fungsi yang mempunyai nilai kembalian :
h
contoh :
fungsi return() di bawah ini menunjukkan kalau fungsi di atas mempunyai nilai kembalian
b. fungsi yang punya input dan punya output
contoh:
- kalau di dalam tanda kurung memiliki variabel, berarti fungsi tersebut mempunyai input
1. fungsi yang mempunyai nilai kembalian :
h
sintaks umum :
tipe_data nama_fungsi
()
{
statemen1;
statemen2;
...
}
contoh :
int show_number()
{
int a = 1;
return (a);
}
fungsi return() di bawah ini menunjukkan kalau fungsi di atas mempunyai nilai kembalian
b. fungsi yang punya input dan punya output
sintaks umum :
tipe_data nama_fungsi(tipe_data
nama_variabel)
{
statemen1;
statemen2;
...
}
contoh:
int show_number(int a)
{
a = 1;
return (a);
}
- kalau di dalam tanda kurung memiliki variabel, berarti fungsi tersebut mempunyai input
Tidak ada komentar:
Posting Komentar