Paradigme programiranja
Paradigma programiranja predstavlja način na koji se vrši programiranje u nekom programskom jeziku, odnosno „filozofiju“ samog jezika. Jezike tako možemo podeliti na dve osnovne grupe:
- Imperativni jezici, koji nastaju kao realizacija nekog algoritma na računaru i kod kojih se zadaje niz naredbi u obliku iskaza koje računar izvršava (BASIC, Pascal, Fortran, C...)
- Deklarativni jezici, nisu zaista programski jezici u užem značenju, pošto, za razliku od imperativnih jezika, ne definišu „kako“ nešto uraditi, već „šta“ predstavljaju neki podaci.
Dobri primeri deklarativnih jezika su
- HTML - jezik koji služi za opis web stranica na Internetu
- SQL - jezik za rad sa bazama podataka, gde kroz upite opisujemo šta želimo
Ipak, programski jezici se, prema paradigmama programiranja, najčešće dele na:
- proceduralni programski jezici (poznati i kao strukturni ili klasični "imperativni" jezici) - programiranje u najužem smislu reči – zadavanje komandi računaru, korišćenje struktura kontrole toka (grananje, ciklusi)
- objektno-orijentisani jezici - razvijeni su sa idejom modeliranja pojava i situacija iz realnog sveta i danas predstavlja verovatno najpopularniji pristup programiranju (skoro svi najznačajniji moderni programski jezici podržavaju OOP: C++, Java, Delphi...)
- funkcionalni jezici predstavlja malo drugačiji pristup programiranju, kod koga se izbegava korišćenje promenljivih, a ceo program se definiše kao kompleksna funkcija (primer funkcionalnog jezika je Lisp, koji se koristi pri automatizaciji rada u AutoCAD paketu i rad sa funkcijama u Excel-u se takođe mogu podvesti pod funkcionalno programiranje)
- logičko programiranje - koristi se u razvoju veštačke inteligencije i najbliže je deklarativnim jezicima, budući da se ovde računaru ne određuje način na koji će rešiti problem, već se sam problem detaljno opisuje (primer ovakvog jezika je Prolog)
Osim pomenutih, postoje i ezoterični jezici. To su eksperimentalni programski jezici zasnovani na čudnim idejama - npr. da budu minimalistički (što manje instrukcija), nečitljivi, šaljivi, nemogući za programiranje ili na bilo kakav način drugačiji od klasičnih jezika. Među najpoznatijim su brainfuck, Befunge i Malbolge (karakterisan kao verovatno najteži jezik za programiranje).
Objektno-orijentisano programiranje se najjednostavnije može opisati kao način da se podaci i delovi programa povežu u jednu celinu – objekat. Tako objekat ima određena svojstva (properties) – polja sa podacima i metode (methods) – procedure i funkcije koje definišu ponašanje objekta.
OOP ima nekoliko tipičnih koncepata, koji ga razlikuju od ostalih paradigmi [1]:
- kompozicija – kreiranje klasa objekata koji sadrže podobjekte;
- nasleđivanje – kreiranje novih klasa objekata na osnovu već postojećih;
- enkapsulacija – „privatizacija“ programa u objektu, što omogućuje da se jedan objekat bez problema zameni drugim, koji ima ista svojstva i metode;
- polimorfizam – mogućnost da izvedeni objekat bude prosleđen umesto objekta „roditeljske“ klase.
Zahvaljujući navedenim osobinama, OOP omogućuje jednostavnije rešavanje problema, brzo programiranje, laku podelu posla, jednostavno korišćenje tuđih delova programa, kao i manji broj grešaka u programu. Takođe, objektno programiranje se odlično uklapa u programiranje za grafički korisnički interfejs (npr. programiranje Windows aplikacija).
Osim objektno-orijentisanih jezika, danas postoje i jezici zasnovani na objektima. Ovi jezici ne omogućavaju deklarisanje sopstvenih klasa objekata (ili ih dozvoljavaju u nekoj ograničenoj meri), ne poseduju navedene koncepte OOP-a, ali imaju mogućnost korišćenja već gotovih objekata. Primer ovakvih jezika su skript jezici poput JavaScript-a i VBA, koji programeru pružaju pristup objektnom modelu (DOM – Document Object Model), odnosno objektima koje imaju na raspolaganju preko web čitača, odnosno Microsoft Office aplikacija.
- Cantu, M. (2006), Delphi 2005 bez tajni, Čačak: Kompjuter biblioteka
- esolangs.org, Esoteric programming language