Deneyime dayalı bir örnek vereyim. Günden güne kullandığım çoğu kütüphane OOP'u bir şekilde kullanıyor. OOP birçok alan için gereken karmaşıklığı gizleyebilir, performansa gerçekten yardımcı olan bir mekanizma değildir. Olabilecek olan, bir kütüphanenin nesne hiyerarşisine dayalı belirli optimizasyonları kullanabilmesidir, ancak çoğunlukla karmaşıklığı kullanıcıdan gizlemekle ilgilidir. Tasarım Desenlerine bakın, bu karmaşıklık gizlemesini gerçekleştirmek için sıklıkla kullanılan mekanizmalardır.
Örnek olarak PETSc'yi ele alalım. PETSc, algoritmalarının herhangi birinin belirli bir nesnedeki kullanılabilir rutinlere baktığı ve rutini gerçekleştirmek için yürütülecek bir seçtiği bir OOP denetçisi / yürütücü modeli kullanır. Bu, kullanıcının endişeleri ayırmasına izin verir, örneğin matris eylemi, herhangi bir tür engellenmiş veya optimize edilmiş rutin içerebilir ve çok sayıda yinelemeli çözücü tarafından etkili bir şekilde kullanılabilir. Kullanıcıya kendi veri türlerini ve değerlendirmelerini belirleme yeteneği vererek, birkaç önemli rutin hızlanır ve ayrıca tüm kütüphanenin işlevselliği hala kullanılabilir olur.
Vereceğim diğer bir örnek ise FEniCS ve deal.II. Bu kütüphanelerin her ikisi de çok sayıda Sonlu Eleman Yöntemi üzerinde genelleme yapmak için OOP kullanır. Her iki elemanda da eleman türü, eleman sırası, kareleme gösterimi vb. Birbirinin yerine kullanılabilir. Bu iki kitaplık da bazı özel amaçlı yapılandırılmış FEM kodlarından "daha yavaş" olmakla birlikte, kullanıcı tarafından bilinmeyen FEM karmaşıklığının çoğuyla çok çeşitli sorunları çözebilirler.
Son örneğim Elemental. Elemental, MPI iletişimcilerini ve veri konumunu yönetme zorluğunu çok basit bir dil yapısına kavuşturan yeni yoğun bir lineer cebir kütüphanesidir. Sonuç olarak, bir FLAME seri kodunuz varsa, veri türlerini değiştirerek Elemental aracılığıyla paralel bir kodunuz olabilir. Daha da ilginç olanı, başka birine eşit dağıtımı ayarlayarak veri dağıtımı ile oynayabilirsiniz.
OOP, elle haddelenmiş montajla rekabet etmek için bir paradigma değil, karmaşıklığı yönetmenin bir yolu olarak düşünülmelidir. Ayrıca kötü bir şekilde yapılması çok fazla ek yüke neden olacaktır, bu nedenle zamanlamayı ve kullandıkları mekanizmaları güncellemeyi sürdürmelidir.