Üç Gelişim Paradigması: Prosedürel, Nesne Odaklı ve İşlevsel

PHP veya JavaScript’teki gelişimi bildiğinizde, programlama paradigması hakkında çok fazla düşünmeye ihtiyacınız veya düşünmek istemezsiniz. Sadece çalışacak bir şeyler almak istiyorsun. Ve bu mantıklı. Ama sonunda zaman geçtikçe merak etmeye başlıyorsunuz. İnsanları takıntılı hale getiren “oop” şey nedir? Bunu mı yapıyorum? Yapmalımıyım? Temel olarak, bu makale böyle bir yerdeki insanlar için tasarlanmıştır. Bugün amacımız, üç ana paradigmanın bu yazılımın geliştirilmesinde, birbirleriyle nasıl ilişki kurduklarını ve hangilerini ne zaman kullanmak istediğiniz açıklığa kavuşturmaktır. Popüler inançların aksine, “doğru” veya “yanlış” cevaplar yoktur.
Paradigma nedir ve tartışacağımız tüm programlama paradigmalarını belirtmeye başlamadan önce neden önemlidir, “paradigma” ile ne demek istediğimiz konusunda daha net olmak mantıklıdır. İlgili tanımları alıntılamak için, Amerikan Mirası Sözlüğü paradigmanın şunları söyledi: Özellikle bu entelektüel disiplinde, toplumun gerçekliğine bakmanın yolunu şekillendiren bir dizi varsayım, kavram, değer ve uygulamalar bizim için doğru. WordPress geliştiricileri için önemli olan üç ana programlama paradigmasını ayıran şey, bunların birisinin bilgisayarların bir şeyi yararlı hale getirmesini sağlayan programları anlayabileceği ve oluşturabileceği bir dizi varsayım ve lens olmasıdır.
Bilgisayarın yapabileceği yararlı bir şey, WordPress’in yaptığı gibi bir web sayfası oluşturmaktır. Ve dahili olarak, WordPress gerçekten ne yaptığını yaratmak için tartışacağımız üç paradigmadan ikisini kullanıyor. (Prosedür ve nesne yönelimli, bu yüzden asmanıza izin verilmez.) Paradigma önemlidir, çünkü program yazma ve onları düşünmede bazı kültürlerle birlikte seyahat ederler. Bazı çevrelerde ve koşullarda birbirleriyle alay eden nesne yönelimli programcılar ve işlevsel programcılara sahip çok gerçek bir aşiretçilik var. Temel olarak, bu paradigmayı iyi anlamak, kodunuzu yazmak daha rahat olmanızı sağlar.
İlk albüm CSS grubu Rock Brezilya. (Asla dinlemedim.)

