Programowanie deklaratywne

Z Wikipedii, wolnej encyklopedii

Programowanie deklaratywne — rodzina paradygmatów programowania, które nie są z natury imperatywne. W przeciwieństwie do programów napisanych imperatywnie, programista opisuje warunki, jakie musi spełniać końcowe rozwiązanie (co chcemy osiągnąć), a nie szczegółową sekwencję kroków, które do niego prowadzą (jak to zrobić). Programowanie deklaratywne często traktuje programy jako pewne hipotezy wyrażone w logice formalnej, a wykonywanie obliczeń jako ich dowodzenie. Programowanie deklaratywne jest szczególnym przedmiotem zainteresowania naukowców, gdyż dzięki minimalizacji lub eliminacji skutków ubocznych może znacząco uprościć tworzenie programów współbieżnych[1]. Paradygmat programowania deklaratywnego obejmuje szeroką gamę języków programowania i bardziej szczegółowych paradygmatów podrzędnych.

Definicja

Peter Van Roy oraz Serif Haridi podają następujące warunki, jakie musi spełniać program, aby mógł być uznany za deklaratywny[2]:

  • niezależny — wynik końcowy nie zależy od żadnego zewnętrznego stanu,
  • bezstanowy — nie posiada stanu wewnętrznego, który jest zachowywany między wywołaniami,
  • deterministyczny — dla takich samych argumentów wejściowych zawsze daje ten sam wynik.

Istnieje kilka szczegółowych paradygmatów, które spełniają te warunki, różniących się sposobami ich osiągnięcia: programowanie funkcyjne, programowanie logiczne, programowanie ograniczeń.

Siła wyrazu

Wyróżniamy dwa rodzaje języków deklaratywnych[2]:

  • opisowe — opisuje wyłącznie struktury danych i spodziewany rezultat. Język taki najczęściej nie jest zupełny w sensie Turinga lub też osiąga zupełność w inny sposób. Deklaratywność służy przede wszystkim do zwiększenia czytelności lub łatwiejszego opisu pewnych zjawisk. Przykładem takiego języka może być HTML, który opisuje wygląd strony internetowej.
  • programowalne — język, którego deklaratywny model obliczeń jest zupełny w sensie Turinga.

Przykłady języków

Przykładami programowalnych języków deklaratywnych są języki funkcyjne i logiczne takie, jak Ocaml, XSLT czy Prolog. Przykładem języka opisowego jest SQL służący do komunikacji z bazą danych, który sam w sobie nie jest zupełny w sensie Turinga.

Przypisy

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.