Prosedürel ve fonksiyonel programlama paradigmaları arasındaki farkı anlamakta gerçekten zorlanıyorum .
Fonksiyonel programlamayla ilgili Wikipedia girişinden ilk iki paragraf :
Bilgisayar biliminde, fonksiyonel programlama, hesaplamayı matematiksel fonksiyonların değerlendirilmesi olarak ele alan ve durum ve değişken verilerden kaçınan bir programlama paradigmasıdır. Durumdaki değişiklikleri vurgulayan zorunlu programlama stilinin aksine işlevlerin uygulanmasını vurgular. İşlevsel programlamanın kökleri, 1930'larda işlev tanımını, işlev uygulamasını ve özyinelemeyi araştırmak için geliştirilmiş biçimsel bir sistem olan lambda hesabına dayanır. Birçok işlevsel programlama dili, lambda hesabının ayrıntıları olarak görülebilir.
Pratikte, matematiksel bir fonksiyon ile zorunlu programlamada kullanılan bir "fonksiyon" kavramı arasındaki fark, zorunlu fonksiyonların program durumunun değerini değiştiren yan etkilere sahip olabilmesidir. Bu nedenle, referans şeffaflıktan yoksundurlar, yani aynı dil ifadesi, çalışan programın durumuna bağlı olarak farklı zamanlarda farklı değerlerle sonuçlanabilir. Tersine, işlevsel kodda, bir işlevin çıktı değeri yalnızca işleve girdi olan argümanlara bağlıdır, bu nedenle
f
bir bağımsız değişken için aynı değerle bir işlevi iki kez çağırmakx
aynı sonucu verecektir.f(x)
her iki seferde de. Yan etkilerin ortadan kaldırılması, bir programın davranışını anlamayı ve tahmin etmeyi çok daha kolay hale getirebilir ki bu, işlevsel programlamanın geliştirilmesi için temel motivasyonlardan biridir.
2. paragrafta yazdığı yerde
Bunun tersine, işlevsel kodda, bir işlevin çıktı değeri yalnızca işleve girdi olan argümanlara bağlıdır, bu nedenle
f
bir bağımsız değişken için aynı değere sahip bir işlevi iki kez çağırmak, her iki durumdax
da aynı sonucu üretecektirf(x)
.
Prosedürel programlama için aynı durum aynı değil mi?
Prosedürel ve işlevsel arasında öne çıkan ne aranmalı?