Bilmek istediğin her şeye ulaş

Neden fonksiyonel programlama, nesneye yönelik programlamadan daha üstündür?

Kimseler cevap vermedi ama ben cevabımı buldum. Merak edenler için, bu benim "Kartaca" staj sorumdu ve şaşırtma içerikliydi. Sorunun cevabı;

Hiçbir zaman fonksiyonel programlama ile nesne yönelimli programlama adına üstünlük gibi bir şeyden söz edemeyiz. İkisi apayrı, iki farklı dünya. Biri makinelerin dünyası (Java, C altında assembly …), diğeri matematiğin, kümelerin, monad, monoidlerin dünyası. Şöyle ki üstünlük; tamamen programa, probleme, platforma, çözümün maliyetine göre değişen bir şeydir. Bu şartlar göz önüne alınarak, nesne yönelimli programlamanın fonksiyonel programlamadan, fonksiyonel programlamanın nesne yönelimli programlamadan üstün veya iyi olmayan yönleri vardır. Mesela fonksiyonel programlamada; paralelleştirmeler yapılabiliyor, çok çekirdekli makinelerle performans açısından etkili olabiliyor, matematiksel işlemleri çok daha hızlı yapabiliyor. Örneğimizi daha da açarsak;

Fonksiyonel programlamada, 5! = 1*2*3*4*5 = 120 işlemini hesaplattıktan sonra 6!’ i hesaplatmak isterseniz, otomatikman hafızsındaki 5! değeri ile 6’yı çarparak size sunabilir. Yani 6! = 6*5! Şeklinde hesaplar-ki bu yüzden muazzam bir hızı vardır. (ÖNEMLİ NOT : Bu ayrıcalık her fonksiyonel programlama dilinde olmayabilir. Haskell programlama dilinde bulunan bir özelliktir. Yalnızca bir örnek olsun diye verilmiştir.)

Nesne yönelimli programlamanın bir kısım avantajları ise; öğrenme süresi orta seviyede olduğu için karmaşık işler için kolay kavranabilir, tüm programlamacıları aynı yapıda programlamaya sevk eder. Birden çok programlamacının çalıştığı projeleri kolaylaştırır. Daha çok kod yazma ihtiyacına karşılık karmaşık olan bir kodu düzenli gösterir. İnsanın düşünme yapısına uygundur, gibi onlarca örnekler verebiliriz.

Özet olarak, bu iki programlama dilini “hangisi daha iyidir” diyerek karşılaştırmak, tabiri yerinde ise elma ile armut un “hangisi daha iyi meyvedir” diyerek karşılaştırmak gibidir. Programa, maliyete, probleme vs. gibi durumlar göz önünde bulundurularak ikisinin de artı veya eksi yönleri vardır. Nesne yönelimli programlama kimi durumlarda iyi ve fonksiyonel programlama kötüyken, kimi durumlarda ise bunun tam tersi yani fonksiyonel programlama nesne yönelimli programlamadan iyidir.
  • Paylaş
Ben de fonksiyonel programlamanın nesneye olan üstünlüğünü de nereden çıkardın diyecektim ki kendin cevabını okudum :) Fonksiyonel programlama ihtiyacı karşılasaydı nesneye yönelik programlama hiç doğmazdı. Oturup baştan C'yi düzenleyerek C++'ı ortaya çıkarmazlardı.
  • Paylaş
Sonraki Soru
HESAP OLUŞTUR