Apa itu Pemrograman Fungsional?
โก Ringkasan Cerdas
Pemrograman Fungsional adalah cara membangun perangkat lunak dengan menyusun fungsi-fungsi murni, menghindari keadaan bersama dan data yang dapat diubah. Pendekatan ini menekankan ekspresi daripada pernyataan, sehingga keluaran suatu fungsi hanya bergantung pada masukannya, yang membuat program dapat diprediksi dan diuji.

Apa itu Pemrograman Fungsional?
Pemrograman fungsional (juga disebut FP) adalah cara berpikir tentang konstruksi perangkat lunak dengan menciptakan fungsi murni. Pendekatan ini menghindari konsep keadaan bersama dan data yang dapat diubah yang terdapat dalam Pemrograman Berorientasi Objek.
Bahasa pemrograman fungsional menekankan ekspresi dan deklarasi daripada eksekusi pernyataan. Oleh karena itu, tidak seperti prosedur lain yang bergantung pada keadaan lokal atau global, keluaran nilai dalam pemrograman fungsional hanya bergantung pada argumen yang diteruskan ke fungsi.
Karakteristik Pemrograman Fungsional
- Metode pemrograman fungsional berfokus pada hasil, bukan pada proses.
- Penekanan diberikan pada apa yang akan dihitung.
- Data bersifat tetap (tidak dapat diubah).
- Pemrograman fungsional menguraikan masalah menjadi fungsi-fungsi.
- Algoritma ini dibangun berdasarkan konsep fungsi matematika yang menggunakan ekspresi bersyarat dan rekursi untuk melakukan perhitungan.
- Ini tidak mendukung iterasi seperti pernyataan perulangan dan pernyataan kondisional seperti If-Else.
Sejarah Pemrograman Fungsional
- Landasan Pemrograman Fungsional adalah Kalkulus Lambda. Kalkulus ini dikembangkan pada tahun 1930-an untuk aplikasi fungsional, definisi, dan rekursi.
- LISP adalah bahasa pemrograman fungsional pertama. McCarthy mendesainnya pada tahun 1960.
- Pada akhir tahun 70-an, para peneliti di Universitas Edinburgh mendefinisikan ML (Meta Language).
- Pada awal tahun 80-an, bahasa Hope menambahkan tipe data aljabar untuk rekursi dan penalaran persamaan.
- Pada tahun 2004, bahasa pemrograman fungsional 'Scala' diperkenalkan.
Bahasa Pemrograman Fungsional
Tujuan dari setiap bahasa pemrograman fungsional (FP) adalah untuk meniru fungsi matematika. Namun, proses komputasi dasarnya berbeda dalam pemrograman fungsional.
Berikut beberapa bahasa pemrograman fungsional yang paling terkenal:
- Haskell
- SML
- Clojure
- Scala
- erlang
- Membersihkan
- F#
- ML/OCaml Lisp / Skema
- XSLT
- SQL
- Mathematica
Terminologi Pemrograman Fungsional Dasar dan Concepts
Data Abadi
Data yang tidak dapat diubah (Immutable Data) berarti Anda seharusnya dapat dengan mudah membuat struktur data baru, bukan memodifikasi struktur data yang sudah ada.
Transparansi referensial
Program fungsional seharusnya menjalankan operasi seolah-olah itu adalah operasi pertama kalinya. Dengan demikian, Anda akan mengetahui apa yang mungkin atau tidak mungkin terjadi selama eksekusi program, dan efek sampingnya. Dalam istilah pemrograman fungsional, ini disebut transparansi referensial.
Modularitas
Desain modular meningkatkan produktivitas. Modul-modul kecil dapat dikembangkan dengan cepat dan memiliki peluang lebih besar untuk digunakan kembali, yang tentunya mengarah pada pengembangan program yang lebih cepat. Selain itu, modul-modul tersebut dapat diuji secara terpisah, yang membantu mengurangi waktu yang dihabiskan untuk pengujian unit dan debugging.
Maintainability
Kemudahan pemeliharaan adalah istilah sederhana yang berarti pemrograman fungsional (FP) lebih mudah dipelihara, karena Anda tidak perlu khawatir secara tidak sengaja mengubah sesuatu di luar fungsi yang diberikan.
Fungsi kelas satu
'Fungsi kelas satu' adalah definisi yang diberikan kepada entitas bahasa pemrograman yang tidak memiliki batasan penggunaan. Oleh karena itu, fungsi kelas satu dapat muncul di mana saja dalam program.
Penutupan
Closure adalah fungsi dalam yang dapat mengakses variabel fungsi induk, bahkan setelah fungsi induk tersebut selesai dieksekusi.
Fungsi tingkat tinggi
Fungsi tingkat tinggi akan mengambil fungsi lain sebagai argumen atau mengembalikannya sebagai hasil.
Fungsi tingkat tinggi memungkinkan aplikasi parsial atau currying. Teknik ini menerapkan fungsi pada argumennya satu per satu, dengan setiap aplikasi mengembalikan fungsi baru yang menerima argumen berikutnya.
Fungsi murni
'Fungsi murni' adalah fungsi yang masukannya dinyatakan sebagai masukan dan tidak ada satupun yang harus disembunyikan. Outputnya juga dinyatakan sebagai output.
Fungsi murni hanya beroperasi pada parameternya. Fungsi ini tidak efisien jika tidak mengembalikan apa pun. Selain itu, fungsi ini menawarkan keluaran yang sama untuk parameter yang diberikan.
Contoh:
Function Pure(a,b) { return a+b; }
Fungsi tidak murni
Fungsi tidak murni adalah kebalikan dari fungsi murni. Fungsi tidak murni memiliki input atau output tersembunyi, dan itulah mengapa disebut fungsi tidak murni. Fungsi tidak murni tidak dapat digunakan atau diuji secara terpisah karena memiliki ketergantungan.
Example
int z; function notPure(){ z = z+10; }
Komposisi Fungsi
Komposisi fungsi adalah menggabungkan 2 fungsi atau lebih untuk membuat fungsi baru.
Negara Bagian Bersama
Shared state adalah konsep penting dalam pemrograman berorientasi objek (OOP). Pada dasarnya, ini adalah penambahan properti pada objek. Misalnya, jika HardDisk adalah sebuah Objek, maka Kapasitas Penyimpanan dan Ukuran Disk dapat ditambahkan sebagai properti.
Efek Samping
Efek samping adalah setiap perubahan keadaan yang terjadi di luar fungsi yang dipanggil. Tujuan terbesar dari setiap bahasa pemrograman fungsional (FP) adalah untuk meminimalkan efek samping dengan memisahkannya dari bagian kode perangkat lunak lainnya. Dalam pemrograman FP, sangat penting untuk memisahkan efek samping dari logika pemrograman lainnya.
Manfaat pemrograman fungsional
- Memungkinkan Anda menghindari masalah dan kesalahan yang membingungkan dalam kode.
- Pengujian dan eksekusi unit testing serta debugging FP menjadi lebih mudah. Code.
- Pemrosesan paralel dan konkurensi.
- Penerapan kode panas dan toleransi kesalahan.
- Menawarkan modularitas yang lebih baik dengan kode yang lebih pendek.
- Peningkatan produktivitas pengembang.
- Mendukung fungsi bersarang.
- Konstruksi Fungsional seperti Peta & Daftar Malas, dll.
- Memungkinkan penggunaan Kalkulus Lambda secara efektif.
Keterbatasan Pemrograman Fungsional
- Paradigma pemrograman fungsional tidaklah mudah, sehingga sulit dipahami bagi pemula.
- Sulit untuk dipelihara karena banyak objek yang berevolusi selama proses pengkodean.
- Membutuhkan banyak simulasi dan pengaturan lingkungan yang ekstensif.
- Penggunaan kembali sangat rumit dan membutuhkan perbaikan terus-menerus.
- Objek-objek tersebut mungkin tidak menggambarkan masalah dengan benar.
Pemrograman Fungsional vs. Pemrograman Berorientasi Objek
| Pemrograman Fungsional | OOP |
|---|---|
| FP menggunakan data yang tidak dapat diubah. | OOP menggunakan data yang dapat diubah. |
| Mengikuti Model berbasis Pemrograman Deklaratif. | Mengikuti Model Pemrograman Imperatif. |
| Yang menjadi fokusnya adalah: โApa yang Anda lakukan dalam program ini.โ | Yang menjadi fokusnya adalah: โBagaimana Anda melakukan pemrograman Anda.โ |
| Mendukung Pemrograman Paralel. | Tidak ada dukungan untuk Pemrograman Paralel. |
| Fungsinya tidak memiliki efek samping. | Suatu metode dapat menimbulkan banyak efek samping. |
| Kontrol Aliran dilakukan menggunakan pemanggilan fungsi & pemanggilan fungsi dengan rekursi. | Proses kontrol aliran dilakukan dengan menggunakan loop dan pernyataan kondisional. |
| Urutan eksekusi pernyataan tidak terlalu penting. | Urutan eksekusi pernyataan itu penting. |
| Mendukung โAbsโtracโPengendalian Dataโ dan โAbstraksiโtrac"Otoritas atas Perilaku." | Hanya mendukung โAbsโtrac"Pengendalian Data". |

