Jaka jest różnica między paradygmatem deklaratywnym a imperatywnym w programowaniu? [zamknięte]

zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it edytując ten post.

Zamknięte 3 lata temu .

Popraw to pytanie

Szukałem w Internecie definicji deklaratywnego i imperatywnego programowania, które rzuciłoby dla mnie trochę światła. Jednak język używany w niektórych zasobach to, co odkryłem, jest zniechęcające - na przykład na Wikipedii . Czy ktoś ma jakiś przykład z prawdziwego świata, który mógłby mi pokazać, który mógłby przynieść jakąś perspektywę na ten temat (może w C#)?

Author: Perry, 2009-11-23

16 answers

Świetnym przykładem programowania deklaratywnego i imperatywnego w C# jest LINQ.

Z imperatywnym programowaniem, krok po kroku mówisz kompilatorowi, co chce się wydarzyć.

Na przykład zacznijmy od tego zbioru i wybierzmy liczby nieparzyste:

List<int> collection = new List<int> { 1, 2, 3, 4, 5 };

Z imperatywnym programowaniem, przejdziemy przez to i zdecydujemy, czego chcemy:

List<int> results = new List<int>();
foreach(var num in collection)
{
    if (num % 2 != 0)
          results.Add(num);
}

Tutaj mówimy:

  1. Utwórz zbiór wyników
  2. krok przez każdy numer w kolekcja
  3. sprawdź liczbę, jeśli jest nieparzysta, dodaj ją do wyników

Za pomocądeklaratywnego programowania piszesz kod, który opisuje to, co chcesz, ale niekoniecznie jak go uzyskać (deklarujesz pożądane rezultaty, ale nie krok po kroku):

var results = collection.Where( num => num % 2 != 0);
Tutaj mówimy "daj nam wszystko tam, gdzie jest dziwnie", a nie " przejdź przez kolekcję. Zaznacz ten element, jeśli jest dziwny, dodaj go do kolekcji wyników."

W wielu przypadkach kod będzie być mieszanką obu wzorów, więc nie zawsze jest czarno-biały.

 858
Author: Reed Copsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-29 00:34:23

Programowanie deklaratywne jest wtedy, gdy mówisz czego chcesz, a język imperatywny jest wtedy, gdy mówisz Jak uzyskać to, czego chcesz.

Prosty przykład w Pythonie:

# Declarative
small_nums = [x for x in range(20) if x < 5]

# Imperative
small_nums = []
for i in range(20):
    if i < 5:
        small_nums.append(i)

Pierwszy przykład jest deklaratywny, ponieważ nie określamy żadnych "szczegółów implementacji" budowania listy.

Aby związać w C# przykład, ogólnie, użycie LINQ skutkuje deklaratywnym stylem, ponieważ nie mówisz Jak aby uzyskać to, czego chcesz; mówisz tylko Czego chcesz. To samo można powiedzieć o SQL.

Jedną z zalet programowania deklaratywnego jest to, że pozwala kompilatorowi na podejmowanie decyzji, które mogą skutkować lepszym kodem niż to, co można zrobić ręcznie. Działa z przykładem SQL, jeśli masz zapytanie typu

SELECT score FROM games WHERE id < 100;

Kompilator SQL może "zoptymalizować" to zapytanie, ponieważ wie, że id jest zindeksowanym polem-a może nie jest zindeksowany , w takim przypadku i tak będzie musiał iterację nad całym zestawem danych. Lub być może Silnik SQL wie, że jest to idealny czas, aby wykorzystać wszystkie 8 Rdzeni do szybkiego wyszukiwania równoległego. ty , jako programista, nie przejmujesz się żadnym z tych warunków i nie musisz pisać kodu, aby poradzić sobie z żadnymi szczególnymi przypadkami w ten sposób.

 152
Author: Mark Rushakoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-23 17:37:12

Deklaratywny kontra imperatywny

A paradygmat programowania jest podstawowym stylem programowania komputerowego. Istnieją cztery główne paradygmaty: imperatywny, deklaratywny, funkcjonalny (który jest uważany za podzbiór paradygmatu deklaratywnego)i obiektowy.

Programowanie deklaratywne : jest paradygmatem programowania, który wyraża logikę obliczeń (co zrobić) bez opisywania jej przepływu sterowania (jak zrobić). Niektóre dobrze znane przykłady domen deklaratywnych języki (DSLs) obejmują CSS, wyrażenia regularne i podzbiór SQL (na przykład zapytania SELECT) Wiele języków znaczników, takich jak HTML, MXML, XAML, XSLT... są często deklaratywne. Programowanie deklaratywne próbuje zacierać rozróżnienie między programem jako zbiorem instrukcji a programem jako twierdzeniem o żądanej odpowiedzi.

Imperatywne programowanie : jest paradygmatem programowania, który opisuje obliczenia w kategoriach stwierdzeń, które zmieniają stan programu. Na programy deklaratywne mogą być postrzegane jako polecenia programowania lub twierdzenia matematyczne.

Programowanie funkcyjne: jest paradygmatem programowania, który traktuje obliczenia jako ocenę funkcji matematycznych i unika stanu i zmiennych danych. Kładzie nacisk na zastosowanie funkcji, w przeciwieństwie do imperatywnego stylu programowania, który podkreśla zmiany w stanie. W czystym języku funkcjonalnym, takim jak Haskell, wszystkie funkcje są bez skutków ubocznych, a zmiany stanu są reprezentowane tylko jako funkcje, które przekształcają Państwo.

Poniższy przykład programowania imperatywnego w MSDN, pętli przez liczby od 1 do 10 i znajduje liczby parzyste.

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 even"
var evenNumbers = numbersOneThroughTen.Select(number => number % 2 == 0);

Oba przykłady dają ten sam wynik, a jeden nie jest ani lepszy, ani gorszy od drugiego. Pierwszy przykład wymaga więcej kodu, ale kod można przetestować, a imperatywne podejście daje pełną kontrolę nad szczegółami implementacji. W drugim przykładzie kod jest prawdopodobnie bardziej czytelne; jednak LINQ nie daje Ci kontroli nad tym, co dzieje się za kulisami. Musisz wierzyć, że LINQ dostarczy żądany wynik.

 115
Author: AliKarimi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-22 22:01:08

Wszystkie powyższe odpowiedzi i inne posty online wspominają o następującej treści:

  • dzięki programowaniudeklaratywnemu piszesz kod, który opisuje to, co chcesz, ale niekoniecznie jak go zdobyć
  • powinieneś preferować programowanie deklaratywne niż programowanie imperatywne

To, czego nam nie powiedzieli, to Jak to osiągnąć . Aby część programu była bardziej deklaratywna, Inne części muszą dostarczyć abstrakcję , aby ukryć szczegóły implementacji (które są imperatywne kody).

  • np. LINQ jest bardziej deklaratywny niż pętle (for, while, itd.), np. możesz użyć list.Where(), Aby uzyskać nową filtrowaną listę. Aby to zadziałało, Microsoft wykonał wszystkie ciężkie prace za abstrakcją LINQ.

W rzeczywistości, jednym z powodów, dla których programowanie funkcyjne i biblioteki funkcjonalne są bardziej deklaratywne jest to, że mają abstrakcyjne pętle i listy kreacji, ukrywając wszystkie szczegóły implementacji (najprawdopodobniej kody imperatywne z pętlami) za sceną.

W każdym programie zawsze będziesz miał zarówno kody imperatywne jak i deklaratywne, co powinieneś dążyć do tego, aby ukryć wszystkie kody imperatywne za abstrakcjami, tak aby Inne części programu mogły z nich korzystać deklaratywnie.

Wreszcie, chociaż Programowanie funkcyjne i LINQ mogą uczynić twój program bardziej deklaratywnym, zawsze możesz uczynić go jeszcze bardziej deklaratywnym, dostarczając więcej abstrakcji. Na przykład:

// JavaScript example

// Least declarative
const bestProducts = [];
for(let i = 0; i < products.length; i++) {
    let product = products[i];
    if (product.rating >= 5 && product.price < 100) {
        bestProducts.push(product);
    }
}


// More declarative
const bestProducts = products.filter(function(product) {
    return product.rating >= 5 && product.price < 100;
});

// Most declarative, implementation details are hidden in a function
const bestProducts = getBestProducts();

P. S. skrajnością programowania deklaratywnego jest wymyślanie nowych języków specyficznych dla domeny (DSL):

  1. String Search: Wyrażenie regularne zamiast niestandardowego kodu imperatywnego
  2. React.js : JSX zamiast direct DOM manipulacji
  3. AWS CloudFormation : YAML zamiast CLI
  4. relacyjna baza danych : SQL zamiast starszych interfejsów API do odczytu i zapisu, takich jak ISAM lub VSAM.
 62
Author: engineforce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-15 05:03:00

Dodam kolejny przykład, który rzadko pojawia się w dyskusji o programowaniu deklaratywnym/imperatywnym: interfejs użytkownika!

W C#, można zbudować interfejs użytkownika przy użyciu różnych technologii.

Na imperatywnym końcu, możesz użyć DirectX lub OpenGL, aby bardzo imperatywnie narysować swoje przyciski, pola wyboru itp... linia po linii (a właściwie trójkąt po trójkącie). Od Ciebie zależy, jak narysować interfejs użytkownika.

Na końcu deklaratywnym masz WPF. W zasadzie piszesz jakiś XML (tak, tak, "XAML" technicznie) i framework wykonuje pracę za Ciebie. Mówisz, jak wygląda interfejs użytkownika. To do systemu, aby dowiedzieć się, jak to zrobić.

W każdym razie, kolejna rzecz do przemyślenia. Tylko dlatego, że jeden język jest deklaratywny lub imperatywny, nie oznacza, że nie ma pewnych cech drugiego.

Ponadto, jedną z zalet programowania deklaratywnego jest to, że cel jest zwykle łatwiejszy do zrozumienia z czytania kodu, podczas gdy imperatyw daje lepszą kontrolę nad egzekucją.

Sedno tego wszystkiego:

Deklaratywne - > what chcesz zrobić

Imperatyw - > how chcesz to zrobić

 44
Author: Erich Mirabal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-23 18:41:48

Podobało mi się Wyjaśnienie z kursu Cambridge + ich przykłady:

  • deklaratywne - określać co robić, nie jak to robić
    • np.: HTML opisuje co powinno pojawić się na stronie, a nie jak powinno być narysowane na ekranie
  • imperatyw - określ zarówno co i Jak
    • int x; - co (deklaratywne)
    • x=x+1; - Jak
 29
Author: ROMANIA_engineer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-25 05:00:27

Różnica dotyczy głównie ogólnego poziomu abstrakcji. Z deklaratywnym, w pewnym momencie, jesteś tak daleko od poszczególnych kroków, że program ma wiele swobody, jak uzyskać wynik.


Możesz spojrzeć na każdą instrukcję jako spadającą gdzieś na kontinuum:

Stopień abstrakcji:

Declarative <<=====|==================>> Imperative

Deklaratywny Przykład Świata Rzeczywistego:

  1. Bibliotekarzu, proszę sprawdzić mi kopię Moby ' ego Dick. (Bibliotekarz, według własnego uznania wybiera najlepszą metodę wykonania żądania)

Imperatywny Przykład Świata Rzeczywistego:

  1. przejdź do biblioteki
  2. Find Book Organization System (Card Catalog - Old school)
  3. dowiedz się, jak korzystać z katalogów kart (zapomniałeś też, prawda)
  4. dowiedzieć się, jak półki są oznakowane i zorganizowane.
  5. dowiedz się, jak książki są zorganizowane na półce.
  6. odsyłacz położenie książki z katalogu kart z systemem organizacyjnym, aby znaleźć wspomnianą książkę.
  7. weź książkę do systemu wymeldowania.
  8. Zobacz książkę.
 27
Author: Lucent Fox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-25 23:14:12

Imperatywne programowanie wymaga od programistów zdefiniowania krok po kroku jak kod powinien zostać wykonany. Aby dać wskazówki w sposób imperatywny, mówisz: "Idź do 1st Street, skręć w lewo na Main, jedź dwie przecznice, skręć w prawo w Maple i zatrzymaj się w trzecim domu po lewej stronie."The wersja deklaratywna może brzmieć mniej więcej tak: "Drive to Sue' s house."Jeden mówi, jak coś zrobić; drugi mówi, co musi być załatwione.

Styl deklaratywny ma dwa zalety stylu imperatywnego:

    Nie zmusza podróżnika do zapamiętywania długich instrukcji.
  • pozwala podróżnikowi zoptymalizować trasę, gdy jest to możliwe.

Calvert, C Kulkarni, D (2009). Essential LINQ. Addison Wesley. 48.

 25
Author: GorkemHalulu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 08:46:36

Imperatywne programowanie mówi komputerowi wprost, co ma robić i jak to robić, jak na przykład określanie porządku i takie

C#:

for (int i = 0; i < 10; i++)
{
    System.Console.WriteLine("Hello World!");
}

Deklaratywny jest wtedy, gdy mówi się komputerowi, co ma robić, ale tak naprawdę nie jak to zrobić. Datalog / Prolog jest pierwszym językiem, który przychodzi na myśl w tym zakresie. Zasadniczo wszystko jest deklaratywne. Nie możesz zagwarantować porządku.

C# jest znacznie bardziej imperatywnym językiem programowania, ale niektóre funkcje C# są bardziej deklaratywne, jak Linq
dynamic foo = from c in someCollection
           let x = someValue * 2
           where c.SomeProperty < x
           select new {c.SomeProperty, c.OtherProperty};

To samo można by napisać imperatywnie:

dynamic foo = SomeCollection.Where
     (
          c => c.SomeProperty < (SomeValue * 2)
     )
     .Select
     (
          c => new {c.SomeProperty, c.OtherProperty}
     )

(Przykład z Wikipedii Linq)

 11
Author: McKay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-14 19:01:56

W informatyce programowanie deklaratywne jest paradygmatem programowania, który wyraża logikę obliczeń bez opisywania jej przepływu sterowania.

Z http://en.wikipedia.org/wiki/Declarative_programming

W skrócie język deklaratywny jest prostszy, ponieważ brakuje mu złożoności przepływu sterowania (pętli, instrukcji if, itp. )

Dobrym porównaniem jest ASP.Net model "code-behind". Masz deklaratywny".Pliki ASPX i następnie imperatyw " ASPX.Pliki kodu CS. Często stwierdzam, że jeśli Mogę zrobić wszystko, czego potrzebuję w deklaratywnej połowie skryptu, o wiele więcej osób może śledzić to, co się robi.

 8
Author: kervin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-23 17:30:02

Kradzież z Philip Roberts tutaj :

    Programowanie imperatywne mówi maszynie, jak coś zrobić (w wyniku czego chcesz się wydarzyć)
  • Programowanie deklaratywne mówi maszynie, co chcesz się stać (a komputer wymyśla, jak to zrobić)

Dwa przykłady:

1. Podwojenie wszystkich liczb w tablicy

Imperatywnie:

var numbers = [1,2,3,4,5]
var doubled = []

for(var i = 0; i < numbers.length; i++) {
  var newNumber = numbers[i] * 2
  doubled.push(newNumber)
}
console.log(doubled) //=> [2,4,6,8,10]

Deklaratywnie:

var numbers = [1,2,3,4,5]

var doubled = numbers.map(function(n) {
  return n * 2
})
console.log(doubled) //=> [2,4,6,8,10]

2. Sumowanie wszystkich pozycji w lista

Imperatywnie

var numbers = [1,2,3,4,5]
var total = 0

for(var i = 0; i < numbers.length; i++) {
  total += numbers[i]
}
console.log(total) //=> 15

Deklaratywnie

var numbers = [1,2,3,4,5]

var total = numbers.reduce(function(sum, n) {
  return sum + n
});
console.log(total) //=> 15

Zauważ, jak imperatywne przykłady obejmują tworzenie nowej zmiennej, mutowanie jej i zwracanie nowej wartości (np. jak sprawić, by coś się stało), podczas gdy deklaratywne przykłady wykonują na danym wejściu i zwracają nową wartość na podstawie początkowego wejścia (np. tego, co chcemy się wydarzyć).

 8
Author: Chris Eaves-Kohlbrenner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-29 13:43:23

Programowanie imperatywne
Język programowania, który wymaga dyscypliny programowania, takich jak C / C++, Java, COBOL, FORTRAN, Perl i JavaScript. Programiści piszący w takich językach muszą wypracować odpowiednią kolejność działań w celu rozwiązania problemu, w oparciu o znajomość przetwarzania danych i programowania.

Programowanie deklaratywne
Język komputerowy, który nie wymaga pisania tradycyjnej logiki programowania; Użytkownicy koncentrują się na definiowaniu wejście i wyjście, a nie kroki programu wymagane w proceduralnym języku programowania, takim jak C++ lub Java.

Przykładami programowania deklaratywnego są CSS, HTML, XML, XSLT, RegX.

 5
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 10:14:29

Z mojego zrozumienia, oba terminy mają korzenie w filozofii, są deklaratywne i imperatywne rodzaje wiedzy. Wiedza deklaratywna to twierdzenia prawdy, twierdzenia faktów jak aksjomaty matematyczne. Mówi ty coś. Imperatyw, czyli wiedza proceduralna, podpowiada Ci krok po kroku, jak coś osiągnąć. Na tym polega zasadniczo definicja algorytmu. Jeśli chcesz, porównaj język programowania komputera z językiem angielskim. Zdania deklaratywne coś stwierdzają. Nudny przykład, ale oto deklaratywny sposób wyświetlania, czy dwie liczby są sobie równe, w Javie:

public static void main(String[] args)
{
    System.out.print("4 = 4.");
}

Zdania imperatywne w języku angielskim, z drugiej strony, wydają polecenie lub składają jakąś prośbę. Programowanie imperatywne jest więc tylko listą poleceń(zrób to, zrób tamto). Oto imperatywny sposób wyświetlania, czy dwie liczby są sobie równe, czy nie, podczas przyjmowania danych wejściowych użytkownika, w Javie:

private static Scanner input;    

public static void main(String[] args) 
{
    input = new Scanner(System.in);
    System.out.println();
    System.out.print("Enter an integer value for x: ");
    int x = input.nextInt();
    System.out.print("Enter an integer value for y: ");        
    int y = input.nextInt();

    System.out.println();
    System.out.printf("%d == %d? %s\n", x, y, x == y);
}

Zasadniczo wiedza deklaratywna pomija nad pewnymi elementami tworząc warstwę abstrakcji nad tymi elementami. Programowanie deklaratywne robi to samo.

 2
Author: Matthew Conrad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-05 23:31:42

Deklaratywny program jest tylko danymi dla jego mniej lub bardziej "uniwersalnej" imperatywnej implementacji / maszyny wirtualnej.

Plusy: podanie tylko danych, w jakimś twardym (i sprawdzonym) formacie, jest prostsze i mniej podatne na błędy niż podanie wariantu jakiegoś imperatywnego algorytmu bezpośrednio. niektóre złożone specyfikacje nie mogą być pisane bezpośrednio, tylko w postaci DSL. best I freq używane w strukturach danych DSLs to zestawy i tabele. ponieważ nie masz zależności między elementami/wierszami. a kiedy nie masz zależności masz swobodę modyfikowania i łatwość obsługi. (porównaj np. moduły z klasami - z modułami jesteś zadowolony a z klasami masz problem z klasami bazowymi) wszystkie dobra deklaratywności i DSL wynikają bezpośrednio z korzyści płynących z tych struktur danych (tabel i zestawów). kolejny plus - można zmienić implementację deklaratywnego języka vm, jeśli DSL jest mniej lub bardziej abstrakcyjny (dobrze zaprojektowany). wykonaj na przykład implementację równoległą. lub przenieść go do innego systemu operacyjnego itd. wszystkie dobrze sprecyzowane modułowe interfejsy izolacyjne lub protokoły zapewniają taką swobodę i łatwość obsługi.

Minusy: masz rację. ogólna (i parametryzowana przez DSL) implementacja algorytmu imperatywnego/maszyny wirtualnej może być wolniejsza i/lub wymagająca pamięci niż konkretna. w niektórych przypadkach. jeśli te przypadki są rzadkie - po prostu zapomnij o tym, niech to będzie powolne. jeśli jest częsty-zawsze możesz rozszerzyć swój DSL / vm w tym przypadku. gdzieś spowalnia wszystkie inne sprawy, jasne...

P. S. Framework jest w połowie drogi między DSL a imperatywem. i jak wszystkie rozwiązania w połowie drogi... łączy w sobie braki, a nie korzyści. nie są tak bezpieczne i nie tak szybko :) spójrz na jack-of-all-trades haskell - to w połowie drogi między silnym prostym ML i elastycznym Metaprog Prolog i... co to za potwór. możesz spojrzeć na Prolog jako Haskell z funkcjami/predykatami tylko logicznymi. i jak prosta jest jego elastyczność w stosunku do Haskell...

 2
