Pemrograman Fungsional - Pendahuluan
Bahasa pemrograman fungsional dirancang khusus untuk menangani komputasi simbolik dan aplikasi pemrosesan daftar. Pemrograman fungsional didasarkan pada fungsi matematika. Beberapa bahasa pemrograman fungsional yang populer antara lain: Lisp, Python, Erlang, Haskell, Clojure, dll.
Bahasa pemrograman fungsional dikategorikan menjadi dua kelompok, yaitu -
Pure Functional Languages- Jenis bahasa fungsional ini hanya mendukung paradigma fungsional. Misalnya - Haskell.
Impure Functional Languages- Jenis bahasa fungsional ini mendukung paradigma fungsional dan gaya pemrograman imperatif. Misalnya - LISP.
Pemrograman Fungsional - Karakteristik
Karakteristik yang paling menonjol dari pemrograman fungsional adalah sebagai berikut -
Bahasa pemrograman fungsional dirancang berdasarkan konsep fungsi matematika yang menggunakan ekspresi kondisional dan rekursi untuk melakukan komputasi.
Mendukung pemrograman fungsional higher-order functions dan lazy evaluation fitur.
Bahasa pemrograman fungsional tidak mendukung Kontrol aliran seperti pernyataan loop dan pernyataan bersyarat seperti Pernyataan If-Else dan Switch. Mereka secara langsung menggunakan fungsi dan panggilan fungsional.
Seperti OOP, bahasa pemrograman fungsional mendukung konsep populer seperti Abstraksi, Enkapsulasi, Warisan, dan Polimorfisme.
Pemrograman Fungsional - Keuntungan
Pemrograman fungsional menawarkan keuntungan berikut -
Bugs-Free Code - Pemrograman fungsional tidak mendukung state, jadi tidak ada hasil efek samping dan kami dapat menulis kode bebas kesalahan.
Efficient Parallel Programming- Bahasa pemrograman fungsional TIDAK memiliki status yang dapat diubah, jadi tidak ada masalah perubahan status. Seseorang dapat memprogram "Fungsi" untuk bekerja secara paralel sebagai "instruksi". Kode tersebut mendukung penggunaan kembali dan kemudahan pengujian yang mudah.
Efficiency- Program fungsional terdiri dari unit independen yang dapat berjalan secara bersamaan. Hasilnya, program semacam itu lebih efisien.
Supports Nested Functions - Pemrograman fungsional mendukung Fungsi Nested.
Lazy Evaluation - Pemrograman fungsional mendukung Konstruksi Fungsional Malas seperti Daftar Malas, Peta Malas, dll.
Sebagai sisi negatifnya, pemrograman fungsional membutuhkan ruang memori yang besar. Karena tidak memiliki status, Anda perlu membuat objek baru setiap kali melakukan tindakan.
Pemrograman Fungsional digunakan dalam situasi di mana kita harus melakukan banyak operasi yang berbeda pada kumpulan data yang sama.
Lisp digunakan untuk aplikasi kecerdasan buatan seperti Pembelajaran mesin, pemrosesan bahasa, Pemodelan ucapan dan penglihatan, dll.
Penerjemah Lisp yang disematkan menambahkan kemampuan program ke beberapa sistem seperti Emacs.
Pemrograman Fungsional vs. Pemrograman Berorientasi Objek
Tabel berikut menyoroti perbedaan utama antara pemrograman fungsional dan pemrograman berorientasi objek -
Pemrograman Fungsional | OOP |
---|---|
Menggunakan data yang tidak dapat diubah. | Menggunakan data yang dapat berubah. |
Mengikuti Model Pemrograman Deklaratif. | Mengikuti Model Pemrograman Imperatif. |
Fokus pada: "Apa yang Anda lakukan" | Fokus pada "Bagaimana kabar Anda" |
Mendukung Pemrograman Paralel | Tidak cocok untuk Pemrograman Paralel |
Fungsinya tidak memiliki efek samping | Metodenya dapat menghasilkan efek samping yang serius. |
Kontrol Aliran dilakukan menggunakan panggilan fungsi & panggilan fungsi dengan rekursi | Kontrol aliran dilakukan dengan menggunakan loop dan pernyataan bersyarat. |
Ini menggunakan konsep "Rekursi" untuk mengulang Data Pengumpulan. | Ini menggunakan konsep "Loop" untuk mengulang Data Pengumpulan. Misalnya: Untuk setiap loop di Java |
Urutan eksekusi pernyataan tidak begitu penting. | Urutan eksekusi pernyataan sangat penting. |
Mendukung "Abstraksi atas Data" dan "Abstraksi atas Perilaku". | Hanya mendukung "Abstraksi atas Data". |
Efisiensi Kode Program
Efisiensi kode pemrograman berbanding lurus dengan efisiensi algoritmik dan kecepatan eksekusi. Efisiensi yang baik memastikan kinerja yang lebih tinggi.
Faktor-faktor yang mempengaruhi efisiensi program meliputi -
- Kecepatan mesin
- Kecepatan penyusun
- Sistem operasi
- Memilih bahasa Pemrograman yang tepat
- Cara data dalam suatu program diatur
- Algoritma digunakan untuk menyelesaikan masalah
Efisiensi bahasa pemrograman dapat ditingkatkan dengan melakukan tugas-tugas berikut -
Dengan menghapus kode yang tidak perlu atau kode yang masuk ke pemrosesan yang berlebihan.
Dengan memanfaatkan memori optimal dan penyimpanan nonvolatile
Dengan memanfaatkan komponen yang dapat digunakan kembali jika memungkinkan.
Dengan memanfaatkan kesalahan & pengecualian penanganan di semua lapisan program.
Dengan membuat kode pemrograman yang menjamin integritas dan konsistensi data.
Dengan mengembangkan kode program yang sesuai dengan alur dan logika desain.
Kode pemrograman yang efisien dapat mengurangi konsumsi sumber daya dan waktu penyelesaian sebanyak mungkin dengan risiko minimum terhadap lingkungan operasi.