Ancak, son zamanlarda yazılım dünyası fonksiyonel programlama gibi diğer paradigmalar lehine hareket ediyor gibi görünüyor.
Bu tartışmalıdır. İlk olarak, OOP ve fonksiyonel programlamanın yanı sıra geniş bir şekilde tartışılan başka paradigmalar görmüyorum, bu yüzden "gibi diğer paradigmalar" ifadesini unutabiliriz, FP hakkında konuşalım, başka bir şey yok.
İşlevsel programlamanın son yıllarda bu kadar popüler olmasının nedenleri, buradaki diğer sorularda derinlemesine tartışıldı, bunu tekrar etmeyeceğim ( örneğin buraya veya buraya bakın ). Ancak, bence bu "OOP büyük bir hataydı" ya da "İşlevsel ve OOP birbirini dışlayan" değil, daha çok araç kutularını genişleten ve her iki dünyanın en iyisini elde etmeye çalışan insanlar gibi değil. Tamam, kesinlikle bir diğerini tercih eden hardliner uzmanları var, ancak bu adamları her iki tarafta da bulacaksınız.
Beni enkapsülasyon ve diğer OOP ilkeleri hakkında düşündürüyor? Yanlış mı?
Kapsüllemenin birçok farklı lezzeti vardır. Fonksiyonel programlama dilleri ve dil yapıları, nesne yönelimli diğerleri gibi belirli kapsülleme formları sağlar. Fonksiyonel araçlarla kapsülleme örnekleri arıyorsanız, kapaklarla başlayın .
"Diğer ilkeler" ile ilgili olarak: hayır, yanlış değiller, ancak yüksek ölçekli paralelleştirme gibi belirli senaryolar için, işlevsel yaklaşımlar muhtemelen daha iyi ölçeklenir. İyi tasarlanmış UI çerçeveleri oluşturmak gibi diğer senaryolar için, OOP yaklaşımları muhtemelen daha iyi ölçeğe sahiptir (YMMV, sadece daha iyi bir örneğim yok). Dahası, çoğu gerçek dünya senaryosu için, belirli bir sistemin ne kadar iyi ölçekleneceği favori programlama paradigmasıyla ekibin bilgi ve deneyimine bağlı olduğundan eminim.
OOP yanlış uygulanmış mı? Örneğin Alan Kay, OOPSLA'97 Açılış Konuşmasında şunları söyledi: "Nesne yönelimli terimini icat ettim ve aklımda C ++ bulunmadığımı söyleyebilirim."
Şüphesiz OOP çoğu insan tarafından yanlış uygulanır, ancak eminim FP için de geçerlidir. Ve John Mc Carthy (Lisp tasarımcısı) fonksiyonel programlama hakkında düşünürken Javascript gibi bir şey olsaydı şaşıracaktım (bana merhamet et, bu karşılaştırma için beni çok fazla alevlendirme ;-)
Joe Armstrong - "Nesneler bölünmez birimlerde fonksiyonları ve veri yapılarını birbirine bağlar. Bence bu fonksiyonlar ve veri yapıları tamamen farklı dünyalara ait olduğu için temel bir hatadır."
Sanırım Erlang'ın mucidinin bazı iyi argümanları var, ama aynı zamanda kendi bakış açısına sahip, bu yüzden ona fikrini vermesine ve kendi fikrini oluşturmasına izin ver. Bu konuda farklı bir fikri olan birçok uzman var.