Page 169 - Demo
P. 169
TEMATIKA 5 ZHVILLIMI I APLIKACIONEVE, SOFTWARE-VE DHE SISTEMEVE kupton konceptin e abstraksionit në lidhje me hardware-t dhe software-t.Shtresa e abstraksionit hardware(Hardware Abstraction Layer: HAL)HAL është një shtresë programimi, që i mundëson sistemit operativ të një kompjuteri të ndërveprojë me një pajisje fizike në një nivel jo të detajuar fizik. Kërkesa ndaj HAL-it bëhet ose nga sistemi operativ, ose nga driver-i i pajisjes fizike. Në secilin rast komunikimi me pajisjen fizike lehtësohet përmes HAL-it, duke ia fshehur programit thirrës karakteristikat fizike të pajisjes hardware. Figura 2 tregon nënsistemin e kamerës, e cila lidhet me kompjuterin dhe përdoret si pajisje hyrëse për të shfaqur në ekran imazhe pamore. Vëmë re se sistemi përbëhet nga pjesa e pavarur nga hardware-i dhe pjesa e varur nga hardware-i. Në pjesën e pavaruar përfshihen të gjitha shërbimet aplikative, si programi që përdoret nga përdoruesi për konfigurime të kamerës, framework-u aplikativ, që shërben si bazë mbështetëse për programin dhe shërbimi i kameras. Në pjesën që varet nga hardware-i, driver-i i pajisjes merr shërbim nga HAL-i dhe ky i fundit merr shërbim nga shtresa fizike e kameras. HAL-i mundëson funksionimin e driver-it të pajisjes në mënyrë shumë më të thjeshtuar se sa po të kishte kontakt të drejtpërdrejtë me shtresën fizike. Sa më e lartë të jetë shtresa e abstraksionit, aq më afër përdoruesit ofrohet shërbimi dhe aq më larg ndodhet përdoruesi ndaj detajeve fizike të pajisjes hardware mbi të cilën ai po vepron.Abstraksioni në nivelin e gjuhëve të programimitGjuhët e programimit në ditët e sotme njihen si të kategorizuara në 3 nivele, bazuar në nivelin e abstraksionit që ofrojnë: nivel i lartë, i mesëm dhe i ulët. Niveli i lartë i abstraksionit nënkupton pavarësi të madhe nga karakteristikat hardware, më shumë e largët nga gjuha makinë dhe më shumë ngjashmëri me gjuhën njerëzore. Le të bëjmë një krahasim shumë të thjeshtë mes gjuhës C dhe gjuhës Python. Për kujtesë, për të deklaruar dhe inicializuar një lloj të dhëne në gjuhën C na nevojitet të përcaktojmë llojin e të dhënës. Udhëzimi në C do të ishte float mesatare=7.52 ; kurse në Python, i njëjti udhëzim do të shprehej si mesatare=7.52Në Python programuesit nuk i duhet të merret me llojin e të dhënës int, float, double, pasi kjo përcaktohet nga karakteristikat e gjuhës, e cila është e një niveli më të lartë se gjuha C. Kujtojmë se lloji i të dhënës i nevojitet përpiluesit për të rezervuar një sasi të caktuar hapësire në kujtesë, dhe programuesi duhet të jetë ndihmues në këtë proces, nëse po programon në C, por nuk është e nevojshme të ketë dijeni për këtë nëse po programon në Python. Figura 3 paraqet një krahasim mbi dallimet mes gjuhës Java (nivel i lartë), gjuhës Assembly (nivel i ulët) dhe kodit në gjuhën makinë (0 dhe 1).Gjuhët e nivelit të lartë janë më të kuptueshme nga njeriu dhe kanë më pak rregulla se gjuhët e nivelit të ulët. Si të tilla, ato kanë nevojë për më shumë shtresa dhe përkthyes për të mbërritur në hardware, ndaj janë më të ngadalta në ekzekutim. Gjuhët e nivelit të ulët kërkojnë programues ekspertë, pasi gjuha ka më pak kuptim, më shumë rregulla, është më e vështirë për t’u bërë debug dhe përdoret për qëllime specifike të zhvillimit të sistemeve operative ose firmware-ve.Fig. 3Nënsistemi i kamerësPjesa e pavarur nga HardwareProgrami i zbatimitKorniza e zbatimitShërbimi i kamerësDriver-i i pajijsjes(kamera)Zbatimi i HAL i kamerësHarware i kamerësPjesa e varur nga HardwareFig. 2Program i nivelit të lartëProgram i nivelit të ulëtKodi në gjuhë makinë167

