Hari ini kita akan menyentuh pemrograman fungsional. Lebih khusus lagi, kita akan melihat perbedaan antara pemrograman deklaratif dan imperatif.

Pertama, mari kita bahas persyaratannya dengan cepat. Kemudian kita akan membandingkan gaya pemrograman ini dan melihat tampilannya di Java dan apakah bahasa tersebut mendukung koeksistensi bahagia mereka.

Pemrograman fungsional adalah paradigma di mana fungsi dipahami sebagai fungsi matematika, bukan sebagai subrutin, seperti dalam pemrograman prosedural . Artinya, dalam kedua paradigma ini mengartikan kata “fungsi” secara berbeda. Ingat ini dan jangan membingungkan mereka. Java tidak membuat Anda bingung, karena subprogram disebut sebagai "metode", sedangkan fungsi merujuk ke fungsi matematika (juga: fungsi lambda atau referensi metode).

Dalam prakteknya, dalam pemrograman prosedural, fungsi tidak hanya bergantung pada variabel input, tetapi juga pada faktor eksternal (seperti variabel lain di luar fungsi atau keadaan sistem). Itu berarti memanggil fungsi yang sama dengan argumen yang sama tetapi dalam konteks yang berbeda dapat menghasilkan hasil yang berbeda. Dalam pemrograman fungsional, ketika sebuah fungsi dipanggil dengan argumen yang sama, hasilnya selalu sama, karena fungsi hanya bergantung pada input data.

Pro pemrograman fungsional

  • Keandalan kode yang ditingkatkan
  • Pengujian unit yang mudah
  • Peluang untuk pengoptimalan kode selama kompilasi
  • Peluang untuk konkurensi

Kontra pemrograman fungsional

Kerugian pemrograman fungsional berasal dari semua fitur yang sama ini:

  • Tidak ada pernyataan penugasan. Sebagai gantinya, nilai baru disimpan dalam variabel baru, yang mengarah pada kebutuhan untuk terus mengalokasikan dan melepaskan memori secara otomatis. Akibatnya, pengumpulan sampah yang sangat efisien merupakan bagian penting dari setiap sistem yang menjalankan program fungsional.

  • Evaluasi non-ketat berarti urutan pemanggilan fungsi tidak dapat diprediksi, yang menimbulkan masalah I/O ketika urutan operasi penting.

Itu menyimpulkan ulasan singkat kami tentang pemrograman fungsional. Sekarang mari beralih ke gaya pemrograman.

Pemrograman imperatif adalah paradigma pemrograman yang ditandai dengan fitur-fitur berikut:

  • Kode sumber program terdiri dari instruksi (pernyataan).

  • Instruksi harus diikuti secara berurutan.

  • Data yang dihasilkan dengan menjalankan instruksi sebelumnya dapat dibaca dari memori dengan instruksi selanjutnya.

  • Data yang diperoleh dengan mengeksekusi instruksi dapat ditulis ke memori.

Berikut adalah fitur utama dari bahasa imperatif:

  • Penggunaan variabel boolean.
  • Penggunaan operator penugasan.
  • Penggunaan ekspresi majemuk.
  • Penggunaan subrutin.

Program imperatif seperti perintah yang diekspresikan dalam suasana imperatif dalam bahasa alami. Dengan kata lain, program imperatif adalah urutan perintah.

Bahasa pemrograman imperatif meliputi C dan C++.

Pemrograman deklaratif adalah paradigma pemrograman di mana solusi untuk suatu masalah ditentukan. Artinya, hasil akhir yang dijelaskan, bukan cara mencapainya. HTML adalah contoh bahasa deklaratif. Saat menulis tag dalam bahasa ini, kami tidak memikirkan bagaimana elemen akan digambar di halaman. Kami hanya menjelaskan seperti apa halaman itu seharusnya.

Bahasa pemrograman deklaratif lainnya adalah SQL.

Mari bandingkan dua gaya pemrograman dengan mempertimbangkan contoh kehidupan nyata: bagaimana kita menjelaskan kepada seseorang cara menuju ke tempat tertentu?

Bayangkan situasi ini: seorang pria mendatangi kami di jalan dan bertanya, "Bagaimana saya bisa sampai ke museum?"

Dengan pendekatan imperatif, kami akan memberinya algoritme tentang cara menuju ke sana dengan berjalan kaki:

  • berbalik di sini
  • berjalan 2 blok dalam garis lurus
  • belok ke kanan

Dengan pendekatan deklaratif, kami hanya akan memberikan alamatnya, dan kemudian orang tersebut akan sampai ke tempat yang tepat sendiri.

Java saat ini merupakan bahasa pemrograman multi-paradigma . Multiparadigma berarti bahwa bahasa mendukung beberapa paradigma.

Selama evolusinya yang panjang, bahasa ini telah memperluas model berorientasi objeknya sehingga penggunanya memiliki alat yang berbeda dan dapat memilih yang terbaik untuk tugas khusus mereka.

Hasilnya, Java saat ini mendukung pendekatan imperatif (seperti menulis kode untuk pemanggilan metode) dan pendekatan deklaratif (seperti anotasi yang tersedia saat runtime).

Mari kita rangkum:

  • Ada berbagai paradigma pemrograman.

  • Ada pendekatan deklaratif dan imperatif.

  • Anda harus memilih salah satu yang paling cocok untuk tugas yang ada.

  • Java adalah bahasa multi-paradigma yang mendukung kedua pendekatan tersebut.