A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Deklarativní programování je založeno na myšlence programování aplikací pomocí definic co se má udělat, a ne jak se to má udělat. Opakem tohoto principu je imperativní programování popisující jednotlivé úkony pomocí algoritmů. Zjednodušeně to lze popsat tak, že imperativní programy obsahují algoritmy, kterými se dosáhne chtěný cíl, zatímco deklarativní jazyky specifikují cíl a algoritmizace je ponechána programu (interpretu) daného jazyka.
Odlišnosti
Deklarativní programování se snaží programátora ušetřit vytváření chyb, které běžně vznikají při tvorbě v imperativních jazycích. V imperativních jazycích je běžné mít proměnné globálního charakteru, do kterých zapisují ostatní funkce a metody. Toto je zdrojem mnoha chyb. Deklarativní jazyky se tento problém snaží řešit. Proměnné jsou v nich používány velmi střídmě, protože hodnoty se nejčastěji předávají ve formě návratové hodnoty určité funkce. Deklarativní jazyky také neobsahují prostředky, jak provést cyklus známý jako do-while nebo for. Vše je řešeno pomocí rekurze.
Přístupy k deklarativnímu programování
K deklarativnímu programování lze přistupovat dvojím způsobem. Tím prvním je použití jazyka ze skupin programovacích jazyků, které byly navrženy přímo pro deklarativní programování. Jsou to jazyky patřící mezi funkcionální programovací jazyky, logické programovací jazyky a programovací jazyky s omezujícími podmínkami. V těchto jazycích se zpravidla definuje množina funkčních závislostí nebo pravidel. Po spuštění takového programu jsou vyhodnocovány vstupy těmito podmínkami. V programech nebývá důležité přesné pořadí jednotlivých pravidel, protože kód nebývá zpracováván lineárně tak, jak tomu bývá u imperativních programovacích jazyků.
Druhým přístupem je použití imperativního jazyka s knihovnou pro podporu deklarativního programování. Jde vlastně jen o skrytí imperativních částí programového kódu a vlastní použití takovéto knihovny je v duchu deklarativního programování. Příkladem mohou být unit testy, např. JUnit, NUnit…
Další skupinu jazyků řazené mezi deklarativní jazyky tvoří doménově specifické jazyky neboli jazyky pro řešení konkrétního problému. Tyto jazyky bývají typicky turingovsky neúplné. Příkladem může být jazyk SQL pro manipulaci s daty v databázi, regulární výrazy nebo třeba jazyk XSL pro manipulaci s XML daty.
Deklarativní programovací jazyk, jako každý programovací jazyk, musí mít syntax a sémantiku. Z tohoto důvodu do této skupiny nelze zařadit obecné XML bez definovaného doctype (významu dat).
Příklady
- Jazyk SQL je typickým příkladem doménově specifického jazyka pro řešení konkrétních problémů. Je to dotazovací jazyk nad daty databáze.
SELECT firstname, lastname FROM users ORDER BY lastname ASC;
Provede dotaz a vybere všechna jména a příjmení uživatelů z tabulky users a seřadí je vzestupně podle příjmení.
- Jazyk Scheme je funkcionální jazyk. Příkladem může být definice faktoriálu:
(define (faktorial n)
(if (= n 0)
1
(* n (faktorial (- n 1))))))
a jeho zavolání
(faktorial 5)
- Jazyk Prolog je jazyk pro logické programování. Definují se v něm pravidla a v dotazovacím módu se uživatel ptá interpreta na skutečnosti, které interpret přímo nezná, ale dokáže si je ze známých skutečností odvodit. Příkladem definování takových pravidel mohou být rodinné vztahy:
% Ladislav je rodičem Adriany
rodic(ladislav, adriana).
% Ladislav je rodičem Lubomíra
rodic(ladislav, lubomir).
% Šárka je rodičem Lubomíra
rodic(sarka, lubomir).
% definice sourozence
sourozenec(Sourozenec, X) :- rodic(Y, X), rodic(Y, Sourozenec), \+(Sourozenec = X).
pokud se pak potřebujeme zeptat jaké má Adriana sourozence, zapíšeme:
sourozenec(adriana, X).
Výstupem pak bude
X = lubomir ;
No
nebo jací jsou rodiče Lubomíra:
rodic(X, lubomir).
výsledkem bude:
X = ladislav ;
X = sarka ;
No
Související články
Externí odkazy
Obrázky, zvuky či videa k tématu deklarativní programování na Wikimedia Commons
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antény
Chemické zdroje elektriny
Chladenie v elektrotechnike
Elektrická sústava automobilu
Elektrická trakcia
Elektrické prístroje
Elektrické súčiastky
Elektrické spotrebiče
Elektrické stroje
Čítanie (elektrotechnika)
Činný výkon
Štatistická dynamika
Živý vodič
Admitancia
Antiparalelné zapojenie
Asynchrónny motor
Blúdivý prúd
Bočník (elektrotechnika)
Diak (polovodičový prvok)
Displej s kvapalnými kryštálmi
Elektrická inštalácia
Elektrická rezonancia
Elektrická sila
Elektrická vodivosť
Elektrické zariadenie
Elektrický obvod
Elektrický zvonec
Elektroenergetika
Elektromer
Elektrometer
Elektromobil
Elektromotor
Elektromotorické napätie
Elektrotechnický náučný slovník
Elektrotechnika
Elektrotechnológia
Fázor
Faradayova klietka
Frekvencia (fyzika)
Graetzov mostík
Impedancia
Indukčnosť
Induktancia
Istič
Izolácia (elektrotechnika)
Izolant
Jadro vodiča
Jednobran
Jednosmerný prúd
Joulovo teplo
Katóda
Koaxiálny kábel
Kompenzácia účinníka
Konduktometria
Konektor (elektrotechnika)
Korónový výboj
Lanko (elektrotechnika)
Leptanie
Logické hradlo
Magnetická susceptibilita
Magnetizácia (veličina)
Merný elektrický odpor
Mobilné zariadenie
Napájací zdroj
Napäťový chránič
Napäťový násobič
Nortonova veta
Odpínač
Odpojovač
OLED
Olovený akumulátor
Paralelné zapojenie
Peltierov článok
Plošná hustota elektrického prúdu
Poistka (elektrotechnika)
Posuvný prúd
Prúdový chránič
Prenosové médium
Prieletový klystrón
Primárny elektrochemický článok
Reaktancia
Rekuperácia (dopravný prostriedok)
Relé
Reproduktorová výhybka
Rezistancia
Rozhranie (interface)
Sériové zapojenie
Seebeckov jav
Sekundárny elektrochemický článok
Settopbox
Skrat
Sonar
Spínač
Spínaný zdroj
Straty v mikropásikových vedeniach
Striedavý prúd
Stupeň ochrany krytom
Svetelná výbojka
Symetrizačný člen
Technická normalizácia
Tepelné relé
Tepelne vodivostný detektor
Termočlánok
Théveninova veta
Transformátor
Transformátor s fázovou reguláciou
Trojfázová sústava
Tuhá fáza (elektronika)
Tyratrón
Usmerňovač (elektrotechnika)
Uzemnenie
Uzol (vodiče)
Vírivý prúd
Výbojka
Varistor
Ventilátor
Vodič (elektrotechnika)
Voltov stĺp
Vstavaný systém
Zásuvka (elektrotechnika)
Zdroj (elektrotechnika)
Zisk antény
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk