als_Latn lit_Latn mlt_Latn
Je futur nė tė thella moj Drita por mqns po marr njė klasė pėr arkitekturėn e kompjuterit, si dhe pėr gjuhėt e programimit, do mundohem tė tė kthej njė pėrgjigje sa mė tė qartė.
Nė rradhė tė parė ta fillojmė me ndėrtimin e kompjuterit. Shpesh ke dėgjuar se kompjuteri ėshtė vetėm zero dhe njėsha por zerot dhe njėshat janė vetėm pėr njerėzit qė kanė sy dhe dinė tė dallojnė njė vijė tė drejtė (njėshin) nga njė vijė e mbyllur (zeron). Kompjuteri nuk njeh numra por njeh sinjale elektrike. Zerot dhe njėshat (e njerėzve) pėr kompjuterin pėrkthehen nė tensionin qė kalon pėrmejt aparaturave.
0 = nuk ka tension ose ka tension tė ulėt
1 = ka tension tė lartė
Pėr tė mos thėnė "tension i ulėt", "tension i lartė", do pėrdorim numrat 0 dhe 1.
Tani qė kuptojmė tensionet, do vazhdojmė tek zemra/truri i kompjuterit qė ėshtė procesori. Procesori ėshtė ndėrtuar nė njė mėnyrė tė tillė qė njė sinjal, shkakton njė sinjal tjetėr, shkakton njė sinjal tjetėr, e kėshtu me rradhė. Duke bashkuar miliona sinjale sė bashku mund tė krijojmė llogjikėn elementare tė kompjuterit dhe nė tė njėjtėn kohė mund tė ruajmė edhe informacion nė sistemin binar.
Ndryshe nga sistemi dhjetor qė pėrdorin njerėzit, shifrat e kompjuterin mund tė jenė vetėm 0 ose 1. Prandaj pėr tė komunikuar me procesorin duhet tė pėrkthejmė tė gjithė numrat nė 0 dhe 1 dhe tė pėrdorim sistemin binar (dyshifror).
1 shifėr quhet 1 Bit = 0
8 shifra sėbashku quhen 1 Bajt (anglisht=byte) = 00000000
Shifra e parė djathtas tregon 2 nė fuqi 0, e dyta 2^1, 2^2, 2^3..... 2^k
(decimale) - > (binare)
0 = 00000000
1 = 00000001 sepse 2^0 = 1
2 = 00000010 sepse 2^1 = 2
4 = 00000100 sepse (2^2) = 4
8 = 00001000 sepse (2^3) = 8
16 -------- || -----------------
32 -------- || -----------------
64 -------- || -----------------
128 = 10000000 sepse (2^7) = 128
127 = 01111111 sepse (2^6) + (2^5) + (2^4) + (2^3) + (2^2) + (2^1)(2^0) = 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127
3 = 00000011 sepse (2^0) + (2^1) = 1 + 2 = 3
Nqs mund tė prezantojmė numrat nė kėtė mėnyrė, atėherė mund tė bėjmė edhe mbledhje, zbritje, shumėzim, pjestim.
Pėr ti rėnė shkurt, procesori ėshtė i ndarė nė disa pjesė. Njė regjistėr ka komandėn qė duhet tė kryhet, njė pjesė tjetėr kryen aritmetikė elementare (+ - * /), njė rregjistėr pėrdoret pėr tė ruajtur vlerat e plot e plot tė tjera shumė tė komplikuara qė vetėm inxhinierėt e elektronikės mund ti kuptojnė nė brėndėsi.
Mos harro se edhe pse po flasim me zero dhe njėsha, gjithēka kthehet nė sinjale elektronike.
Procesori ka gjuhėn e tij me 0 dhe 1 dhe tė vetmet komanda qė pranon janė po ashtu me 0 dhe 1.
Njė komandė e procesorit mund tė duket kėshtu.
00010110 00100011 00011101 10100110
Kombinimi i ndryshėm i zerove dhe njėshave e bėn procesorin tė dallojė midis mbledhjes, zbritjes, shumėzimit, pjestimit, hedhjen nė memorje, marrjen nga memorja, etj.
Ēdo komandė ėshtė 32 bit ose 4 bajt.
00010110 00100011 00011101 10100110
Kėto 32 bite janė ndarė nė grupe. Grupi i parė i thotė procesorit ēfarė funksioni tė kryej, grupi i dytė i thotė ku tė ruaj rezultatin, grupi i tretė dhe i katėrt mund ti japin dy numra.
a = adresa e memorjes ku eshte hedhur 4
b = adresa e memorjes ku eshte hedhur 5
c = adresa e memorjes ku do rruajme rezultatin 9
Vėr re si ndryshon grupi i parė i shifrave pėr ēdo komandė. Kjo e lejon procesorin tė dallojė midis mbledhjes, zbritjes dhe plot komandave tė tjera. Nė tė vėrtetė gjėrat janė mė tė komplikuara por unė po i thjeshtoj shumė sa pėr tė tė dhėnė njė ide. Numrat i kam dhėnė sa pėr shėmbull dhe nuk janė tė saktė. Pse? Sepse procesorėt modern kanė me qindra komanda tė tilla dhe ėshtė e pamundur pėr njerėzit tė mbajnė mėnd gjithė kombinimet e ndryshme tė zerove dhe njėshave.
Kodi:
00010110 00100011 00011101 10100110
shto/add c a b
00010000 00100011 00011101 10100110
zbrit/sub c a b
00111000 00100011 00011101 10100110
shumėzo c a b
10001000 00100011 00011101 10100110
pjesto c a b
10110001 00100011 00011101 10100110
lexo a b
shkruaj a b
...
....
Grupi i komandave me zero dhe njėsha quhet gjuhe makine (machine language).
00010110 00100011 00011101 10100110
00010000 00100011 00011101 10100110
00111000 00100011 00011101 10100110
10001000 00100011 00011101 10100110
10110001 00100011 00011101 10100110
Pėr tė lehtėsuar punėn pėr njerėzit, komandat e gjuhės sė makinės pėrkthehen nė asembli (assembly) qė ka afėrsisht tė njėjtat funksione me gjuhėn e makinės por shkruhet me shkronja dhe simbole tė gjuhėve njerėzore. Komandat nė asembli janė shkurtime tė fjalėve tė anglishtes.
Kodi:
ld _sfoo,g0
ld _sfoo+4,g4
cmpible g4,g0,L4
mov g4,g0
ld _sfoo,g5
ld 8(g5),g4
ldis 8(g4),g0
ld 12(g4),g4
addo g5,g0,g0
callx (g4)
Shkronjat dhe numrat siē tė thashė nė fillim janė pėr njerėzit. Kompjuteri dhe pjesėt elektronike pranon vetėm sinjale me tension tė ndryshėm. Prandaj domosdo qė komandat e para qė i janė dhėnė procesorit nuk kanė qėnė nė asembli por dikush i ka regjistruar sinjalet nė njė ROM. ROM-i ėshtė memorje e pandryshueshme. Pra ėshtė ndėrtuar nė mėnyrė tė tillė qė gjithnjė pėrmban tė njėjtat komanda. ROM pėrmban sinjalet e nevojshme pėr tė aktivizuar sistemin e marrjes dhe dhėnies qė quhet BIOS (basic input output system), shqiptohet bajos. Kur ti ndez kompjuteri, procesori fillon tė kryej komandat e BIOS qė ėshtė regjistruar nė ROM. BIOS kontrollon pjesėt e tjera tė kompjuterit si hard disku, cd-rom, memorjen etj dhe pastaj lexon hard diskun pėr sektorin boot (boot sector). Aty gjenden komanda pėr sistemin operativ (dos, windows, unix, linux, mac) qė hidhen nė memorje dhe prej memorjes, kryen me rradhė nga procesori.
Nė pėrshkrimin mė lart nuk zura nė gojė zero dhe njėsha sepse ato nuk ekzistojnė. Gjuhėt simbolike janė vetėm pėr njerėzit. Edhe hard disku nuk ka zero dhe njėsha por ka sinjale qė simbolizojnė 0 ose 1. Para se tė ndėrtohej hard disku, kompjuterat pėrdornin kartela me vrimė dhe vrima simbolizonte 1.
Njerėzit nuk duan tė mendojnė pėr sinjale, prandaj i kthejmė sinjalet nė numra. Duke bashkuar 0 dhe 1 formojmė, gjuhėn e makinės. Gjuhėn e makinės e pėrkthejmė nė asembli, fortran, pascal, cobol, basic, c, c++ e plot gjuhė tė tjera. Kjo ėshtė renditja kronologjike por pėr njerėzit ėshtė mė e rėndėsishme drejtimi i kundėrt, pėrkthimi nga gjuhėt moderne nė gjuhėn e makinės.
Asembli kalon tek assembler dhe pėrkthehet nė gjuhėn e makinės.
Tė gjitha gjuhėt kanė pėrpilusin (compiler) e tyre.
Si u krijua pėrpiluesi i parė?
Pėrpiluesi i parė ka qėnė njė seri komandash qė dikush i ka kthyer nė sinjale dhe i ka hedhur nė hard disk nėpėrmjet tastierės. Kėto zero dhe njėsha lexohen nga procesori dhe krijojnė disa zero dhe njėsha tė tjerė. Kėto tė fundit i japin komanda procesorit tė dėrgojė sinjale te monitori dhe monitori ndryshon ngjyrat e pikave (pixels). Formacionet e pikave nė mėnyra tė ndryshme formojnė simbolet e gjuhėve qė pėrdorin njerėzit. Kur ti shtyp njė buton nė tastierė, procesori merr njė seri komandash qė ruajnė shkronjėn tėnde nė memorje dhe pastaj e vizatojnė nė ekran. Grupimi i shkronjave formon gjuhėn dhe gjuhėt ndėrtojnė mbi njėra tjetra.
Nuk ka rėndėsi gjuha por rezultati i zerove dhe njėshave qė shkruhen nė hard disk, disketa, CD dhe sende tė tjera qė ruajnė informacionin. Nė fillim ruheshin me kartela me vrima por tani pėrdoren teknologji tė tjera si fushat elektromagnetike, rezet lazer, etj.
Pasi i krijua njė seri zerosh dhe njėshash pėr asembli, nuk ishte nevoja qė tė shkruhej pėrsėri me zero dhe njėsha.
0101010 -> asembli
asembli -> perpilues per gjuhe tjeter
gjuha tjeter -> gjuhė akoma mė tė mirė
gjuha mė e mirė -> fortran
fortran -> gjuhė tjetėr
gjuha tjetė -> C
C -> C qė tregon dhe gabimet e kodit
C -> C qė tregon gabimet dhe ėshtė mė e shpejtė
C -> C++, mė tė lehtė se C
C -> Java, mė tė lehtė se C
C -> Lisp, PHP, PERL
...
...
Ēfarė bėn pėrpiluesi?
Pėrpiluesi analizon simbolet qė ke hedhur ti nė memorje dhe i kthen komandat nė gjuhėn e makinės (01101010). Pėrpiluesit e mirė tė thonė qė ke dhe gabime nė kod, ose analizojnė kodin pėr mėnyrėn mė tė shpejtė pėr tė kryer komandat. Nuk ėshtė e thėnė qė pėrpiluesi ta kthejė kodin nė gjuhėn e makinės.
C++ mund tė pėrkthehet nė C, C tė pėrkthehet nė Asembli dhe pastaj Asembli tė pėrkthehet nė gjuhėn e makinės.
Asembli mbahet si gjuha mė e ulėt qė mund tė shkruajnė njerėzit dhe asembler ka qėnė programi/pėrpiluesi i parė qė ka pėrkthyer asemblin nė gjuhėn e makinės. Asembleri ka qėnė pėrpiluesi i parė i shkruajtur nė zero dhe njėsha. Gjithēka tjetėr ka vazhduar zinxhir.
Si mund tė krijosh njė pėrpilues/kompilator?
Ti nuk duhet tė shkruash nė 10101 por shumė mirė mund tė shkruash nė C++ dhe Java qė i afrohen mė shumė mėnyrės si llogjikon njeriu.
Ja dhe gjuha qė mund tė krijosh ti pėr profesorin:
------------------------
2 shumėzim 4
6 plus 2
15 minus 8
10 pjestim 5
------------------------
Kėtė mund ta ruash nė njė skedar nė kompjuter (kodi.shqip)
Pastaj hap pėrpiluesin e c++ dhe shkruaj dy rreshta kod qė tė lexojė skedarin dhe tė zėvėndėsojė
"2 shumėzim 4" me cout << 2 * 4 << endl;
"6 plus 2" me cout << 6 + 2 << endl;
"15 minus 8" me cout << 15 - 8 << endl;
"10 pjestim 5" me cout << 10 / 4 << endl;
Pra, ti e shkruajte nė shqip > pėrpiluesi e ktheu nė C++
C++ mund ta kompilosh me pėrpiluesin e C++ pėr ta kthyer nė gjuhėn e makinės (machine language).
Gjuha jonė njeh vetėm 4 komanda por kjo s'ka rėndėsi sepse zerot dhe njėshat nė fund janė njėsoj sikur ne ta kishim shkruar edhe nė ndonjė nga gjuhėt e tjera.
Disa gjuhė tė lejojnė tė shprehesh mė lehtė, disa tė lejojnė tė shprehesh mė shpejt, disa lexohen mė mirė, disa shkruhen mė mirė, disa pėrpilohen mė shpejt, disa kanė funksione matematikore shumė tė sakta, disa kanė funksione tė mira pėr tė hapur skedarė, disa kanė funksione tė mira pėr tė organizuar tekstin dhe fotografitė (html), etj etj.
Besoj se ke njė ide mė tė mirė tani se ēfarė ndodh pas kompjuterit. I shtrydha mirė trutė dhe bėra njė pėrmbledhje tė shumė klasave qė kam marrė dhe vazhdoj tė marr nė universitet. Edhe kėto sa tė thashė unė janė thjeshtuar nė kulm se ka shumė gjėra tė tjera qė dhe unė nuk i kuptoj mirė. Shpresoj tu jem pėrgjigjur tė gjitha pyetjeve qė ke shtruar por mos nguro po ke paqartėsira.
als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn eng_Latn als_Latn als_Latn lim_Latn unk als_Latn als_Latn als_Latn als_Latn unk unk unk als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn unk als_Latn als_Latn unk als_Latn als_Latn als_Latn als_Latn als_Latn nya_Latn unk rus_Cyrl unk vec_Latn unk hun_Latn unk hrv_Latn unk nso_Latn mos_Latn unk unk als_Latn unk unk unk unk unk als_Latn nya_Latn wol_Latn wol_Latn spa_Latn deu_Latn wol_Latn deu_Latn deu_Latn deu_Latn deu_Latn spa_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn tpi_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn lit_Latn vec_Latn kab_Latn unk unk lit_Latn als_Latn als_Latn als_Latn als_Latn als_Latn als_Latn unk als_Latn fra_Latn swe_Latn hrv_Latn unk als_Latn als_Latn als_Latn fra_Latn sot_Latn sot_Latn als_Latn als_Latn als_Latn als_Latn als_Latn