Çünkü tüm bu avantajlar dezavantajlardır.
Vatansız programlar; Yan efektleri olmayan
Gerçek dünyadaki programlar tamamen yan etkiler ve mutasyonla ilgilidir. Kullanıcı bir düğmeye bastığında bunun nedeni bir şey olmasını istiyor. Bir şey yazdıklarında, bu durumun eskiden var olan herhangi bir durumun yerini almasını isterler. Muhasebede Jane Smith evlendiğinde ve adını Jane Jones olarak değiştirdiğinde, maaşını basan iş sürecini destekleyen veritabanı, bu tür bir mutasyonu ele almakla ilgili daha iyi olurdu. Makineli tüfeği uzaylıya ateşlediğinizde, çoğu insan zihinsel olarak bunu daha az isabet puanına sahip yeni bir uzaylı yapımı olarak modellemez; bunu mevcut bir uzaylı mülkünün mutasyonu olarak modelliyorlar.
Programlama dili kavramları temel olarak modellenen alana karşı çalıştığında, o dili kullanmayı haklı çıkarmak zordur.
Eşzamanlılık; Yükselen çok çekirdekli teknoloji ile son derece iyi çalışır
Sorun çözüldü. Değişmez veri yapıları ile, muhtemelen eski verilerle çalışmanın pahasına, ucuz iplik güvenliği elde edersiniz. Değişken veri yapıları ile verileri tutarlı tutmak için karmaşık mantık yazmak zorunda kalmadan daima taze veriler üzerinde çalışmanın avantajına sahip olursunuz. Bunlardan birinin açıkça diğerinden daha iyi olduğu gibi değil.
Programlar genellikle daha kısadır ve bazı durumlarda okunması daha kolaydır
Okumak daha uzun ve zor olduğu durumlar hariç. İşlevsel bir tarzda yazılmış programların nasıl okunacağını öğrenmek zor bir beceridir; insanlar programların bir dizi hesaplama yerine bir reçete gibi izlenecek bir dizi adım olarak tasarlanmasında çok daha iyi görünüyorlar.
Verimlilik artar (örnek: Erlang)
İşlevsel bir tarzda nasıl programlanacağını bilen programcıların işe alınmasının büyük masrafını haklı çıkarmak için verimlilik çok artar.
Ve unutmayın, bir çalışma sistemini atmak istemezsiniz; çoğu programcı yeni sistemleri sıfırdan inşa etmiyor, aksine çoğu işlevsel olmayan dillerde inşa edilmiş mevcut sistemleri sürdürüyor. Bunu hissedarlara haklı göstermeye çalıştığınızı düşünün. Milyonlarca dolar karşılığında yeni bir tane oluşturmak için neden mevcut çalışma bordro sisteminizi kazıyordunuz? "Çünkü fonksiyonel programlama harika" hissedarları memnun etmek olası değildir.
Zorunlu programlama çok eski bir paradigmadır (bildiğim kadarıyla) ve muhtemelen 21. yüzyıl için uygun değildir
Fonksiyonel programlama da çok eskidir. Kavramın yaşının ne kadar alakalı olduğunu görmüyorum.
Beni yanlış anlamayın. Fonksiyonel programlamayı seviyorum, bu ekibe katıldım çünkü fonksiyonel programlamadan kavramları C # 'a getirmek istedim ve bence değişmez bir tarzda programlamanın geleceğin yolu olduğunu düşünüyorum. Ancak, işlevsel bir tarzda programlamanın, sadece arzu edilemeyecek kadar büyük maliyetleri vardır . Daha işlevsel bir tarza geçiş, on yıllar boyunca yavaş ve kademeli olarak gerçekleşecektir. Ve işte bu olacak: Haskell'in saflığının ve güzelliğinin toptanlığını ve C ++ 'ın terk edilmesini değil, daha işlevsel bir stile doğru bir geçiş.
Yaşamak için derleyiciler inşa ediyorum ve kesinlikle yeni nesil derleyici araçları için fonksiyonel bir stili kucaklıyoruz. Çünkü fonksiyonel programlama temelde karşılaştığımız problemler için iyi bir eşleşme. Sorunlarımız tamamen ham bilgileri - dizeleri ve meta verileri - almak ve bunları farklı dizelere ve meta verilere dönüştürmektir. Mutasyonların meydana geldiği durumlarda, örneğin IDE'ye yazdığı gibi, problem alanı doğal olarak kendisini sadece ağacın değişen bölümlerini artımlı olarak yeniden inşa etmek gibi fonksiyonel tekniklere borçludur. Birçok alan, işlevsel bir stile açıkça uygun hale getiren bu güzel özelliklere sahip değildir .