Vuonna 1948 YK hyväksyi Ihmisoikeuksien yleismaailmallisen julistuksen, jossa määritellään jokaiselle ihmiselle kuuluvia perusoikeuksia. Mutta miten se liittyy ohjelmointiin? Deklaratiiviseen ohjelmointiin on hyvä tutustua tutkimalla hieman, mitä tuo sana oikein tarkoittaa; Englanniksi Declare voidaan suomentaa ’julistaa’ tai ’ilmoittaa’. Kuten ihmisoikeuksien julistuksessakaan deklaratiivisessa ohjelmoinnissa ei kerrota, miten asiat toteutetaan, vaan ilmoitetaan, mitä halutaan.
Deklaratiivista ohjelmointia pidetään usein vastakohtana imperatiiviselle ohjelmoinnille, mikä auttaa ensi silmäyksellä hahmottamaan molempia konsepteja. Imperatiivisessa keskitytään tarkkaan tapahtumaketjuun, kun deklaratiivisessa puolestaan todetaan asioita ja käytetään niitä murehtimatta tarkasta toteutuksesta. Tästä erinomainen esimerkki on perinteinen SQL-komento:
-- Valitaan ohjelmointi_kieltet-nimisestä taulusta
-- kaikkien niiden nimet,
-- joiden status on paras:
select nimi from ohjelmointi_kielet where status = 'Paras';
SQL-komennoissa kerrotaan, mitä tietoja tietokannasta halutaan hakea, ja jätetään toteutus tietokantamoottorin murheeksi. Todellisuudessahan deklaratiivinen ohjelmointi on abstraktiotaso imperatiivisen systeemin päällä, ja tietokone tarvitsemat imperatiiviset komennot on täytynyt toteuttaa jossain.
<html>
<head>
<title>Deklratiivinen HTML</title>
</head>
<body>
<p>HTML on luonteeltaan puhtaasti deklaratiivinen. Esimerkiksi <p> merkki tarkoittaa: "Tässä kohdassa on kappale, jossa lukee näin."</p>
</body>
</html>
Voidaan myös sanoa, että kaikki kirjastot ja ohjelmistokehykset muuttavat ohjelmointia deklaratiiviseen suuntaan, ja siksi ohjelmointikielten lajittelu deklaratiivisiin ja imperatiivisiin ei ehkä ole vaivan arvoista. Näiden erojen ymmärtäminen kuitenkin kannattaa, sillä se auttaa valitsemaan oikeat työkalut kuhunkin tilanteeseen.
Kaikkiaan deklaratiivinen ohjelmointi on tarkemman toteutuksen piilottamista ja keskittymistä siihen, mitä halutaan saada aikaiseksi. Vaikkei heittäytyisikään täysin deklaratiivisen ohjelmoinnin syleilyyn, sen ymmärtäminen auttaa hahmottamaan ja suunnittelemaan omaa koodiaan paremmin.