Cute Red Pencil Ristanto Dwi Prasetyo: PEMROGRAMAN FUNGSIONAL

Senin, 30 Desember 2013

PEMROGRAMAN FUNGSIONAL

  • 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 :
      1. Lambang Primitif
      2. Aplikasi Fungsi
      3. 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 :
hsintaks 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



1 komentar: