Apa itu Pemrograman Fungsional? Tutorial dengan Contoh

Apa itu Pemrograman Fungsional?

Pemrograman fungsional (disebut juga FP) adalah cara berpikir tentang konstruksi perangkat lunak dengan menciptakan fungsi murni. Ini menghindari konsep keadaan bersama, data yang bisa berubah yang diamati dalam Pemrograman Berorientasi Objek.

Bahasa fungsional menekankan pada ekspresi dan deklarasi daripada eksekusi pernyataan. Oleh karena itu, tidak seperti prosedur lain yang bergantung pada keadaan lokal atau global, nilai keluaran di FP hanya bergantung pada argumen yang diteruskan ke fungsi tersebut.

Karakteristik Pemrograman Fungsional

  • Metode pemrograman fungsional berfokus pada hasil, bukan proses
  • Penekanannya adalah pada apa yang harus dihitung
  • Data tidak dapat diubah
  • Pemrograman fungsional Menguraikan masalah menjadi 'fungsi
  • Itu dibangun di atas konsep fungsi matematika yang menggunakan ekspresi kondisional dan rekursi untuk melakukan perhitungan
  • Itu tidak mendukung iterasi seperti pernyataan loop dan pernyataan kondisional seperti If-Else

Sejarah Pemrograman Fungsional

  • Dasar 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 merancangnya pada tahun 1960
  • Pada akhir tahun 70an para peneliti di Universitas Edinburgh mendefinisikan ML (Meta Language)
  • Pada awal tahun 80an, bahasa Hope menambahkan tipe data aljabar untuk rekursi dan penalaran persamaan
  • Pada tahun 2004 Inovasi bahasa Fungsional 'Scala.'

Bahasa Pemrograman Fungsional

Tujuan dari setiap bahasa FP adalah untuk meniru fungsi matematika. Namun, proses dasar komputasi berbeda dalam pemrograman fungsional.

Berikut adalah beberapa bahasa pemrograman Fungsional yang paling menonjol:

  • Haskell
  • SML
  • Clojure
  • Scala
  • erlang
  • Membersihkan
  • F#
  • ML/OCaml Lisp / Skema
  • XSLT
  • SQL
  • Mathematica

Terminologi Pemrograman Fungsional Dasar dan Concepts

Terminologi Pemrograman Fungsional Dasar dan Concepts

Data Abadi

Data yang Tidak Dapat Diubah berarti Anda dapat dengan mudah membuat struktur data daripada memodifikasi struktur data yang sudah ada.

Transparansi referensial

Program fungsional harus menjalankan operasi seperti pertama kali. Jadi, Anda akan tahu apa yang mungkin terjadi atau tidak terjadi selama eksekusi program, dan efek sampingnya. Dalam istilah FP disebut transparansi referensial.

Modularitas

Desain modular meningkatkan produktivitas. Modul kecil dapat dikodekan dengan cepat dan memiliki peluang lebih besar untuk digunakan kembali yang tentunya menghasilkan pengembangan program yang lebih cepat. Selain itu, modul dapat diuji secara terpisah yang membantu Anda mengurangi waktu yang dihabiskan untuk pengujian unit dan debugging.

Maintainability

Pemeliharaan adalah istilah sederhana yang berarti pemrograman FP lebih mudah dipelihara karena Anda tidak perlu khawatir akan mengubah apa pun di luar fungsi yang diberikan secara tidak sengaja.

Fungsi kelas satu

'Fungsi kelas satu' adalah definisi yang dikaitkan dengan entitas bahasa pemrograman yang tidak memiliki batasan dalam penggunaannya. Oleh karena itu, fungsi kelas satu dapat muncul di mana saja dalam program.

Penutupan

Penutupan adalah fungsi dalam yang dapat mengakses variabel fungsi induk, bahkan setelah fungsi induk dijalankan.

Fungsi tingkat tinggi

Fungsi tingkat tinggi akan mengambil fungsi lain sebagai argumen atau mengembalikannya sebagai hasil.

Fungsi tingkat tinggi memungkinkan aplikasi parsial atau kari. Teknik ini menerapkan fungsi pada argumennya satu per satu, karena 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 bertindak berdasarkan parameternya. Tidak efisien jika tidak mengembalikan apa pun. Selain itu, ia menawarkan keluaran yang sama untuk parameter tertentu

Contoh:

Function Pure(a,b)
{
	return a+b;
}

Fungsi tidak murni

Fungsi yang tidak murni merupakan kebalikan dari yang murni. Mereka memiliki masukan atau keluaran yang tersembunyi; itu disebut tidak murni. Fungsi yang 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

Status bersama adalah konsep penting dalam pemrograman OOP. Pada dasarnya, ini menambahkan properti ke objek. Misalnya, jika HardDisk adalah Objek, 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 bahasa pemrograman FP apa pun adalah meminimalkan efek samping, dengan memisahkannya dari kode perangkat lunak lainnya. Dalam pemrograman FP Sangat penting untuk menghilangkan efek samping dari logika pemrograman Anda yang lain.

Manfaat pemrograman fungsional

  • Memungkinkan Anda menghindari masalah dan kesalahan yang membingungkan dalam kode
  • Lebih mudah untuk menguji dan menjalankan pengujian Unit dan men-debug Kode FP.
  • 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 memang tidak mudah, sehingga sulit dipahami oleh pemula
  • Sulit untuk mempertahankan karena banyak objek berevolusi selama pengkodean
  • Membutuhkan banyak pengaturan lingkungan yang mengejek dan ekstensif
  • Penggunaan kembali sangat rumit dan memerlukan pemfaktoran ulang secara terus-menerus
  • Objek mungkin tidak mewakili 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.
Fokusnya adalah: “Apa yang Anda lakukan. dalam program tersebut.” Fokusnya adalah pada “Bagaimana Anda melakukan pemrograman Anda.”
Mendukung Pemrograman Paralel. Tidak ada dukungan untuk Pemrograman Paralel.
Fungsinya tidak memiliki efek samping. Metode ini dapat menghasilkan 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 “Abstraksi atas Data” dan “Abstraksi atas Perilaku.” Hanya mendukung "Abstraksi atas Data".

Kesimpulan

  • Pemrograman fungsional atau FP adalah cara berpikir tentang konstruksi perangkat lunak berdasarkan beberapa prinsip dasar yang menentukan
  • Konsep pemrograman fungsional berfokus pada hasil, bukan proses
  • Tujuan dari setiap bahasa FP adalah untuk meniru fungsi matematika
  • Beberapa bahasa pemrograman Fungsional yang paling menonjol: 1) Haskell 2) SM 3) Clojure 4) Scala 5) Erlang 6) Clean
  • 'Fungsi murni' adalah fungsi yang masukannya dinyatakan sebagai masukan dan tidak ada satupun yang harus disembunyikan. Outputnya juga dinyatakan sebagai output.
  • Data yang Tidak Dapat Diubah berarti Anda dapat dengan mudah membuat struktur data daripada memodifikasi struktur data yang sudah ada
  • Memungkinkan Anda menghindari masalah dan kesalahan yang membingungkan dalam kode
  • Kode fungsional memang tidak mudah, sehingga sulit dipahami oleh pemula
  • FP menggunakan data yang tidak dapat diubah sedangkan OOP menggunakan data yang dapat diubah

Buletin Harian Guru99

Awali hari Anda dengan berita AI terbaru dan terpenting yang disampaikan saat ini.