Si funksionojnë gjuhët e programimit
Nëse ju kërkoni diçka nga unë, ju duhet të më tregoni në një gjuhë që unë e kuptoj, përndryshe do të na duhet një përkthyes që të përkthej atë që ju e thoni në gjuhën që unë e kuptoj.
Kështu ndodhë edhe nëse komunikojmë me një kompjuter (procesorin e tij), i cili nuk është tjetër pos një makinë e përbërë nga disa miliona transistorë elektronik të cilët ose janë të ndezur ose të fikur në një moment të caktuar. Ata nuk kuptojnë ndonjë gjuhë tjetër përveç kombinimit të gjendjes së këtyre transistorëve e që njihet si gjuha amtare e makinës apo thjeshtë gjuha e makinës.
Gjendjen e këtyre transistorëve ne e paraqesim përmes një kodi dy shifrorë: 0 dhe 1 – të njohur si numra binarë apo kod binar, që interpretohen në formë të impulseve elektrike përmes transistorëve – një transistor për një shifër. Nëse p.sh. ne duam të shkruajmë shkronjën ‘M’, kompjuteri do të gjeneroi një seri me kësi kodesh – 01001101 përmes transistorëve, të cilët ndizen për bitin një dhe fikën për bitin zero (on/off). Bashkësinë prej 8 bitëve – që përfaqësojnë 8 transistorë – e quajmë Bajt (ang. Byte) dhe përdoret për të paraqitur një simbol, qoftë shkronjë apo numër. Nëse ne shkruajmë me tastierë: “Milingona”, kompjuteri, gjegjësisht procesori i tij, përmes këtyre transistorëve do të gjeneroi një seri të këtillë në formë binare:
“01001101 01001001 01001100 01001001 01001110 01000111 01001111 01001110 1000001”.
E njëjta gjë ndodhë nëse ne regjistrojmë zërin tonë apo të ndonjë instrumenti muzikorë. Tingujt, në këtë rast, do të interpretohen në formë binare të përbërë nga 0 dhe 1 në hyrje, e nga ana tjetër këta bita apo këto impulse elektrike, do të interpretohet në valë zanore në dalje. (Kliko mbi foto)
Derisa kjo është mënyra e vetme e funksionimit të një kompjuteri, për ne kjo gjuhë është shumë e vështirë që ta përdorim. Për këtë arsye neve na duhet një përkthyes që të përkthejë mes nesh dhe kompjuterit, gjegjësisht procesorit të tij.
Pikërisht këtu hyjnë në punë gjuhët e programimit.
GJUHËT E PROGRAMIMIT
Ja një shembull i një gjuhe programimi:
print (“Tungjatjeta!”)
Ky është një rresht i shkruar në gjuhën e programimit Python që bën që kompjuteri të paraqes në ekranin tonë fjalën “Tungjatjeta!” (pa thonjëzat).
Për të përmbushur këtë detyrë, kompjuteri ynë ndërmerr me radhë 3 hapa:
- Kodi ynë [kodi burimor (source code)] përkthehet në kod assembler
- Kodi assembler përkthehet në gjuhën e makinës
- Kodi i përfituar në gjuhën e makinës ekzekutohet nga procesori.
Të gjitha programet që ne përdorim si p.sh. sistemi operativ Windows apo programet si Word, Excel, Power Point, madje edhe në ueb si Gmail, facebook, twitter apo kjo faqe ku jeni duke lexuar këtë artikull, janë të shkruara me një nga gjuhët e programimit.
Në formën më të thjeshtë, programet janë një grup me komanda që ne ia japim kompjuterit që ai të kryej një punë të caktuar, ndërsa gjuha të cilën e përdorim për të shkruar atë program – gjegjësisht ato komanda, quhet gjuhë programore.
Për të sqaruar këtë më thjeshtë, themi që një gjuhë programimi është një seri rregullash që përcaktojnë se si duhet të shkruhet një kod (një program) si dhe rregullat e formatimit.
Gjuhët e programimit, që janë me mijëra të tilla, i ndajmë në dy grupe të mëdha, dhe atë në gjuhë të larta dhe gjuhë të ulëta programimi, varësisht se sa afër shfrytëzuesit apo procesorit janë ato.
Gjuhë të ndryshme programimi janë dizajnuar të përdoren për qëllime të ndryshme. Disa janë më të përshtatshme për të bërë programe për desktop, disa të tjera janë më të përshtatshme për të shkruar programe për ueb, ndërsa disa të tjera kanë përparësi në zgjidhjen e problemeve të ndryshme shkencore dhe numerike etj.
GJUHËT E LARTA TË PROGRAMIMIT vs. GJUHËT E ULËTA TË PROGRAMIMIT
Nismëtarët e dizajnimit të kompjuterëve si pajisje që përdorë memorie, e kishin menduar atë si një makinë që duhet të kryej katër detyra të ndryshme:
- Të pranoi të dhëna,
- Të ruaj informata,
- Të përpunoj informata dhe
- Të paraqes rezultatet.
Detyrë e programerëve është që këtë makinë t’a bëjë të shfrytëzueshme duke shkruar programe të veçanta për secilën pajisje të tij veç e veç. Këto programe ne i njohim si drajver (ang. driver) të pajisjes që i vejnë ato në lëvizje.
Gjuhët e larta të programimit, siç janë gjuha Java, PHP, Python etj. janë më afër shfrytëzuesit dhe janë më të lehta për të programuar me to, duke qenë njëkohësisht më komplekse në krahasim me gjuhët e ulëta të programimit siç është Kodi Assembler, Gjuha e Makinës etj. të cilat janë më të thjeshta duke qenë që përbëhen nga vetëm disa komanda të thjeshta, gjegjësisht nga bitat, dhe janë më afër procesorit, mirëpo nuk janë të përshtatshme për të bërë programe komplekse si faqe uebi apo baza të ndryshme të dhënash.
Përderisa gjuhët e larta të programimit përdoren për të bërë programe të ndryshme të cilat ne i përdorim, gjuhët e ulëta të programimit përdoren për të bërë drajverët e pajisjeve harduerike dhe programe të ndryshme për makina industriale.
Programi i shkruar në një nga gjuhët e larta të programimit, ndryshe njihet edhe si Kod Burimor (ang. Source Code), i cili duhet të konvertohet në gjuhën e makinës përmes një Përpiluesi (ang. Compiler), në mënyrë që ai kod të mund të ekzekutohet.
Përpiluesit – që ndryshe mund të quhen edhe si Përkthyes apo Procesor të Gjuhës – janë programe të specializuara të cilat shkruhen përmes gjuhës së makinës.
Ekzistojnë disa lloje operimi të gjuhëve të programimit:
- Përpiluesi (compiler) – përdoret tek gjuhët e larta të programimit, i cili fillimisht e lexon tërë programin që ne e shkruajmë, dhe nëse nuk paraqitet ndonjë gabim (ang. error), e ekzekuton atë duke e bërë të kuptueshme për procesorin. Pra, kodin që ne e shkruajmë në një gjuhë të lartë programimi, Përpiluesi e konverton në kod binar duke përdorë relacionin 1 – shumë, mes instruksioneve të gjuhës së programimit dhe ekzekutimit të instruksioneve të makinës. Përpiluesit përdoren tek gjuhët si C, C++, C#, Java etj.
- Assembler – përdorë një relacion 1 – 1 tek gjuhët e këtij niveli, pra tek gjuhët e nivelit Assembler, siç janë p.sh. Raspberry Pi, GAS etj. Kodi në këtë nivel quhet Kod i Memories (Mnemonic code).
- Interpretuesi (Interpreter) – përdoret tek gjuhët e larta të programimit për të interpretuar sintaksën & fjalët kyçe dhe menjëherë ekzekuton komandat përmes makinës së vet ekzekutuese, pra ekzekutohet rresht pas rreshti. Interpretuesit përdoren tek gjuha e programimit Ruby, Python etj. Për shkak të kësaj, ky është rreth 10 herë më i ngadalshëm se Përpiluesi.
- Ndër-Asembler & Ndër-Përpilues (Cross-Assembler & Cross-Compiler) – E njëjtë me Asembler dhe Përpilues, përveç që mund të përdoret për të krijuar një kod ekzekutues të makinës për arkitektura të ndryshme harduerike. Pra kodi i makinës që del nga Asembleri i një kompjuteri, mund të ekzekutohet edhe nga kompjuterë të tjerë.
Siç pamë më lartë, gjuhët e larta të programimit duhet fillimisht të përkthehen (konvertohen) në gjuhën e makinës, në mënyrë që ato pastaj të mund të ekzekutohen nga procesori. Këtë konvertim e bëjmë përmes përpilimit apo përmes interpretimit. Në vijim mund të shihni dallimin në mes të këtyre dy lloj konvertimeve të kodit tonë në gjuhën e makinës.
Interpretuesi – programin që ne e shkruajmë e përkthen dhe e ekzekuton rresht pas rreshti. Pra, fillimisht e konverton rreshtin e parë dhe e ekzekuton, pastaj e konverton rreshtin e dytë dhe e ekzekuton e kështu me radhë. Përmes kësaj metode, nuk krijohet ndonjë kod i ri përveç kodit burimor, duke e bërë më të efektshëm në shfrytëzimin e memories. Kodi ekzekutohet derisa të haset gabimi i parë dhe pastaj ndalon aty, duke e bërë kështu më të lehtë në gjetjen e gabimeve në kod. Mirëpo, kjo e bën që kjo metodë të jetë më e ngadaltë se metoda e përpilimit.
Përpiluesi – kodi burimorë fillimisht skanohet për ndonjë gabim, e pastaj konvertohet si i tërë në gjuhën e makinës. Merr kohë derisa të analizohet i tërë kodi burimor, mirëpo koha e përgjithshme e ekzekutimit të një programi është shumë më i shpejtë nga metoda paraprake. Kjo metodë e krijon një kod të ri, përveç atij burimorë duke zënë kështu më tepër memorie. Gjetja e gabimeve në kod është më e vështirë, pasi ai gjenerohet vetëm pasi të provohet përpilimi i tërë programit e jo i një rreshti të vetëm si te Interpretuesi.
Kur flitet për programerët sot, fillimisht mendohet për programerët e gjuhëve të larta të programimit, duke qenë që të pakët janë ata që marrin rrugën e mësimit të një gjuhe të ultë programimi. Edhe pse tek ne kjo është e logjikshme, sot në botë gjuhët e ulëta të programimit kanë një pozitë të lakmueshme sa i përket kërkesës së tregut.
Nëse keni diçka për të shtuar rreth kësaj teme apo të plotësoni diçka, ndihuni të lirë të lini ndonjë koment në rrjetat sociale, e po ashtu mund të na shkruani ndonjë e-mail.
Lexo: Gjuhët programuese më të mira për vitin 2020
Lexo: Gjuhët programuese më të mira për vitin 2021
Nëse ky artikull ju ka pëlqyer dhe e vlerësoni, atëherë shpërndajeni atë me të tjerët.
GNU Assembler. GNU është një sistem operativ që i përngjet UNIX-it, ku edhe e merr emrin GNU – GNU’s Not Unix
Tag:gjuhët, larta, programuese, të ulëta, ulët