Deklaratiivinen ohjelmointi

Ohjelmointiparadigmat
Deklaratiivinen ohjelmointi
Epärakenteellinen ohjelmointi
Funktionaalinen ohjelmointi
Geneerinen ohjelmointi
Imperatiivinen ohjelmointi
Logiikkapohjainen ohjelmointi
Olio-ohjelmointi
Proseduraalinen ohjelmointi
Rakenteinen ohjelmointi
Reaktiivinen ohjelmointi
Rinnakkaisohjelmointi

Deklaratiivinen ohjelmointi on ohjelmointiparadigma, joka on imperatiivisen ohjelmoinnin vastakohta.[1]

Deklaratiivisessa ohjelmoinnissa ongelma ratkaistaan esittämällä haluttu ratkaisu tai tila varsinaisen algoritmin sijaan.[1] Myös termiä engl. Answer Set Programming, ASP käytetään tämän tyyppisestä ohjelmoinnista.[2][3]

Deklaratiivisen ohjelmoinnin kehitykseen on vaikuttanut muun muassa tekoälytutkimus.[4]

Kyselykielet kuten relaatiotietokantojen SQL ja XQuery ovat yleisimpiä deklaratiivisia kieliä. Myös säännöllisen lausekkeen (engl. regular expression) kielet ovat deklaratiivisia.

Deklaratiivisessä kielessä monet imperatiivisen ohjelmointikielen tyypilliset piirteet puuttuvat tai ne ovat implisiittisiä.

Esimerkkejä SQL-kielen avulla eroavaisuuksista:

  • tietorakenne kyselyn tulosjoukolle voi olla väliaikainen taulu (riippuen toteutuksesta)
  • toistolausekkeen sijaan WHERE-ehdolla määritellään alijoukko johon operaatio kohdistetaan
  • I/O-toimintoja ei pääsääntöisesti ole (työkalusovellus tekee tämän)

Poikkeuksena ylläolevasta tietokantaproseduurit, joita tehdään esimerkiksi PL/SQL kielellä.

Funktionaalinen ohjelmointi voidaan käsittää deklaratiivisen ohjelmoinnin lajikkeeksi.[5]

  1. a b Turner, Ada: Swift 3 and Declarative Programming possiblemobile.com. Viitattu 5.2.2017.
  2. A User’s Guide to gringo, clasp, clingo, and iclingo wp.doc.ic.ac.uk. Viitattu 5.2.2017.
  3. Potassco User Guide cs.utexas.edu. Viitattu 5.2.2017.
  4. Lifschitz, Vladimir: Programming with CLINGO cs.utexas.edu. Viitattu 5.2.2017.
  5. Functional Programming vs. Imperative Programming (C#) Microsoft. Viitattu 5.2.2017.

Developed by StudentB