Saya benar-benar kesulitan memahami perbedaan antara paradigma pemrograman prosedural dan fungsional .
Berikut adalah dua paragraf pertama dari entri Wikipedia tentang pemrograman fungsional :
Dalam ilmu komputer, pemrograman fungsional adalah paradigma pemrograman yang memperlakukan komputasi sebagai evaluasi fungsi matematika dan menghindari status dan data yang dapat berubah. Ini menekankan penerapan fungsi, berbeda dengan gaya pemrograman imperatif, yang menekankan perubahan status. Pemrograman fungsional berakar pada kalkulus lambda, sistem formal yang dikembangkan pada tahun 1930-an untuk menyelidiki definisi fungsi, aplikasi fungsi, dan rekursi. Banyak bahasa pemrograman fungsional dapat dilihat sebagai elaborasi pada kalkulus lambda.
Dalam praktiknya, perbedaan antara fungsi matematika dan pengertian "fungsi" yang digunakan dalam pemrograman imperatif adalah bahwa fungsi imperatif dapat memiliki efek samping, mengubah nilai status program. Karena itu, mereka kekurangan transparansi referensial, yaitu ekspresi bahasa yang sama dapat menghasilkan nilai yang berbeda pada waktu yang berbeda tergantung pada status program pelaksana. Sebaliknya, dalam kode fungsional, nilai keluaran suatu fungsi hanya bergantung pada argumen yang dimasukkan ke fungsi tersebut, jadi memanggil fungsi
f
dua kali dengan nilai yang sama untuk sebuah argumenx
akan menghasilkan hasil yang sama.f(x)
kedua waktu. Menghilangkan efek samping dapat membuat lebih mudah untuk memahami dan memprediksi perilaku suatu program, yang merupakan salah satu motivasi utama untuk pengembangan pemrograman fungsional.
Di paragraf 2 di mana dikatakan
Sebaliknya, dalam kode fungsional, nilai keluaran suatu fungsi hanya bergantung pada argumen yang dimasukkan ke fungsi, jadi memanggil fungsi
f
dua kali dengan nilai yang sama untuk sebuah argumenx
akan menghasilkan hasil yang sama dif(x)
kedua waktu.
Bukankah itu kasus yang sama persis untuk pemrograman prosedural?
Apa yang harus dicari dalam prosedural vs fungsional yang menonjol?