Her zaman C'nin popülerliğini evrensel bir meclis diline duyulan ihtiyaçtan dolayı suçlama eğilimindeydim. Makine düzeyinde özgüllük, standardizasyon ve olağanüstü taşınabilirlik kombinasyonunun C'nin fiili evrensel bir montaj dili olarak işlev görmesine izin verdiğini ve bu nedenle rolünün süresiz olarak devam edeceğinden şüpheliyim.
OOP programlama kurslarında iyi bir programlama için mümkün olan tek son nokta olan bir tür "final model" olarak sunulduğunda her zaman biraz şaşırdığımı belirtmeliyim. Programlamanın diğer birçok yönü gibi, OOP'un değeri, insan beyninin bilgiyi nasıl organize ettiği, toplumsal grupların uzun vadede nasıl yazılımı desteklediğini ve nesne yönelimli programlama durumunda, bazı oldukça derin yönleri içeren bir çok rekabet faktörü arasında bir uzlaşmadır. Evrenin kendisinin nasıl çalıştığını.
Ve bu son nokta biraz kırmaya değer. Belirli programlama stillerinin neden var olduğu, birlikte nasıl çalıştıkları ve gelecekte bu tür kavramlar üzerinde genişledikçe dünyanın neresinde olabileceği konusunda fizik düzeyinde bir keşifle ilgileniyorsanız daha fazla bilgi edinin ...
Fizikteki bir nesne, zaman içinde tanınabilir tutarlılığı koruyan bir şeydir. Bu da, kendimiz gibi basit yaratıkların, hayatta kalmamızı çok fazla tehlikeye düşürmeden, yalnızca az sayıda bit kullanarak nesneyi temsil etmekten kurtulmalarına izin veriyor. Ancak, büyük ölçüde fizik açısından, bu tür basitleştirmeyi kolaylaştırmak ve yaygınlaştırmak için tam olarak doğru yapmanız gereken şeylerin sayısı oldukça fazladır. İnsanlar olarak bunların hepsini düşünmüyoruz çünkü açıkçası, doğru olmasaydı burada olmazdık.
Ses çok soyut? Gerçekten değil. Örneğin, arabaların yerine hızlıca salınan plazma alanlarını ve muazzam bir hız aralığında hareket eden maddenin anlık yoğunlaşmalarını karşılaştıysanız, arkadaşınızın evine giden yolda ilerlemeye çalıştığınızı hayal edin. Böyle bir senaryo, sosyalleşme fırsatlarını derinden kesebilir, tamam mı? Biz, nesneleri ihtiyacımız olan nesneleri ve nesne varlığı etrafımızdaki çevre basitleştirilmesi muazzam ve kritik öneme düzeyde bize sağlar.
Öyleyse bunların hepsini yazılıma geri çekelim. Gerçek dünyadaki nesneler programlama açısından nesneler hakkında ne söyler?
Eh, birincisi, yazılımdaki "iyi" bir nesneyi tanımlayan şeyin, elinizde tuttuğunuz veri türünün zaman içinde tanınabilir kalıcılık fikrini destekleyip desteklememesi gerektiği anlamına gelir .
Tanımla, OOP'nin en kolay biçimlerinin tanınması kolaydır. Onlar sadece zaten "ekli" olan ya da bir kişi, ev ya da araba gibi gerçek dünyadaki gerçek fiziksel nesneler tarafından tanımlanan verileri kullanarak biraz kopyalayanlardır. Bugün bile, bu yine de insanların yazılım derslerinde aldığı nesnelerin tek tanımıdır. Bu çok kötü, çünkü önemsiz nesne yönelimli programlar bile bundan daha geniş bir tanımlamaya ihtiyaç duyuyor.
İkinci ve çok daha ilginç nesneler kategorisi ölümsüzleştirilmiş gerçek dünya olayları dediğim şeyden oluşuyor . "Ölümsüzleştirilmiş" derken , gerçek dünyada iyi tanımlanmış bir varlık ya da koleksiyon olarak en azından kısaca varolan, ancak daha sonra fiziksel olarak anlamlı koleksiyonlar olarak var olan ve dağılan şeyleri kastediyorum . Bir sempozyum harika bir örnek: Sempozyum kısa bir süre için iyi tanımlanmış bir yer ve insan topluluğu olarak var. Ne yazık ki, en iyi konferansların bile sona ermesi ve onları oluşturan parçaların diğer faaliyetlere geçmesi gerekiyor.
Ama bilgisayarları ve ağları kullanarak, biz böyle bir geçici sempozyum yapabilirsiniz görünmek yakalayan ve bir yazılım nesnesi olarak bunun bir bellek koruyarak uzun vadeli bir nesne gibi. Bilgisayarlar ve veritabanları ile yaptığımız birçok şey, gerçek evreni, fiziksel olarak var olamayacak şekillerde yakalayarak ve genişleterek daha zengin hale getirmeye çalıştığımız geçici olayların bu şekilde ölümsüzleşmesini sağlar. Örneğin, son zamanlarda gerçek bir Pandora gördünüz mü? Gerçek dünya parçalarının bu tür yakalama ve uzantıları, kendi yaşamlarımızı, ekonomilerimizi ve seçimlerimizi olağanüstü yollarla zenginleştirmeye ve genişletmeye yardımcı olur. Bu benim için nesne yönelimli programlamanın özü, en dikkat çekici etkilerinin olduğu ve olmaya devam ettiği yer.
Nihai bir OOP kategorisi, harici olaylarla yakın bağlantısı olmayan nesnelerden oluşur, ancak bunun yerine altyapıdır.Gerçek dünyadan ölümsüzleştirilmiş nesneler kullanarak devam eden gerçeklik uzantımızı desteklememiz gerekiyordu. Burası, bilgisayarın (yarı) metaline inerek, gerçek dünyanın kimyasal elementleri gibi, yeni iç dünyalar inşa etmek için hızlı ve ilginç şekillerde birleştirilebilecek kalıcı gerçeklik parçaları yaratabileceğiniz yerdir. Mobil bilgi işlem, bu tür yüksek rekombinant yaklaşımın büyümesini desteklemeye yardımcı oldu, ki bu, bir çok açıdan fiziksel dünyanın rekombinant özelliklerini taklit ediyor. Aynı zamanda zordur: İyi bir seçim, zaman içinde beklenmedik bir şekilde kötü olan bir durum olduğunu kanıtlayabilir, çünkü genellikle onu desteklemek yerine çeşitliliği ve genişlemeyi engeller.
Bu son kategori, programlama için sadece bir model kullanmanın risklerini de işaret ediyor, çünkü gerçek dünyadaki gibi, programlanmış dünyalar da gerekmeyen işlemlere ihtiyaç duyuyornispeten değişmeyen nesnelere iyi karşılık gelir. Dünya nesnelerle doludur, ancak güneş, daha düşük enerjili dünyadaki nesneleri ve etkinlikleri "tahrik etmek" için gereken son derece dinamik enerji akışlarıyla doludur. Benzer şekilde, bilgi işlem dünyaları yaratırken akışlar ve dönüşümlerle uğraşmanız gereken durumlar vardır ve hızla değişen bağlamlar, yine de kendi içinde nesneye benzemese de, daha yüksek seviyelerde kullanılan daha basit, daha insan dostu nesnelerin elde edilmesinde kesinlikle kritiktir. . Çekirdek düzeyinde yapılan programlamanın çoğunun dikkat çekici bir şekilde nesne benzeri olmaması ya da daha çok işleme odaklı olan C gibi dillere yoğun şekilde eğilim göstermesi tesadüf değildir. Bunlar bilgisayar tarafından üretilen dünyalarda daha yüksek gördüğümüz büyüleyici çeşitliliği tamamlayan daha derin alanlardır.
OOP'nin ters gidebileceği diğer alan eski nesne kavramlarına çok fazla odaklanmaktır .
Gerçek dünyadaki nesneler ve özellikle de yaşayan nesneler, çevreleriyle karmaşık ve ince şekillerde etkileşime girme konusunda kesinlikle şaşırtıcı bir yetenek düzeyine sahiptir. Birbirine bakan, bazı uyumluluk ve akıl sağlığı kontrolleri yapan ve hatta etkileşime girmenin bazı yeni yollarını bile bulabilen birleşik aletler, gerçek dünya biyolojik nesne kavramına yakın olduğumuzda basit çerçeveler ve basit kalıtım şemaları yapıyor Odak seviyesine odaklanmak (genellikle zorunlu olarak!) Bu, siber dünyadaki nesneler için büyüme alanlarından biridir, daha "ajan benzeri", çevreye reaktivitenin programlama dahilinde bile norm olduğu yaklaşımlara yaklaşır.
Ve OOP benim "eleştirisi" için çok fazla! Yine de, umarım, daha zengin bir siber dünya yaratmanın neden sadece bir tane gerekli olduğunu varsaymak yerine, programlama stillerinin çeşitliliğini kapsayan anlamına geldiğine işaret etmişimdir . Benim düşüncem, gerçekten ilginç olan şeylerin henüz gelmediği, şu anda ne yaptığımızın ne kadar fazla olduğu önemli değil!