En boy yönelimli programlama hakkında birçok kez duydum, çoğunlukla programlamadaki "yeni nesil" teknoloji ve OOP'u 'öldürecek'.
Doğru mu? OOP ölecek mi yoksa bunun nedeni ne olabilir?
En boy yönelimli programlama hakkında birçok kez duydum, çoğunlukla programlamadaki "yeni nesil" teknoloji ve OOP'u 'öldürecek'.
Doğru mu? OOP ölecek mi yoksa bunun nedeni ne olabilir?
Yanıtlar:
Birisi size bir yazılım teknolojisinin diğerini öldüreceğini veya tüm pazara / kullanıma / kitleye hükmedeceğini söylediğinde şunu unutmayın:
Aklı başında (dinamik ama istikrarlı) bir ekosistem, çok çeşitli türlerden oluşur.
Bu, yeni bir hiper teknolojinin yutturmaca eğrisinden geçeceği ve sonunda bunun zaman ve deneyim yoluyla belirli amaçlarını bulacağı anlamına gelir .

Bu aynı zamanda, yönelimli programlama gibi aşırı bir kavramın, gerektiğinde, yani her zaman değil, çok sık değil, zımni maliyetlerden dolayı faydalı olduğu anlamına gelir.
Ancak, OOProgramming gibi, jenerik programlama gibi, fonksiyonel programlama gibi, prosedürel programlama gibi bir yeri var.
Gerçek hayatta daha çok kullanılan (ve tartışmalı olarak popüler olan) ve yaygın olarak kullanılan dillerin "saf" olmadığını fark ettiniz mi? Çünkü birçok paradigmaya izin vermek, zaman içinde bağlamı değiştirmeleri için onları daha esnek hale getirir ve daha fazla kullanım nişini doldurur.
OOP, AOP yüzünden ölmeyecek. AOP bir değer katıyor, ancak OOP ile mükemmel bir arada yaşıyor. Fonksiyonel programlamanın OOP'yi de öldüreceğini sanmıyorum. OOP, birçok türde etki alanı için çok iyi, onu işlevsel paradigma ile değiştirmek mantıklı olmaz.
Kısa cevap: Hayır, sanmıyorum.
Daha uzun cevap: AOP hakkında anladığım kadarıyla, bu kendi başına bir programlama paradigması değil (olduğu gibi, OOP'nin yerini almaz), daha çok ek, daha kısa yöntemler, daha basit, tek sorumluluk sınıfları yazmanıza yardımcı olan bir araç seti , ve benzeri. Ancak OOP'un yerini almaz.
(En azından kısmen) yapar şey değiştirmek veya OOP ekler aslında fonksiyonel programlama, olduğu olduğu (o örneğin, OOP ile karıştırılabilir, ancak farklı bir programlama paradigması Scala programlama dili ). Değişmez veri yapılarını ve özellikle eşzamanlılık söz konusu olduğunda OOP geliştiricilerini hayal kırıklığına uğratan her türlü fantezi özelliği tercih eder.
OOP, birçok durumda fiili yaklaşım olarak kabul edildiğinden bu günlerde daha az bahsedilmektedir. AOP, herhangi bir kitle hareketi gibi hiçbir zaman yerden inmedi.

İlk kez OOPSLA '97 Eğiticisinde otururken Yönüne Yönelik Programlama hakkında bir şeyler duyduğumu hatırlıyorum. O zamanlar OO'yu öldüreceğini söylediler. O zamandan beri OO sadece en çılgın beklentilerin ötesine geçti. AOP, bilgisayar endüstrisi üzerinde esasen hiçbir etkisi olmadan hala zar zor biliniyor. Bence cevap AOP'nin OO katili olmadığı ortada.
Mevcut bazı AOP sistemlerine bakın. Bazı biçimlerde bazı kodlar yazmanıza bağlıdırlar - örneğin, Bahar AOP yöntemlerinizi bir sınıfta tanımlamanıza bağlıdır. Windsor Kalesi, onu nesne yönelimli bir dil olan C # ile destekliyor.
Teorik olarak OOP'den yapılandırılmış programlamaya geçebilir ve yine de AOP'yi tutabilirsiniz, ancak pratikte bu zor olurdu. Bir şeyi alt sınıflara ayırmak, uygun önceki / sonraki filtreleri çağırmak için ilgili yöntemi geçersiz kılmak ve bunu bağımlılık enjeksiyonu sürecinde aktarmak kolaydır.
Kullanıcı tanımlı filtreleri çağırmak için tasarlanmış bir trambolin yöntemine yönlendirmek için statik yöntem çağrılarını yeniden yazmakla karşılaştırıldığında kanlı.
Dolayısıyla, ortak bir uygulama açısından, AOP OOP gerektirir.
OOP kesinlikle gümüş bir kurşun olmasa da, AOP için de aynı şey söylenebilir. Bileşen tabanlı tasarımı destekler, ancak daha büyük şemada bileşenleriniz yeni nesnelerdir ve bileşen arabirimleri temel olarak gerçek OOP DEĞİL olan işlemlerin bir işlem listesidir.
Daha fazla AOP ve bileşen tabanlı tasarım, kendimden daha akıllı insanların eleştirdiği bir Anemik Veri Modelini destekler.
http://martinfowler.com/bliki/AnemicDomainModel.html
(Yukarıdaki makalenin eski olduğunu, ancak şaşırtıcı derecede alakalı olduğunu biliyorum)
Sonuç olarak, AOP sistemleri burada kalacak ancak mükemmel olmaktan çok uzak. Hiçbir sistem mükemmel değildir.