Programski jezik je programerjevo osnovno orodje, ki predstavlja komunikacijo z računalnikom. Programski jeziki so v bistvu le navodila za izvajanje računskih postopkov, ki so enostavna za človeka, pa tudi za računalnik, čeprav se najhitreje izvaja strojna in ne programska koda.
Uradna definicija bi bila približno takšna: “Programski jezik je način zapisa računalniških programov ali natančno določenih opisov algoritmov. Programski jeziki so umetni jeziki, ki imajo natančno določeno sintakso in semantiko. Programski jezik ne dopušča svobode izražanja, ki je značilna za naravne jezike.”
Sintaksa programskega jezika so točno določena pravila ki določajo veljavno zaporedje znakov v programu. Določajo tudi obliko različnih konstruktov jezik, vendar ne povedo nič o njihovem pomenu.
Semantika je del definicije programskega jezik, ki se ukvarja z določitvijo pomena ali učinka besedila ki je zgrajeno po sintaktičnih pravilih nekega programskega jezika.
Programske jezike delimo po različnih kriterijih, in sicer glede na:
- namen uporabe (splošno namenske in domensko specifične)
- način opisa problema oziroma rešitve (postopkovne in nepostopkovne/napovedovalne)
- zapis programov (linearne in vizualne)
- način implementacije (interpretirane in prevedene)
- vzorec (proceduralne, objektne, objektno usmerjene, …
Program v postopkovnem jeziku eksplicitno določa, kako priti do želenega rezultata, ne določa pa eksplicitno njegovih lastnosti. Rezultat je samo posredno določen kot rezultat sledenja določenemu postopku. Postopek je podan v obliki zaporedja operacij.
Program v deklarativnem jeziku eksplicitno določa lastnost, ki jih mora imeti željen rezultat, ne določa pa načina pridobivanja rezultata. Sprejemljiv je vsak način ki nas pripelje do želenega rezultata.
Proceduralni jeziki so postopkovni jeziki, ki omogočajo zapis programa z definiranjem nabora procedur. Procedure pa se lahko medsebojno kličejo ali pa jih kliče glavni program.
V objektnih jezikih je program realiziran z objekti in razredi. Objekti so računalniški modeli stvari in predmetov iz realnega sveta. Lastnosti objektov pa so zapisane v razredih. Razred zraven podatkov vsebuje še odzive in akcije ki jih objekt lahko izvede.
Glavne značilnosti objektnih jezikov:
- kapsuliranje, skrivanje podatkov znotraj objekta, omogoča programiranje neodvisno od implementacije razredov.
- delovanje omogoča izpeljavo novih razredov iz že obstoječih. Nov razred pa pri tem podeduje lastnosti svojega nadrazreda, tem pa doda še svoje posebnosti. Na ta način urejamo razrede v hierarhije razredov.
- polimorfizem, ista operacija je lahko implementirana na več različnih načinov in da se lahko objekti različnih razredov odzivajo na isto sporočilo različno.
Prednosti objektnega programiranja so:
- bolj naraven razvoj programov
- večja možnost spreminjanja programov
- lažje vzdrževanje programov
- ponovna uporaba programov
Slabosti:
- Pri načrtovanju in izdelavi programa zahteva od programerja veliko znanja in izkušenj.