WordPress için önemli olan ilginç bir paradigma, bildirici programlamadır. Bildirici programlamada, olması veya olması gereken şeyleri belirlersiniz, ancak herhangi bir kontrol akışı yazmazsınız. Anlamı: Nasıl ama sadece ne olduğunu söylemiyorsun. Bu şeylerin sınıflandırılması çok bulanıklaşsa ve insanlar terimler hakkında tartışıyor olsa da, hem HTML hem de CSS bildirimsel programlama örnekleridir. Dünyanın nasıl olması gerektiğini belirtmeyi amaçlayan bir “program” yapıyorsunuz, ancak tanımladığınız dünyanın orada olması gerektiği hakkında hiçbir şey yok. Temel olarak, bu kısım web tarayıcısı üreticisi tarafından yapılan bir programlama sitesidir.
Dolayısıyla, bildirici programlama WordPress ve Web için bir bütün olarak önemlidir. Ancak bu aynı zamanda PHP ve JavaScript gibi dillerde yaptığınız mantıksal kontrol akışının eksikliğidir. (Bu, CSS’nin karmaşık olmadığı anlamına gelmez, genellikle zor buluyorum.) Ama bu paradigmanın çok farklı olması, bildirim programlama hakkında daha fazla şey söylemeyeceğimizdir. Prosedürel programlama nedir? İşlevin S’nin PHP’de kullanılmasının en yaygın yollarından biri, aslında her çağrıldığında aynı mekanik prosedürleri tekrarlayan bir tür saklı prosedürdür. Bu, son tartışacağımız “fonksiyonel programlama” değildir. Yeni bir geliştirici tarafından incelenmesi muhtemel ilk programlama paradigması prosedürel veya zorunlu programlamadır. Eğer kararlıysanız, her ikisi de farklıdır. Benim için oldukça yakınlar, bu yüzden önemli değil. Temel olarak prosedürel veya zorunlu kod, bilgisayara mantıklı adımlarda istediğiniz görevi nasıl tamamlayacağını doğrudan öğreten bir şeydir. Dünyanın durumunu ilan etmek yerine (CSS gibi bildirici şeylerden bahsettiğimiz gibi), bunu bisiklete binerek, ona ekleyerek ve sonuçları buraya koymanız gerektiğini tanımlayacaksınız.
Çoğu WordPress temel olarak prosedüreldir, bu durumda (örneğin, tema şablonu dosyası), birlikte web sayfalarının oluşturulmasını tamamlayan çok gerçek olan PHP ve WordPress işlevlerinin doğrudan bir koleksiyonudur. Bu prosedürel tarzın büyük bir avantajı vardır, çünkü birçok alternatiften çok daha kafa karıştırıcı değildir ve çoğu yeni geliştirici için birçok farklı karmaşık kavramla daha az mideler vardır. İnsanları (ben dahil) karıştıran yaygın (ve anlaşılabilir) bir şey, işlevlerin kullanımının prosedürel programlama yapmadığınız anlamına gelmemesidir. İşlevin S’nin PHP’de kullanılmasının en yaygın yollarından biri, aslında her çağrıldığında aynı mekanik prosedürleri tekrarlayan bir tür saklı prosedürdür. Bu, en son tartışacağımız “fonksiyonel programlama” değildir. İnsanların prosedürel programlama hakkında prosedürel programlamaya en büyük darbe hakkında söyledikleri olumsuz şey, en eski programlama yollarından biri olmasıdır. Sonuç olarak, güncel olmayan olarak alay edildi ve genellikle çok havalı değildi. Ama bu oldukça yumuşak bir şikayet. İyi olduğunu düşündüğüm daha somut bir şikayet:
Ana program hakkında net bir şekilde düşünmek genellikle zordur. İşlevle adlandırma prosedürü, makineye benzeyen prosedürel kodun doğasını basitleştirmeye yardımcı olabilir, ancak temel olarak insan düşüncesi ve bilgisayarın yolu çok benzer değildir, bu nedenle makineye çok benzeyen kod genellikle insanları karıştırır. .
Soyutlama yok. İyi bir program basit şeyleri daha karmaşık bir temel gerçeklikten soyutlar. Makine verimliliği yerine insan anlayışını tercih ederler. Performans nedenleriyle buna sahip olamayacağınız zamanlar vardır ve bu durumda prosedürel kod daha hızlı ve bu nedenle daha iyi olabilir. Prosedürel programlama hakkında iyi, bazı çok iyi şeyler de prosedürel programlamadan geliyor. İlk ve en önemlisi çok soyut değildir, bu da yeni gelenlere gerçekten yardımcı olabilir. Nesneleri anlamak genellikle yeni gelenler için bazı işlevlerden daha karmaşık hissettirir.
Prosedür programları da çoğu alternatiften daha hızlı olabilir. Bu özellikle tarihsel olarak doğrudur. İşlemi yapmak için en verimli makine tarafından “empati kurduğunuz için” prosedürden maksimum performansı kolayca alırsınız. Bunu 500 yerine bir çağrıda yapabiliyorsanız, prosedürel kod yazdığınızda, genellikle bunu fark edersiniz ve yaparsınız. Nesne yönelimli programlama nedir? Biz insanlar olarak nesneleri düşünmeye alışkınız. Temel olarak, prosedürel ve nesne yönelimli programlar arasındaki fark, nesne yönelimli kodun (OO) bir varlığa sahip olmasıdır. Bir sistemde “gizli tutulabilen”, “okunan”, “silinmiş”, “gönderilen”, “tasarlanmış” vb.
Prosedür paradigmasında, mesaj değişkenlerini create_draft_message ($ mesaj) veya delete_message ($ id) vb. Gibi farklı işlevler arasında yaymak zorunda kalırsınız. Tüm bunlar uygulanabilir, ancak daha uzun süre çalıştığınızda, belirli bir prosedürün mesajın kendisini ve sayısal vs sayısal Vs.’yi gerektirip gerektirmediğini unutmaya başlarsınız. Bu nedenle, prosedürünüzü sürekli olarak incelemeniz gerekir. Nesne odaklı bir programda, genellikle mesaj sınıfının bir türevi olan bir $ mesaj nesneniz vardır. Bu nesnenin, $ Message-> Was_Read gibi herkese açık olarak okunabilen özelliği ve Message-> Destroy () gibi eylemlere sahiptir. Bu çok yararlı, çünkü biz insanlar olarak nesneleri düşünmeye alışkınız. Dünya kaosundan ortaya çıktığı ve dünyayı anlamamızı kolaylaştırdığı fikrini anlıyoruz. Ancak, “sandalye” ile kastedilen şey budur.
Nesne yönelimli nesne yönelimli sistemler hakkında kötü olan yalandır. OOP ile ilgili en güçlü şikayet, nesnenin yalan söylemesidir. Temel olarak, makine nesneler açısından anlamıyor veya düşünmüyor, bu nedenle insanların kavramsal olarak mantıklı olan nesnelerle yaptıkları bazı şeyler makinede çok kötü performans. Bunun nedeni, perde arkasında, nesne üzerindeki eylem sıfırdan 4000 veritabanı sorgusu yapabilmesidir. Ancak kapsülleme (dünyaya nasıl çalıştığını açıklamadığından) bir nesne olduğu için, arayan performans maliyetini bilmeyebilir ve cehaletleri nedeniyle ciddi cezalarla karşılaşabilir.
OOP hakkında bazen beni hayal kırıklığına uğratan başka bir şey, genellikle kötü bir şekilde yapılmasıdır.OOP, 20 yıldan fazla bir süredir programlamada baskın bir paradigma haline geldi ve bu, çok farklı bir pratik modelin ortaya çıktığı ve hepsinin aynı kamptan geldiği anlamına geliyor.Bu OOP konseptiyle ilgili bir sorun değildir, ancak sonunda pratikte zorlaşır çünkü nesne yönelimli paradigmada birçok kötü program yapılır.Nesne yönelimli programlarla ilgili en iyi şeyin nesne yönelimli sistemi hakkında harika olan şey, biz insanların nesneleri düşünmeye çok alışık olmamızdır.İyi bir nesne yönelimli sistemin yalnızca en iyi prosedür kodunun bile bunu yapamayacağı şekilde anlaşıldığı için çok alışkınız.$ mesaj->
Sendto ($ kullanıcı) herhangi bir prosedürel alternatiften çok daha basittir. Bu nedenle, okumak çok iyi olabilir. Bu aynı zamanda, iyi bir nesne yönelimli sistemde, bileşenlerin izole edilmesi ve tüm önemli davranışlarını özetlemesi ve işbirlikçilere zorunlu olmayan davranışlarını geciktirmesiyle de yardımcı olur. Uygulamada, aslında çoğu OO kodu tarafından karşılanmayan birçok ön koşul sundum. Ama bu olduğunda çok iyiydi. Harika bir OO sisteminde, bir mesaj doğru gönderilmediğinde, mesaj sınıfına bakarak başlamanız gerektiğini bilirsiniz. Bir db.php dosyası değil, bir mesaj sınıfı. Bu güçlü. (Sonunda başka bir katmanda kusurlar bulabilirsiniz, bu doğrudur …) Nesne yönelimli programlama, bazı önemli WordPress API’sının merkezidir, belki de en önemli WP_Query. Nesneye yönelik programlamanın temellerine kapsamlı bir giriş ve temel bilgilerin pratikte WP_Query’ye nasıl uygulandığına dair yönergeler istiyorsanız, bu konu hakkında kursuna bakın: wp_query ile çalışmak Fonksiyonel programlama nedir? Bu paradigma, yukarıdaki “prosedürel” bölümde bahsettiğim matematiksel anlamda işlevler için adlandırılmıştır, sadece bir işleve sahip olmak, programı “işlevsel programlama” yapan şey değildir. Çünkü bu paradigma matematiksel anlamda işlev denir. Matematiksel işlev, Cebir’den hatırlarsanız, bu sadece bağımsız bir dünya hakkında bir gerçeğin ifadesidir ve diğer işlevlerle kullanılabilir ve manipüle edilebilir. Bir programın “işlevsel” olması gerekir.
Bu şekilde çok az “fonksiyonel” PHP kodu. Ama bazıları olabilir. Ve WordPress’te görebileceğiniz en makul yer, uzun bir gönderi listesi filtrelemek veya oluşturmak istediğiniz zamandır. Bu nedenle, konuyla ilgili daha uzun bir makale yazdım: WordPress Geliştiricileri için Fonksiyonel PHP’ye Yumuşak Giriş: Dizi göndermesinde filtreler ve haritalar kullanma temel olarak, PHP’nin bir işlevi ve tüm öğelerini array_map ve array_filter gibi çeşitli işlevleri vardır. Dizi onun tarafından değiştirilir. WordPress’te bazen add_ace ve add_filter işlevine devam edebilirsiniz. Bu durumda işlevsel programlama gibi ne yaptığınızı varsayabilirsiniz. Ancak WordPress kancasını gerçekten işlev görmeyen en büyük şey durumla ilgilidir. Çoğu WordPress eyleminde (ve daha düşük bir seviyede, filtreniz) bir şeyi değiştirmek için işlevinizin dışındaki dünyaya ulaşır – veritabanı değerini kontrol edin, sayfalara bazı çıkışlar ekleyin, vb. – çünkü özellikle birçok şeyi değiştirmek için bağlı olduğunuz için. İşlevinizin vatansız olduğu söylenemez (veya giriş dışında hiçbir etkisi yoktur). Bu nedenle, en saf anlayışta gerçekten fonksiyonel programlama yapmıyorsunuz. Fonksiyonel programlama konusunda kötü olan nedir?