Author: 4KCheshireCat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-06 04:52:09

Zastanawiam się tylko, dlaczego nikt nie wspomniał o klasach atrybutów jako deklaratywnym narzędziu programistycznym w C#. Popularna odpowiedź tej strony mówi właśnie o LINQ jako deklaratywnym narzędziu programistycznym.

Według Wikipedii

Do popularnych języków deklaratywnych należą języki zapytań baz danych (np. SQL, XQuery), wyrażenia regularne, programowanie logiczne, programowanie funkcjonalne i systemy zarządzania konfiguracją.

Więc LINQ, jako funkcjonalny składnia jest zdecydowanie deklaratywną metodą, ale Klasy atrybutów W C#, jako narzędzie konfiguracyjne, również są deklaratywne. Oto dobry punkt wyjścia, aby przeczytać więcej na ten temat: szybki przegląd programowania atrybutów W C#

 2
Author: Siavash Mortazavi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-26 11:11:39

Aby dodać kolejny przykład w zakresie tworzenia aplikacji mobilnych. W iOS i Androidzie mamy budowniczych interfejsów, w których możemy zdefiniować UI aplikacji.

Interfejs rysowany przy użyciu tych konstruktorów ma charakter deklaratywny, gdzie przeciągamy i upuszczamy komponenty. Rzeczywisty rysunek odbywa się pod spodem i wykonywane przez ramy i systemu.

Ale możemy również narysować całe składniki w kodzie, co jest imperatywne w naturze.

Również niektóre nowe języki, takie jak Angular JS są skupiając się na projektowaniu interfejsu użytkownika deklaratywnie i możemy zobaczyć wiele innych języków oferujących to samo wsparcie. Podobnie jak Java nie ma żadnego dobrego deklaratywnego sposobu rysowania natywnych aplikacji desktopowych w Javie swing lub Java FX, ale w niedalekiej przyszłości po prostu mogą.

 2
Author: Puneet Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-28 13:08:48