Beyan Edici ve Zorunlu
Bir programlama paradigması bilgisayar programlama temel bir tarzıdır. Dört ana paradigma vardır: zorunlu, bildirimsel, işlevsel (bildirimsel paradigmanın bir alt kümesi olarak kabul edilir) ve nesne yönelimli.
Deklaratif programlama : bir hesaplamanın mantığını (Ne yapar) kontrol akışını (Nasıl yapılır) açıklamadan ifade eden bir programlama paradigmasıdır. Etki alanına özgü dillerin (DSL) iyi bilinen bazı örnekleri arasında CSS, normal ifadeler ve bir SQL alt kümesi (örneğin SELECT sorguları) HTML, MXML, XAML, XSLT ... gibi birçok biçimlendirme dili genellikle bildiricidir. Deklaratif programlama, bir dizi talimat olarak bir program ile istenen cevap hakkında bir iddia olarak bir program arasındaki ayrımı bulanıklaştırmaya çalışır.
Zorunlu programlama : hesaplamayı bir program durumunu değiştiren ifadeler olarak tanımlayan bir programlama paradigmasıdır. Deklaratif programlar, programlama komutları veya matematiksel iddialar olarak dually görüntülenebilir.
Fonksiyonel programlama: hesaplamayı matematiksel fonksiyonların değerlendirilmesi olarak ele alan ve durum ve değişken verileri önleyen bir programlama paradigmasıdır. Durumdaki değişiklikleri vurgulayan zorunlu programlama stilinin aksine, fonksiyonların uygulanmasını vurgular. Haskell gibi saf işlevsel bir dilde, tüm işlevlerin yan etkisi yoktur ve durum değişiklikleri yalnızca durumu dönüştüren işlevler olarak temsil edilir.
Aşağıdaki MSDN'de zorunlu programlama örneği, 1 ile 10 arasındaki sayılar arasında geçiş yapar ve çift sayılarını bulur.
var numbersOneThroughTen = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//With imperative programming, we'd step through this, and decide what we want:
var evenNumbers = new List<int>();
foreach (var number in numbersOneThroughTen)
{ if (number % 2 == 0)
{
evenNumbers.Add(number);
}
}
//The following code uses declarative programming to accomplish the same thing.
// Here, we're saying "Give us everything where it's odd"
var evenNumbers = numbersOneThroughTen.Select(number => number % 2 == 0);
Her iki örnek de aynı sonucu verir ve biri diğerinden daha iyi veya daha kötü değildir. İlk örnek daha fazla kod gerektirir, ancak kod test edilebilir ve zorunlu yaklaşım, uygulama ayrıntıları üzerinde tam kontrol sağlar. İkinci örnekte, kod tartışmasız daha okunabilir; ancak, LINQ size perde arkasında neler olduğu konusunda kontrol vermez. LINQ'nun istenen sonucu sağlayacağına güvenmelisiniz.