Fonksiyonel programcılar tarafından sıklıkla gerçekleştirilen tüm karmaşık işlemler benim için oldukça soyut ve bunalmış hissediyorum. Bence fonksiyonel programlamayı kötü hale getiren en önemli şey, yakında sorunlarla karşılaşmanızdır, çünkü matematik veya bilgisayar bilimleri veya bazı mantık disiplinlerinde doktora dereceniz yoktur. İşlevsel olmayan programcılar için fonksiyonel programlama (FP) hakkında oldukça iyi bir anlayışa sahibim. Ancak, fonksiyonel programlama hakkında konuşurken birçok insanın ne hakkında konuştuğunu anlamaya başlayamadığım bazı önemli anahtar kelimeler var. “İşlev”, “monoid” vb. Başınızı sarmak nesnelerden çok daha zordur. Başka bir kayıp, işlevlere işlevlere işlev girerek birçok şey yapmanızdır. Ve tıpkı bir bilgisayar olmadığım gibi, aynı zamanda matematikçi değilim. Bu nedenle, fonksiyonel programcılar tarafından sıklıkla gerçekleştirilen tüm karmaşık işlemler benim için oldukça soyut ve bunalmış hissediyorum. Bunun benim için diğer paradigmalar için geçerli olduğunu biliyorum ve bu sadece daha büyük bir öğrenme eğrisi, ama elbette hiçbir şey hızla göz ardı edilemez. Fonksiyonel programlama konusunda olumlu olan nedir? Saf, matematiksel işlevlerin anlaşılması sihir yapanlardan daha kolaydır. Fonksiyonel programlama için en büyük fayda, durum hakkında disiplinliyseniz, çok daha iyi bir zamanınız olacak. Dış dünyadaki değişiklikler daha da teşvik edildiğinden, bir paradigma kullanırken, “bu duruma nasıl bağlı olabilir?”
Saf, matematiksel işlevlerin anlaşılması sihir yapanlardan daha kolaydır. Bu, devletin büyük bir avantaj disiplinli, ülkenin düşünmesini ve anlamasını kolaylaştırıyor. Ayrıca başka bir avantajı da vardır: büyük paralelleştirme mümkündür. Anlamı, bilgisayarların daha hızlı bir işlemciden daha fazla çekirdeğe ulaşmasıdır, programınız daha iyi kullanabilir. Bazı programlar şu anda bu özelliği kullanıyor, ancak bu paradigma için büyük bir fayda. Bu üç paradigma neden önemlidir Umudum, bugün eve üç önemli nokta getirmiştim: Üç paradigma – işlevsel, oop ve prosedürel – WordPress geliştiricileri için iyi ve kullanışlı

Üç paradigmanın güçlü ve zayıf yönleri var
Üç paradigma, WordPress için PHP ve JavaScript yazarken kullanılabilir.
Mükemmel bir programlama paradigması yoktur. Ve yeni WordPress programcılarının herkes konuşmanın nesnesi gibi göründüğünde prosedürel kodlar yazmaktan utanmaları için kolay, genel ve anlaşılabilir. Ancak, iyi nesnelerden düşünmenin faydalarını düşünmeden aceleyle yapılan bir eklenti yerine iyi yapılmış bir prosedür eklentisi kullanacağım. Kargo tarafından yönetilen OOP, herhangi bir zamanda iyi bir prosedürel koddan daha kötüdür. Temel olarak, kod yazmada daha iyi olmanın en iyi yolu çeşitli şeyleri denemektir. Bir eklenti iki şekilde yazın ve ne istediğinizi bulun. Görüş ucuzdur ve alternatif değişimlerin takdir edilmediğini anlar. Umarım ilk birkaçını sağlayarak sonunu yapmanıza yardımcı oldum. Mutlu Hacking! Kredi görüntüsü: Tiagonicastro, bfionline

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir