Bilgisayar ve Teknoloji

Nesne Yönelimli Tasarım Programlama – Kültürümüzü Nasıl Nesnelleştiriyoruz

Ne başlığı. Bu teknik bir makale mi, değil mi?
Bu, kültüre, psikolojiye ve bunların teknoloji üzerindeki etkilerine bir bakış. Bu konu daha önce tartışıldıysa, bu yazıyı yazarken dikkatimi çeken yazıların hiçbirinde yoktu.
Yazılım geliştirmede nesne yönelimli tasarım kolaylık, problem çözücü, çok çeşitli uygulamaları mümkün ve pratik hale getiren bir nimet olmuştur. Ama fikir gerçekten nereden geliyor? “Bjorn Stroustrup”a cevap vermeyin; o sadece bir kristalleşme noktasıydı. O olmasaydı, bir başkası eninde sonunda çözerdi – bence bu yöne eğilmek bizim doğamızda var.
Mevcut (bu yazının yazıldığı sırada) kültürümüze ve ondan öncekilere bakın. Her şeyi nesneleştirme eğilimimiz var. Bu, kadınların erkeklerin kendilerini nesneleştirdiğinden şikayet etmesi gibi bazı alanlarda bir endişe kaynağıdır. Ancak bu eğilim, cinsiyetten bağımsız olarak insanlarda mevcuttur; fikirleri bir şekilde beynimiz için daha anlaşılır kılan bir kolaylıktır. Fiziksel temelimiz hayvandır. Biyolojik evrimi bir gerçek olarak kabul edersek, soyut terimlerle düşünme yeteneğimizin nispeten yeni olduğunu varsayıyoruz. Zekamızın çoğunu içeren ön beyin mükemmel bir araçtır, ancak beynimizin hayvan kısmı fizyolojimize daha yakından entegre edilmiştir ve birincil referans çerçevemiz olarak evrendeki fiziksel nesneleri açıklamaya ve girişimlerimizi açıklamaya uyarlanmıştır. Bu yapıda varsayılan olarak dünyamızı anlamlandırıyoruz.
Atalarımız doğanın güçlerini, aklın, kalbin ve karakterin niteliklerini düşündüler ve onları tanrıların veya tanrıların panteonları olarak kişileştirdiler. Kişileştirme bir tür nesneleştirmedir, çünkü yaşayan sağlam bir insan bir fikirden daha somuttur. Kadim mitlerimiz gök gürültüsü ve şimşek (Zeus, Jüpiter, Thor), ölüm (Hades, Pluto, Hela, Azrail), kurnazlık ve yaramazlık (Loki), hız (Hermes, Merkür, Caber) gibi tezahürlerle doludur. , avcılık (Artemis, Diana, Seth), aşk (Afrodit, Venüs), zeka (Athena), evlilik (Frigga), zenginlik ve doğurganlık (Kötülüğün Efendisi, Noel Hayaleti, Noel Baba, Ganesha), mutluluk (Pan, Mavi Kuş mutluluğu) ve diğerleri.
Bir yana: gerçeklik nedir? “Gerçek” kelimesi, “şey” veya “gerçek” anlamına gelen Latince “res” kökünden gelir. Kelime, tıpkı “oksidasyon” ve “köktencilik” gibi orijinal anlamından saptırılmıştır. Oksidasyon, ilk önce oksijen elementini içeren gözlemlenen, enerjiyi boşaltmanın kimyasal bir işlemidir; hidrojenin klor içinde yanması gibi benzer süreçler gözlemlendiğinde, reaksiyona oksijen dahil olmasa bile “oksidasyon” terimi korunmuştur. Fundamentalizm, bir Hıristiyan mezhebinin adını taşıyan ilkelere katı ve katı bir bağlılıktır; Müslümanlar ve diğer dinlerinkiler arasında benzer bir kemer sıkma gözlemlendiğinde, Hıristiyanlıkla ilgisiz olmasına rağmen “köktendinci” terimi tutuldu. Aynı şekilde, gerçek olan, gözlemcinin algılarından bağımsız olarak var olan ve genellikle somut bir fiziksel nesne iken, bir fikir, zihinsel bir görüntü veya bir rüya gerçek dışı, bir yanılsama olarak kabul edilir. Ancak bazı metafizik eğilimli bilim adamları, filozoflar ve maneviyatçılar, bir fikrin veya zihinsel görüntünün, bir nesnenin kaba fiziksel tezahüründen daha gerçek olduğuna inanırlar, bu icat, bir görüntünün daha ince, daha saf bir bilinç düzeyinde var olduğu fikriyle başlar. gerçekliktir ve bu nedenle fiziksel bir nesneden daha gerçektir. Hangi? Az önce burada ne oldu? Eğer “gerçeklik” “şey” anlamına geliyorsa ve bir şey büyük bir fiziksel nesne ise, o zaman bir görüntü veya fikir gibi kaba olmayan, süptil veya inceltilmiş bir şey nasıl olur da kaba bir fiziksel nesneden “maddi” olabilir???
Belki de dili kullanımımızda kesin olmak gerekirse, fikrin fiziksel ifadeden daha “doğru” olduğunu söylemeli ve klasik gerçekliğe (nesnenin katı bir nesne olduğu) atıfta bulunmak için giderek daha popüler olan “klasik” sıfatını kabul etmeliyiz. klasik oksidasyon ( oksijen elementini içeren enerji deşarjı), klasik köktencilik (Hıristiyan yasasına sıkı sıkıya bağlılık), klasik Coca-Cola (orijinal tarif) ve klasik liberal (serbest piyasa ve laissez faire dahil).
Konuya geri dönelim: anlambilimimizin, özellikle dilde nesneleştirme eğilimimizden nasıl etkilendiğine bakın. Fiiller eylem kelimeleridir; isimler, genellikle maddi şeyler olarak düşünebileceğimiz şeyleri veya nesneleri ifade eden kelimelerdir. “Eylem” bir isimdir! Nesneleştirme eğilimimiz içimize o kadar yerleşmiştir ki, fiilden isme, eylemden sözde şeye geçiş uzun bir sıçrama değildir. Sadece her şeyi (isim, durum, soyutlama) tanımlama girişimlerim (isim, bir fiilden türetilmiştir) şeyleri (isim) etiketleme eğiliminde (isim, eylemle ilgili, aynı zamanda bir isim) çıkmaza girdi! Bir eylemi (isim) bir şey (maddi nesne) olarak adlandıracak kadar ileri gittik!
Şu anda arkadaşlarımdan biri muhtemelen “Wilfred, dur. Dur. Boş ver. Rahatla. Bir içki al” derdi.
Devam edebilirdim (“Hayır!” diyecektir), ama fikrimi belirttim. Maddi nesneler yaratarak dünyamızı anlamlandırmaya (isim) o kadar derinden dahiliz ki, Stroustrup olsun ya da olmasın nesne yönelimli yazılım tasarımı gibi bir şey kaçınılmazdı, benim gibi eski bekçi programcılar için açık olmasa bile. .
Yazılım mimarisi, bilgisayar biliminin en ileri noktası ve bilgisayar için talimatları soyutlayan, talimatları basitleştirerek yüksek düzeyde makinenin sınırlamalarından arınmış olan disiplin olarak kabul edilir. Bu mimarinin araçları olarak yazılım nesnelerinin, gerçeklikle baş edebilmek için nesnelere ihtiyaç duyan hayvan parçamız için bir tür taviz olması gerçeğinde garip bir ironi var. (Modern zamanların en büyük teknolojik gelişmelerinden biri olarak kabul edilen roketlerin, mızrak ve ok gibi ilkel mermileri çok anımsatması da paralel bir ironidir!)
Zeyilname: Nesneleştirme hakkındaki makalenin bir kopyasını (yukarıdaki gibi) anonim kalmak isteyen bir akıl hocasına gönderdim. Cevabı:
“İlginç bir bakış açısı…
“OO bir kavram olarak kesinlikle Bay Stroustrup’tan önce gelir. Bu kavramın, türümüzün bir şeyleri “nesneleştirmeye” yönelik doğuştan gelen herhangi bir eğilimden evrimleştiğinden şüpheliyim – “nesne yönelimli”deki “nesne” terimi, yazılım geliştiricilerin işleri farklı şekilde yapmalarını sağlamak için mecazi bir “kanca” olarak kullanıldı. kodun nasıl düzenlenmesi gerektiği hakkında. OO dillerinden önce, “bir şey yapan”, kalıcı duruma sahip OLMAYAN (ve hala olmayan) yöntemlerimiz (işlevler, alt rutinler, makrolar – terimlerinizi seçin) vardı – yani önceki yürütmelerde yaptıklarına dair hiçbir hafızaları yoktu ve bu çok gerçek bir sorun yarattı.Yöntemlerin etki ettiği veriler yönteme iletilmeliydi ve sonuçlar iletildi – durum (“bellek”), herhangi bir gelecek için “askıda kalması” gereken herhangi bir değerin sağlanmasıyla elde edildi. referanslar, etkin olan veya çağrı yığınında kalan yöntemin içindeki değerlerden biri olarak mevcuttu (ve böylece çağrı yığını kaldırıldığında gelecekte bir noktada aktif hale gelecek). Çağrı yığınında bir değerin yokluğunda, değeri “hatırlamanın” tek yolu, onu diske yazmak (ki bu hala çok yavaştı) veya kalıcı depolama için bir bellek alanı tahsis etmekti (Fortran’ın ORTAK’ı gibi). bloklar) (kalıcılık/durum sorununu çözer, ancak değerleri çok erişilebilir ve dolayısıyla yanlışlıkla yanlış kullanıma karşı çok savunmasız bırakır). SO – OO’dan önce, değer kalıcılığı ve görünürlük konusunda endişelenerek çok zaman harcamak zorunda olduğumuz bir dil ortamımız vardı ve kullanmamız gereken dil mekanizmaları nispeten basit ve tamamen güvensizdi.
“OO, geliştiricileri yöntemlerin ve verilerin birbiriyle ilişkili olarak nasıl düzenlendiğini yeniden düşünmeye zorlama girişimiydi – OOP’yi OO öncesi dillerden farklı kılan gerçekten de bu. ANCAK bu tek fark her türlü faydayı sağlar.. “Nesneler” yaratmak, “sebat”/durum sorununu oldukça güzel ve zarif bir şekilde çözer; nesne içindeki değerlerin doğrudan dış etkilerden korunmasını/korunmasını da sağlar; aynı zamanda belirli bir değeri gerçekten işleyen kodu bulmayı çok daha kolaylaştırır (tek bir mutator yöntemi bulmak, Fortran veya COBOL gibi bir dilde bir değişkene yapılan tüm referansları bulmaktan ve sonra bu referansın temsil edip etmediğini bulmaktan çok daha kolaydır). değiştirilmesi gereken mantık ) iş kurallarındaki değişiklikleri yansıtacak şekilde kodu güncellemek için liste uzayıp gidiyor.
“Nesne yönelimli” deki “nesne”, düşünen herhangi bir kişinin anlayabileceği bilişsel bir kavramdı ve öyle kalıyor: gerçek dünyadaki bir nesnenin bir durumu (onu tanımlayan ve belirli tanımlanmış kurallara göre değişen değerler) ve davranışı vardır. (eylemler) . neredeyse herkes, nesne yönelimli programlama evreninde, kodumuzu “şeylerin” değerlerini ve eylemlerini tanımlayan birimler halinde tanımladığımız temel fikrini kavrayabilir (Java’da “birim” = sınıf, “değerler” = nitelikler). ve “eylemler” = yöntemler).

Mentorum probleme pratik mühendislik perspektifinden bakıyor ve ben psikolojik bir perspektiften. Bilgisayar bilimcilerinin sadece “daha iyi bir fare kapanı yapıyor” olması ve yanlışlıkla bir nesnenin şeklini alması mümkündür. Psikoloji diplomasına sahip olduğum halde, hala insanların doğal olarak nesnelere yönelme eğiliminde olduklarına inanma eğilimindeyim.

Paylaş:

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: