2005'ten 2013'e kadar web geliştirmede zorunlu programlama stili uygulandı.
Zorunlu programlama ile, uygulamamızın tam olarak ne yapması gerektiğini listeleyen kodu adım adım yazdık.
İşlevsel programlama stili, işlevleri birleştirmenin akıllı yollarıyla soyutlama üretir.
Cevaplarda bildirimsel programlamadan bahsediliyor ve bu konuda bildirimsel programlamanın izlememiz gereken bazı kuralları listelediğini söyleyeceğim. Daha sonra başvurumuza başlangıç durumu olarak bahsettiğimiz şeyi sağlıyoruz ve bu kuralların uygulamanın nasıl davrandığını tanımlamasına izin veriyoruz.
Şimdi, bu hızlı açıklamalar muhtemelen pek bir anlam ifade etmiyor, bu yüzden zorunlu ve bildirimsel programlama arasındaki farkları bir benzetme yoluyla yürütelim.
Yazılım oluşturmadığımızı düşünün, bunun yerine yaşamak için turta pişiriyoruz. Belki de biz kötü fırıncıyız ve lezzetli bir turtayı nasıl yapmamız gerektiğini bilmiyoruz.
Patronumuz bize tarif olarak bildiğimiz yönlerin bir listesini veriyor.
Tarif bize nasıl pasta yapılacağını söyleyecektir. Bir tarif zorunlu bir tarzda yazılmıştır:
- 1 su bardağı un karıştırın
- 1 yumurta ekle
- 1 su bardağı şeker ekleyin
- Karışımı bir tavaya dökün
- Tavayı 30 dakika ve 350 derece F için fırına koyun.
Deklaratif tarif aşağıdakileri yapar:
1 su bardağı un, 1 yumurta, 1 su bardağı şeker - başlangıç durumu
kurallar
- Her şey karışıksa, tavaya yerleştirin.
- Her şey karıştırılmamışsa, kaseye yerleştirin.
- Tavada her şey varsa, fırına yerleştirin.
Dolayısıyla zorunlu yaklaşımlar adım adım yaklaşımlarla karakterize edilir. Birinci adımdan başlayıp 2. adıma geçersiniz.
Sonunda bir son ürün elde edersiniz. Bu pastayı yaparak, bu malzemeleri karıştırıp bir tavaya ve fırına koyduk ve son ürününüzü aldık.
Deklaratif bir tarifte, tariflerimizde, tarifimizi değişkenler gibi başlangıç durumunu listeleyen bir bölümle başlayarak iki ayrı parçaya ayıracağız. Yani buradaki değişkenlerimiz, içeriğimizin miktarları ve türleri.
İlk durumu veya başlangıç bileşenlerini alır ve bunlara bazı kurallar uygularız.
Bu yüzden başlangıç durumunu alıp ravent çilekli turta veya başka bir şey yemeye hazır olana kadar bu kurallardan tekrar tekrar geçiriyoruz.
Dolayısıyla, açıklayıcı bir yaklaşımda, bu kuralları nasıl doğru bir şekilde yapılandıracağımızı bilmeliyiz.
Bu nedenle, içeriklerimizi veya durumumuzu incelemek isteyebiliriz, eğer karıştırılırsa, bunları bir tavaya koyun.
Başlangıç durumumuzla, bu eşleşmiyor çünkü malzemelerimizi henüz karıştırmadık.
Kural 2, eğer karıştırmazlarsa bir kasede karıştırın diyor. Tamam evet bu kural geçerlidir.
Şimdi bizim durumumuz olarak bir kase karışık malzememiz var.
Şimdi bu yeni durumu kurallarımıza tekrar uyguluyoruz.
Kural 1, eğer malzemeler karıştırılırsa bunları bir tavaya koyun, tamam evet şimdi kural 1 geçerli, hadi yapalım.
Şimdi, malzemelerin karıştırıldığı ve bir tavada karıştırıldığı bu yeni duruma sahibiz. Kural 1 artık geçerli değil, kural 2 geçerli değil.
Kural 3, malzemelerin bir tavada olup olmadığını, fırına koyun, bu yeni durum için geçerli olan kuralın harika olduğunu söyleyelim.
Ve lezzetli bir sıcak elmalı turta ya da her neyse.
Şimdi, eğer benim gibiyseniz, neden hala zorunlu programlama yapmıyoruz diye düşünüyor olabilirsiniz. Bu mantıklı.
Basit akışlar için evet, ancak çoğu web uygulamasının zorunlu programlama tasarımı ile düzgün şekilde yakalanamayan daha karmaşık akışları vardır.
Deklaratif bir yaklaşımda, bazı başlangıç bileşenleri veya textInput=“”
tek bir değişken gibi başlangıç durumu olabilir .
Belki metin girişi boş bir dize olarak başlar.
Bu başlangıç durumunu alıp uygulamanızda tanımlanan bir dizi kurala uygularız.
Bir kullanıcı metin girerse, metin girişini güncelleyin. Nowu an için geçerli deđil.
Şablon oluşturulmuşsa widget'ı hesaplayın.
- TextInput güncellenirse, şablonu yeniden oluşturun.
Bunların hiçbiri geçerli değil, bu yüzden program sadece bir olayın gerçekleşmesini bekleyecek.
Bu nedenle, bir noktada kullanıcı metin girişini günceller ve 1 numaralı kuralı uygulayabiliriz.
Bunu şu şekilde güncelleyebiliriz: “abcd”
Bu yüzden, sadece text ve textInput güncellemelerimizi güncelledik, kural numarası 2 geçerli değil, kural numarası 3, metin girişi güncellenmişse, yeni meydana geldiğini, sonra şablonu yeniden oluşturduğunu ve sonra şablon oluşturulduğunu söyleyen kural 2'ye geri dönüyoruz , widget hesaplamak, tamam widget hesaplamak sağlar.
Genel olarak, programcılar olarak, daha bildirimsel programlama tasarımları için çabalamak istiyoruz.
Zorunluluk daha açık ve açık görünmektedir, ancak açıklayıcı bir yaklaşım daha büyük uygulamalar için çok iyi ölçeklenmektedir.