Jump to content

Paradigma programore

Nga Wikipedia, enciklopedia e lirë
(Përcjellë nga Paradigma Programore)

Paradigma programore paraqet stilin thelbësor të programimit kompjuterik. Paradigma dallon nga metodologjia nga se metodologjia paraqet stilin për zgjidhjen e një problemi specifik në inxhinieringun softuerik. Paradigmat dallojnë nga njëra tjetra për nga konceptet dhe abstraksionet që i shfrytëzojnë për paraqitjen e elementeve të programit (si p.sh. objektet, funksionet, variablat, etj.) si dhe dallojnë për nga hapat që i marrin për përpilimin e një llogaritjeje (p.sh. vlerësimi, rrjedhshmëria e të dhënave, etj.)

Një gjuhë programuese mund të përkrah paradigma të shumëfishtë. P.sh. programet që shkruhen në C++ ose Object Pascal munden të jenë vetëm procedurale, ose vetëm të orientuara në objekte, mirëpo këto programe munden të përmbajnë edhe elemente të të dy paradigmave. Se cilat elementeve të paradigmave përfshihen në program varet tërësisht nga dizajnerët e softuerit.

Në Programimin e Orientuar në Objekte, programorët mund ta perceptojnë paradigmën si një koleksion të objekteve ndërvepruese; përderisa në Programimin Funksional, programi mundet të perceptohet si një sekuencë të funksioneve vlerësuese.

Disa gjuhë programuese përkrahin një paradigmë të vetme, si Smalltalk që përkrah vetëm Programimin e Orientuar në Objekte, ose Haskell që përkrah vetëm Programimin Funksional. Mirëpo, ekziston një numër i gjuhëve programuese që përkrahin paradigma të shumta, si p.sh. Object Pascal, C++, C#, Visual Basic, Common Lisp, Scheme, Python, Ruby dhe Oz.

Pardigmat e programimit janë të njohura gjithashtu edhe për nga teknikat që nuk i lejojnë, si p.sh. në Programimin Funksional nuk është i lejuar shfrytëzimi i efekteve anësorë (ku kjo do të thotë që funksioni përveç që e bënë kthimin e një vlere, ai gjithashtu bën ndryshimin e ndonjë gjendjeje, p.sh. ndryshohet ndonjë variabël globale ose statike, ose shkruhen të dhëna në një skedë, etj.). Në anën tjetër, Programimi i Strukturuar nuk e lejon shfrytëzimin e deklarimit goto.

Fillimisht, kompjuterët janë programuar nëpërmjet kodeve binare që paraqisnin sekuenca të ndryshme për CPU-në. Kjo mënyrë e programimit u dëshmua të jetë mjaftë e vështirë si dhe shumë e ndjeshme ndaj gabimeve. Shkrimi i programeve me kode binare, gjithashtu njihet edhe si shkrim me kode të makinës, ku kjo është një ndër nivelet më të ulëta të paradigmave të programimit.

Për ta lehtësuar procesin e programimit, u krijua gjuha programuese Assembly, ku kjo i zëvendësoi funksionet e programimit me kode të makinës me mnemonika të ndryshme, ndërsa adresat e memories i zëvendësoi me etiketa. Edhe pse Assembly paraqiste një avancim të dukshëm nga programimi me kode të makinës, programimi me këtë gjuhë ishte prapë se prapë i ndjeshëm ndaj gabimeve, si dhe ishte i vështirë për mirëmbajtje dhe për rregullimin e problemeve në kod (ang. debug). Duhet cekur që Assembly edhe pse ishte paradigmë e nivelit të ultë, ajo paraqiste gjeneratën e dytë të paradigmave të programimit.

Krijimi i gjuhëve programuese procedurale paraqiti avancimin e ardhshëm. Këto gjuhë u konsideruan si gjenerata e tretë e paradigmave të programimit, si dhe gjenerata e parë e gjuhëve programuese të nivelit të lartë. Këto gjuhë u dalluan për nga shfrytëzimi i termeve nga fjalori për procesin e zgjidhjeve të problemeve, p.sh. në COBOL (Common Business Oriented Language) u shfrytëzuan termet si move dhe copy.

Gjuhët programuese si FORTRAN (FORmula TRANslation) dhe ALGOL (ALGOrithmic Language) u zhvilluan posaçërisht për zgjidhjen e problemeve shkencore dhe inxhinierike. Duhet cekur që njëra nga idetë prapa zhvillimit të ALGOL-it ishte krijimi i një gjuhe që do të ishte e përshtatshme për definimin e algortimeve. Në anën tjetër, gjuha programuese BASIC (Beginners All purpose Symbolic Instruction Code) u zhvillua në mënyrë që të përfshinte një numër më të madh të njerëzve në procesin e shkrimit të programeve. Të gjitha këto gjuhë (FORTRAN, ALGOL, BASIC) i janë përmbajtur paradigmit programor procedural. Pra, në këto gjuhë është përshkruajtur hap pas hapi se cila procedurë është duke u ekzekutuar për qëllim të zgjidhjes të problemit.

Problemet kryesore me gjuhët procedurale qëndronin në faktin që ishte vështirë që kodi të rishfrytëzohej, ose të bëhej përmirësimi i ndonjë zgjidhjeje pasi që një metodë më e mirë ishte zhvilluar. Mu për këtë arsye u krijuan gjuhët programuese të orientuara në objekte (si Eiffel, Smalltalk dhe Java). Në këto gjuhë të dhënat si dhe metodat që merren me manipulimin e të dhënave janë përfshirë në një njësi të vetme të njohur si objekt. E vetmja mënyrë që një shfrytëzues mundet të fitoj qasje në këto të dhëna është nëse ai shfrytëzon metodat e objektit.

Me krijimin e gjuhëve programuese deklarative u be një avancim tjetër në fushën e paradigmave të programimit. Në këto gjuhë programuese kompjuterit vetëm i tregohet se çfarë është problemi, e jo se si të zgjidhet problemi. Kompjuteri kërkon zgjidhjen duke përdorur një bazë të dhënave ose një bashkësi rregullash. Pra, kompjuterit nuk i jepet ndonjë procedurë që ai duhet ta përcjell. Njëra nga këto gjuhë është XAML (Extensible Application Markup Language) e cila është e krijuar nga Microsoft.

Ndër paradigmat e fundit është ai i programimit funksional. Programet të cilat janë të shkruar në këtë paradigmë shfrytëzojnë funksione që munden të thërrasin funksione tjera (përfshirë edhe vetveten). Këto funksione kanë të dhëna hyrëse dhe dalëse, mirëpo nuk kanë variabla, pasi që ato janë veti e gjuhëve programuese procedurale. Gjuhët programuese funksionale gjithashtu njihen për nga shfrytëzimi i shpeshtë i konceptit të ripërsëritjes (rekurzionit, nga ang. recursion).