İşlevsel programlama, bildirimsel bir paradigmadır. FP'li güçlerden biri, yan etkilerin önlenmesidir. Bazı problemler için FP'nin uygun olmadığı söylenir.
Hangi yaygın problemler için, işlevsel programlama uygun değildir?
İşlevsel programlama, bildirimsel bir paradigmadır. FP'li güçlerden biri, yan etkilerin önlenmesidir. Bazı problemler için FP'nin uygun olmadığı söylenir.
Hangi yaygın problemler için, işlevsel programlama uygun değildir?
Yanıtlar:
Doğada çok durumlu olan uygulamalar. Video oyunları güzel bir örnek çünkü gerçek dünyayı modelliyorlar. Her şey değiştiğinde önceki durumdan yeniden inşa etmek yerine, dünyadaki durumu değiştirmeyi düşünmek çok daha mantıklıdır.
Somut bir örnek, vurulduktan sonra canavarın sağlığını değiştiriyor olabilir. Sağlığını değiştirmek, şimdi daha az sağlık durumu dışında, her şekilde aynı olan tamamen yeni bir canavarla değiştirmekten çok daha mantıklı. Bu tür değişiklikler, bir oyun dünyasındaki hemen hemen her şeyi oluşturur ve bunu tamamen işlevsel bir şekilde yapmak pek sezgisel değildir. En azından tamamen işlevsel bir dilde yapıyorsanız, bazı önemli performans cezaları olabileceğini hayal ediyorum.
(Not olarak, oyunlardaki bazı problemler AI gibi fonksiyonel programlamaya çok uygundur. Hibrit bir işlevsel / zorunlu dil bu durumlar için mükemmel bir seçimdir.)
Gerçek zamanlı gömülü programlama tamamen yan etkilerle ilgilidir. Dijital ve analog, zamanlayıcılar, seri ve paralel portlarla etkileşime giren, ilginç olan her şey yan etkileri olan fonksiyonlar çağırılarak yapılır.
GUI programlamanın işlevsel programlama için uygun olmadığını savunuyorum. GUI'ler genellikle çok durumludur ve yan etkisiz kullanmak yerine durumlarını kullanarak modellemesi / yönetimi çok daha kolaydır. GUI'ler için işlevsel bir programlama dili kullanmak kesinlikle mümkündür ... ama muhtemelen iyi bir fikir değildir.
Başka bir cevap belirtildiği gibi, oyunlar durumunu takip ederek yönetmek için genellikle daha kolaydır, ve sen ise edebilir işlevsel bir dilde bir oyun yazmak, ( "duruma özel" dilinde bunu genellikle daha kolaydır ve daha verimlidir yani bir nesne yönelimli dil).
Veri odaklı iş uygulamaları. Kullanıcı arayüzü ve basit veri işlemlerinde FP gerekmez.
filter
, reduce
ve map
. Bazı atmak sort
, partition
, groupBy
. Sonuçta, bu tür uygulamaları yazmak için en çok kullanılan programlama dili Excel olduğunu ise fonksiyonel bir dil.
İşlevsel programlama için uygun olmayan herhangi bir problemi kendi başınıza kolayca kaldıramazsınız.
Bunların çoğu, işlevsel programlama için kullanılan gerçek dile ve özelliklerine bağlıdır.
Bir örnek, gerçek zamanlı gömülü sistemler için daha önce bahsedilen Erlang'dır.
Devlet doluluk da işlevsel programlamaya karşı iyi bir kriter değil, fonksiyonel programlama dillerinde bununla başa çıkmanın birkaç başarılı yolu var.
Fonksiyonel programlamaya karşı yan etkiler de sıklıkla dile getirilir. Tamamen solististik olmayan her programın yan etkileri vardır. Bu yüzden her gerçek dünya FP dili, bununla başa çıkmanın bir yolunu buluyor, bu sadece dünya yan etkilerini ne kadar zarif bir şekilde ele alacağımızla ilgili bir konu.
Genel değişkenler gibi rastgele yan etkilere gerek yoktur.
Ancak, işlevsel programlamaya girmeyi kolaylaştıran sorun kümeleri vardır, çünkü soruna tanıdık bakma şeklinizi değiştirmezler. Ancak işlevsel düşünmeyi başardığınızda, daha fazla sorun kümesi daha az yan etkilere açıktır.
C programlanırken bile, küresel değişkenler gibi isteğe bağlı yan etkileri mümkün olduğunca azaltmak her zaman iyi bir fikirdir.