Fon Nojmanova arhitektura uslovila je razvoj programskih jezika za programiranje računara-procesora kod kojih je koncept takav da se program sastoji od niza naredbi procesoru. Kada programiramo u ovakvim jezicima mi naređujemo procesoru šta da radi (manje ili više apstraktno). Takve programske jezike nazivamo imperativni programski jezici, a način razmišljanja, izražavanja i rešavanja problema naziva se imperativna paradigma. Pored ovakvih programskih jezika, razvijeni su i drugi programski jezici kojima se problem i rešenje mogu opisati na drugačije načine, a čiji se programski kod može prevesti na mašinski jezik procesora.
Razlikujemo sledeće paradigme i njihove podvrste:
- Imperativna
- Proceduralna (Asembler, BASIC, C)
- Strukturna (C, Pascal, C#, Java, PHP, JavaScript ... )
- Objektna i objektno orijentisana (C#, Java, PHP, C++, ObjectiveC, Swift ...)
- Deklarativna
- Logička (Prolog)
- Funkcionalna (Lisp, Haskell, u nekoj meri Python)
Jedan programski jezik može imati podršku za više paradigmi. Takve jezike nazivamo multiparadigmatski jezici. To je prilično uobičajeno, ali kod takvih jezika jedna paradigma je osnovna i potpuno podržana a ostale su podržane uglavnom samo donekle, u nekim elementima koji su autorima jezika bili zgodni ili potrebni. Tako, možemo reći da je JavaScript i objektno orijentisani i funkcionalni jezik, ali nije nijedno od ta dva kako treba već samo delimično.
Izdvojili smo i opisne jezike koji nisu programski jezici, jer ne opisuju proces, već su jezici opšte namene za predstavljanje strukture i sadržaja podataka, ali vredi naglasiti da postoji i to. Tu kao primere navodimo XML, HTML, JSON, UML.
Programski (i opisni) jezici su tipično tekstualni, ali moguće je imati i grafički jezik, gde postoji skup grafičkih simbola koji predstavljaju odnose između elemenata u modelu. ER dijagram se može na neki način smatrati grafičkim jezikom, kao i grafikoni propisani UML standardom (jedan od njih je dijagram toka, odnosno dijagram kojim crtamo algoritme).
U nastavku ide donekle modifikovani uvodnik iz knjige za OOP, koji se tiče upravo programskih paradigmi.