Bildirimsel ve yordamsal programlama paradigmaları arasındaki fark nedir ? Lütfen birkaç örnek verebilir misiniz?
Başka hangi programlama paradigmaları var?
Yanıtlar:
Prosedürel veya nesne yönelimli programlama paradigmaları gibi, zorunlu programlama paradigmasının birkaç alt paradigması vardır.
Zorunlu programlama paradigmasında, algoritmayı çeşitli soyutlama derecelerinde adım adım tanımlarsınız.
Prosedür paradigmasını destekleyen programlama dillerine örnekler:
Tipik olarak, hem yöntemleri hem de durumu temel türlerden türetilmiş türlere devralan, ancak aynı zamanda olağandışı prototip tabanlı JavaScript'i de içeren bir tür hiyerarşisi sergileyen dilleri ifade eder .
OO paradigmasını destekleyen programlama dillerine örnekler:
İşlevsel veya mantıksal programlama paradigmaları gibi bildirimsel programlama paradigmasının birkaç alt paradigması vardır.
Bildirime dayalı programlama paradigmasında, bir sonucu veya hedefi tanımlarsınız ve bunu bir " kara kutu " aracılığıyla elde edersiniz . Zorunluluğun tersi .
Bildirim temelli programlama paradigmasını destekleyen programlama dillerine örnekler:
Fonksiyonel programlama, yan etkiler olmadan ve değişken durum olmadan fonksiyonların uygulanmasını vurgular. Yukarıdaki bildirimsel sistemler, işlevsel programlamanın belirli yönlerini sergiler.
Bildirimsel işlevsel paradigmayı destekleyen programlama dillerine örnekler:
Bildirimsel programlama, nasıl yapılacağını söylemek zorunda kalmadan ne istediğinizi söylediğiniz yerdir. Prosedürel programlamada, sonucu elde etmek için kesin adımlar belirlemeniz gerekir.
Örneğin, sorgular sonucu üretecek adımları belirtmediğinden, SQL prosedürelden daha açıklayıcıdır.
Size gerçek dünyadan bir örnek vereyim: Bir fincan çaya ihtiyacım var.
Prosedürel:
Bildirge:
Prosedürel bir dilde, tüm süreci tanımlar ve bunun nasıl yapılacağı adımlarını sağlarsınız. Siz sadece sipariş verirsiniz ve sürecin nasıl sunulacağını tanımlarsınız.
Bildirime dayalı bir dilde, sadece komutu veya sırayı ayarlarsınız ve bu siparişin nasıl tamamlanacağının sistemde olmasına izin verirsiniz. Nasıl yapılması gerektiğini araştırmadan sonucunuza ihtiyacınız var.
Prosedürel Programlama:
Prosedürel programlamada, program başladığında, bir dizi talimatı izler. Talimatlar bazı dosya veya bellek içeriğine bağlı olarak değişebilir, ancak genel olarak büyük ölçüde değişmez. programın girdisi tipik olarak gerçek zamanlı kullanıcı girdisinden değil, önceden toplanmış bir veri kümesinden gelir.
Bildirime Dayalı Programlama:
Bildirimli Olay güdümlü programlama, programın gerçekleştirebileceği isteğe bağlı eylemlerle bir veri gövdesi etrafında merkezileştirilir. Örneğin, bir kelime işlemcideki her "olay", verileri, belgeleri etkileyen herhangi bir fare veya klavye (veya dosya) değişiklikleridir. Herhangi bir sırayla gerçekleştirilmeleri gerekmez. Olay güdümlü programlama, tümü ortak bir veri kümesi üzerinde çalışan küçük programlar (olay işleyicileri) biçimini alır, böylece her küçük program bu örnekteki belge olan aynı verileri kullanabilir.
İki programlama dili arasındaki temel fark şudur: Prosedürel programlamada, bilgisayara problemin nasıl çözüleceğini söyleriz ve bildirimsel programlamada, bilgisayara hangi problemin çözülmesini istediğimizi söyleriz.
Yanıtlanabilir yorumu ele almak ve belki ikisinin farklılıkları arasında bir örnek vermek için. Ansible, kukla veya toprak formu gibi bir şeyin beyan edici olduğu prosedüreldir. Örneğin, şu şekilde 10 ec2 örneğini dağıtmak için yanıtlanabilir bir yaml dosyası oluşturursunuz:
-ec2: count: 10 image: ami-058c6e5b73b074cd2 instance_type: t2.micro
Bu dosyayı iki kez çalıştıracak olsaydınız, 20 t2.micro ec2 örnekleri elde edersiniz. Eşdeğeri terraform gibi bildirim temelli bir dilde yazarsanız ve iki kez çalıştırırsanız, kaç kez çalıştırmış olursanız olun yalnızca 10 t2.micro örneğiniz çalışır. Bildirime dayalı diller son durumu belirtir. Prosedürel diller, şimdiki veya geçmiş duruma bakılmaksızın, söylediklerinizi yerine getirir.
Yani YAML bildirimsel programlama dili mi? Çünkü gerçek mantık yazmak yerine ne istediğimizi belirliyoruz.
Bunu soruyorum çünkü, eğer biri yapılandırma yönetim aracı olan Ansible'ı biliyorsa, YAML kullanıyor ancak yine de prosedürel dil kategorisine giriyor.
Prosedürel yaklaşımda, sonuca ulaşmak için talimatınızı kodlarsınız. Bildirimsel yaklaşımda, neyin çözülmesi gerektiğini, problemi çözme bilgisi olarak tanımlarsınız. Her iki yaklaşımda da uyguladığım Prosedürel veya Bildirime dayalı yaklaşım örneğine bir göz atın .
Örnekte göreceğiniz gibi, bildirimsel yaklaşımda, sorunu çözmek için NASIL talimat vermenize gerek yoktur.