Shkenca kompjuterike

Shkenca Kompjuterike merret me bazat teorike të informacionit dhe të llogaritjes, si dhe teknikat e praktike për zbatimin e tyre dhe aplikimin.

**Shkenca kompjuterike** është studimi i themeleve teorike të informacionit dhe përpunimit të informatave, si dhe i teknikave praktike për zbatimin e tyre dhe aplikimin në sistemet kompjuterike. Shpesh përshkruhet edhe si studim sistematik i proceseve algoritmike që krijojnë, përshkruajnë dhe transformojnë informacionin. Sipas Peter J. Denning, pyetja themelore që e preokupon shkencën kompjuterike është, "Çfarë mund të automatizohet me efikasitet?" Shkenca kompjuterike ka shumë nën-fusha; disa, të tilla si grafika kompjuterike, theksojnë llogaritjet e rezultateve të veçanta, ndërsa të tjerat, të tilla si teoria e kompleksitetit kompjuterik, studiojnë veçoritë e problemeve kompjuterike. Fushat tjera, si teoria e gjuhës programuese studiojnë rrugët që shpjegojnë përpunimin e informatave, ndërsa programimi kompjuterik praktikon gjuhë programimi specifike për zgjidhjen e problemeve specifike të përpunimit të informacioneve, dhe interaksioni njeri-kompjuter fokusohet në sfidat që bëjnë kompjuterët dhe përpunimin e informacioneve të përdorshme dhe universalisht të arritshme për njerëzit.

Publiku i përgjithshëm ndonjëherë ngatërron shkencën kompjuterike me profesionet tjera që merren me kompjuterë (të tilla si informatika), apo mendon se ajo lidhet me përvojën e tyre me kompjuterë, e cila zakonisht përfshin veprimtari të tilla si luarja e lojërave, web-shfletimi, dhe shkruarja e teksteve. Megjithatë, fokusi i shkencës kompjuterike është më shumë në të kuptuarit e veçorive të programeve të përdorura për zbatimin e software-it të tillë si lojërat dhe web-shfletuesit, dhe në shfrytëzimin e atyre diturive për të krijuar programe të reja dhe përmirësimin e atyre ekzistuese.

## Algoritmet
Algoritmi është koncepti më fundamental i shkencës kompjuterike.Algoritmi mund të definohet si nje grup i hapave i cili na ndihmon ne zgjidhjen e problemeve të ndryshme. Në jetën e përditshme mund të hasim në shumë algoritme si përshembull algoritmi për gjetjen e një rruge, algoritmi per ndonjë recetë gatimi etj. Mirëpo ne shkencën kompjuterike algoritmi ështe një koncept me i ndërlikuar.
Studimi i algoritmeve ishte temë e matematicientëve, shumë kohë para se te zhvillohej kompjuterika. Një ndër algoritmet më të njohura është algoritmi i Euklidit(algoritmi për gjetjen e pjestuesit më të madh të përbashkët të dy numrave pozitiv). Në momentin që një algoritëm implementohet në një makine, ajo makinë punon me inteligjencën e atij algoritmi. Zhvillimi i mëtejshëm i algoritmeve i hapi rrugë fushës së njohur sot si **Shkencë Kompjuterike**

## Historiku i shkurtër i kompjuterëve
**Abacus**-Është njëra ndër makinat e para llogaritëse,mendohet ti ketë rrënjët në Kinën antike dhe është përdorur ne qytetërimin e hershëm Grek dhe Romak. Është një makinë shumë primitive,përbehet prej rruazave të vendosura në shkopinjë.Me lëvizjen e rruazave para dhe mbrapa,pozicionet e tyre paraqesin vlera të ndryshme. Më shumë shërben si ruajtës i të dhënave.

**Pascaline**-Kjo makinë është zbuluar në shekullin e 17 nga Blaise Pascal.Paskalina është makinë që përbëhet vetëm prej alogritmit të mbledhjes.Pas 50 prototipeve më në fund u publikua në vitin 1645 e dedikuar per *Pierre Seguier*. Paskaline njihet ndryshe si kalkulatori i parë i cili po ashtu u përdor edhe ne zyre. Ideja për këtë makinë i erdhi ne vitin 1642 kur ai ishte vetëm 19 vjet,në kohën kur ai ishte duke ndihmuar babain e tij i cili punonte si komisioner i taksave dhe dëshironte që të ja lehtësonte punën.

**Makinat e Babbage**-Charles Babbage ndërtoi dy makina. Makina e parë e tij quhej Makina e Diferencës e cila ishte makinë që mund të modifikohej për të performuar disa llogaritje. Ndërsa makina tjeter njihej me emrin Makina Analitike të cilën nuk mundi ta pëfundoj sepse nuk u financua. Kjo makinë mund të lexonte instruksione dhe ishte e programueshme. Më vonë Ada Byron publikoi një letër në të cilën tregoi se si makina analitike mund te programohej për llogaritje të ndryshme. Për këtë arsye ajo njihet si programuesja e parë.

** Makina e tabulimit**- Herman Hollerith u inspirua nga ideja e Joseph Jacquard për punimin me kartela të shpuara,të cilat u përdoren në procesin e tabulimit në vitin 1890 në SHBA. Gjithashtu vlen të permendet se është perdorur në Kosovë në vitin 2008 për testin e matures.

**Colossus**- U ndërtua nën vëzhgimin e Tommy Flowers në Angli për të deshifruar mesazhet gjermane gjatë periudhes seLuftes së dyte Botërore. Ndërtimi i kësaj makine mbeti i fshehtë për arsye të sigurisë kombëtare të ushtrisë.

**ENIAC**- U dizajnua nga John Mauchly dhe J. Presper Eckert në universitetin e Pensilvanisë.Ishte e financuar nga ushtria e SHBA. Kjo makinë peshonte më shumë se 27 ton ,kishte madhësi 2.4 metra * 0.9 metra * 30 metra,zinte hapësirë prej 167 metra katror dhe hargjonte 150 kW të energjisë elektrike. Makina ka qenë e programueshme dhe mund të performonte operacione komplekse duke i përfshirë ciklet. Nje mangesi e kësaj makine ishte se merrte shumë kohë (javë) për të performuar një instruksion.

* Nje hap shumë i madh i zhvillimit të kompjuterëve ishte zbulimi i kompjuterëve **Desktop**. Në vitin 1981, IBM prezantuan kompjuterin e parë desktop dhe e quajtën atë me emrin** "Kompjuter Personal" **(PC) software-in e të cilit e zhvilluan kompania Microsoft. Kompjuteri personal ishte një sukses shumë i madh dhe në ditët e sotme mund të thuhet që gjendet në shtepinë e secilit person.*
 
**Macintosh**- Ishte një lloj tjerër kompjuteri personal i dizajnuar dhe zhvilluar nga kompania Apple Inc në krye me Steve Jobs.

## Etimologji
Edhe pse e propozuar për herë të parë në vitin 1956, termi "shkenca kompjuterike" shfaqet në një artikull të vitit 1959 në gazetën “Communications of the ACM” ,  në të cilin Louis Fein argumenton krijimin e një shkolle për Shkenca Kompjuterike analoge ne shkollën e Harvardit për biznes në 1921, duke justifikuar emrin duke argumentuar se, si shkenca e menaxhimit , lënda është aplikuar dhe ndërdisiplinore në natyrë, ndërsa ka karakteristikat tipike të disiplinës akademike.  Përpjekjet e tij dhe ato të të tjerëve si analisti numerik George Forsythe u shpërblehen: universitetet vazhdonin të krijonin programe të tilla, duke filluar me Purdue në vitin 1962. Pavarësisht nga emri i saj, një sasi e konsiderueshme e shkencave kompjuterike nuk përfshin studimin e vetë kompjuterave. Për shkak të kësaj, janë propozuar disa emra alternativë.  Disa departamente të universiteteve kryesore preferojnë termin shkencë informatike, për të theksuar pikërisht këtë ndryshim. Studiuesi danez Peter Naur sugjeroi termin datalogjik(datalogy) për të pasqyruar faktin se disiplina shkencore sillet rreth të dhënave dhe trajtimit të të dhënave, duke mos përfshirë domosdoshmërisht kompjuterat. Institucioni i parë shkencor që ka përdorur këtë term ishte Departamenti i Datalogjisë në Universitetin e Kopenhagës, i themeluar në 1969, ku Peter Naur ishte profesor i parë në datalogji. Termi përdoret kryesisht në vendet skandinave. Një term alternativ, i propozuar gjithashtu nga Nauri, është shkenca e të dhënave(data science) ,kjo është duke u përdorur tani për një fushë të veçantë të analizës së të dhënave, duke përfshirë statistikat dhe bazat e të dhënave.

## Filozofia
Një numër shkencëtarësh kompjuterik kanë argumentuar për dallimin e tre paradigmave të veçanta në shkencat kompjuterike. Peter Wegner argumentoi se ato paradigma janë shkenca, teknologjia dhe matematika. Grupi punues i Peter Denning argumentoi se ato janë teori, abstragim (modelim) dhe dizajn. Amnon H. Eden i përshkroi ato si "paradigmë racionaliste" (që trajton shkencën kompjuterike si një degë të matematikës, e cila është e përhapur në shkencën kompjuterike teorike dhe kryesisht përdor argumente deduktive ), "paradigmë teknokratike" (e cila mund të jetë që gjendet në qasjet inxhinierike, më së shumti në inxhinierinë e softuerit), dhe "paradigma shkencore" (e cila i afrohet objekte kompjuterike nga perspektiva empirike e shkencave natyrore , të identifikueshme në disa degë të inteligjencës artificiale ).

## Fushat e shkencave kompjuterike
Si një disiplinë, shkencat kompjuterike përfshin një sërë temash nga studimet teorike të algoritmave dhe kufijtë e llogaritjes në çështjet praktike të zbatimit të sistemeve informatike në harduer dhe softuer. CSAB , i quajtur më parë Bordi i Akreditimit të Shkencave Kompjuterike - i cili përbëhet nga përfaqësues të Shoqatës për Makinerinë Kompjuterike (ACM) dhe Shoqëria Kompjuterike IEEE (IEEE CS) - identifikon katër fusha që ai i konsideron thelbësore për disiplinën e shkencave kompjuterike: *teoria e llogaritjes* , *algoritmet dhe strukturat e të dhënave* ,*metodologjia e programimit dhe gjuhët* , *elementet kompjuterike* dhe *arkitektura*. Përveç këtyre katër fushave, CSAB gjithashtu identifikon fusha të tilla si: *inxhinieria kompjuterike*, *inteligjenca artificiale*, *rrjetëzimi kompjuterik dhe komunikimi*, *sistemet e bazës së të dhënave*, *llogaritja paralele*, *llogaritja e shpërndarë*, *ndërveprimi njerëzor-kompjuter*, *grafika kompjuterike*, *sistemet operative dhe llogaritja numerike dhe simbolike* duke qenë fusha të rëndësishme të shkencës kompjuterike.
### Shkencat kompjuterike teorike
Shkenca kompjuterike teorike është matematikore dhe abstrakte në frymën, por nxjerr motivimin e saj nga llogaritja praktike dhe e përditshme. Qëllimi i tij është të kuptojë natyrën e llogaritjes dhe, si pasojë e këtij të kuptuarit, të ofrojë metodologji më efikase. Të gjitha studimet që lidhen me konceptet dhe metodat matematikore, logjike dhe formale mund të konsiderohen si shkenca kompjuterike teorike, me kusht që motivimi të nxirret qartë nga fusha e informatikës . 
#### Strukturat e të dhënave dhe algoritmet
Strukturat dhe algoritmet e të dhënave janë studimi i metodave kompjuterike të përdorura dhe efikasiteti i tyre kompjuterik.

#### Teoria e llogaritjes
Sipas Peter Denning , çështja themelore në themel të shkencës kompjuterike është: "Çfarë mund të jetë automatikisht (efikase)?" Teoria e llogaritjes është e përqendruar në përgjigjjen e pyetjeve themelore rreth asaj se çfarë mund të llogaritet dhe çfarë sasie burimesh kërkohet për të kryer këto llogaritje. Në një përpjekje për t'iu përgjigjur pyetjes së parë, teoria e llogaritjes shqyrton cilat probleme kompjuterike janë të zgjidhshme në modele të ndryshme teorike të llogaritjes . Pyetja e dytë është adresuar nga teoria e kompleksitetit kompjuterik , i cili studion kohën dhe hapësirën e shpenzimeve që lidhen me qasje të ndryshme për zgjidhjen e një numri të problemeve kompjuterike.

#### Teoria e informacionit dhe kodimit
Teoria e informacionit lidhet me sasinë e informacionit. Kjo u zhvillua nga Claude Shannon për të gjetur kufizime thelbësore në operacionet e përpunimit të sinjaleve të tilla si kompresimi i të dhënave dhe ruajtja e besueshme dhe komunikimi i të dhënave. Teoria e kodimit është studimi i pronave të kodeve (sistemet për konvertimin e informacionit nga një formë në tjetrën) dhe përshtatshmërinë e tyre për një aplikim specifik. Kodet përdoren për kompresimin e të dhënave , kriptografinë , zbulimin dhe korrigjimin e gabimeve , dhe kohët e fundit edhe për kodimin e rrjetit . Kodet janë studiuar me qëllim të dizajnimit të metodave efikase dhe të besueshme të transmetimit të të dhënave .

#### Teoria e programimit të gjuhës
Teoria e programimit të gjuhës është një degë e shkencave kompjuterike që merret me hartimin, zbatimin, analizën, karakterizimin dhe klasifikimin e gjuhëve të programimit dhe veçoritë e tyre individuale. Ajo bie në disiplinën e shkencës kompjuterike, të dyja varen dhe ndikojnë në matematikë , inxhinierinë e softuerit dhe në linguistikë . Është një fushë kërkimore aktive, me shumë revista të përkushtuara akademike.

#### Metodat formale
Metodat formale janë një lloj i veçantë i teknikës matematikore për specifikimin , zhvillimin dhe verifikimin e softuerëve dhe harduerëve. Përdorimi i metodave formale për dizajnin softuerik dhe hardware është i motivuar nga pritshmëria që, si në disiplina të tjera inxhinierike, kryerja e analizave adekuate matematikore mund të kontribuojë në besueshmërinë dhe qëndrueshmërinë e dizajnit. Ato formojnë një bazë të rëndësishme teorike për inxhinierinë e softuerit, veçanërisht kur përfshihet siguria ose siguria. Metodat formale janë një ndihmesë e dobishme për testimin e softuerit pasi ato ndihmojnë në shmangien e gabimeve dhe gjithashtu mund të japin një kuadër për testimin. Për përdorim industrial, kërkohet mbështetja e mjeteve. Megjithatë, kostoja e lartë e përdorimit të metodave formale nënkupton që zakonisht përdoren vetëm në zhvillimin e sistemeve të integritetit të lartë dhe atyre jetësore , ku siguria është me rëndësi të madhe. Metodat formale përshkruhen më së miri si aplikimi i një shumëllojshmërie të gjerë të bazave teorike të shkencave kompjuterike , në veçanti të llogaritjeve logjike , gjuhëve formale , teoria automatike dhe semantikës së programeve , por gjithashtu sistemet e tipit dhe llojet e të dhënave algjebrike për problemet në specifikimin e softuerëve dhe pajisjeve verifikimi.

### Sistemet Kompjuterike
#### Arkitektura kompjuterike dhe inxhinieri kompjuterike
Arkitektura kompjuterike, ose organizimi kompjuterik digjital, është dizajni konceptual dhe struktura themelore operative e një sistemi kompjuterik. Ai përqendrohet kryesisht në mënyrën me të cilën njësia qendrore e përpunimit vepron nga brenda dhe ruan adresat në kujtesë. Fusha shpesh përfshin disiplina të inxhinierisë kompjuterike dhe inxhinierisë elektrike, përzgjedhjen dhe ndërlidhjen e komponentëve hardwarike për të krijuar kompjuterë që përmbushin qëllimet funksionale, të performancës dhe të kostos.

#### Analiza e performancës kompjuterike 
Analiza e performancës kompjuterike është studimi i punës që rrjedh përmes kompjuterave me qëllimet e përgjithshme të përmirësimit të xhiros , kontrollit të kohës së reagimit , përdorimit të burimeve në mënyrë efikase, eliminimit të pengesave dhe parashikimit të performancës nën ngarkesat e parashikuara të pikut.

#### Sisteme simultane, paralele dhe të shpërndara
Konkurrenca është një term i sistemeve në të cilat ekzekutohen disa llogaritje njëkohësisht dhe potencialisht duke bashkëvepruar me njëri-tjetrin. Një numër i modeleve matematikore janë zhvilluar për llogaritjen e përgjithshme të njëkohshme duke përfshirë rrjetat Petri , procesi i llogaritjes dhe modeli paralel i makinës së rastësishme . Një sistem i shpërndarë shtyn idenë e konkurencës në kompjuterë të shumtë të lidhur përmes një rrjeti. Kompjuterët në të njëjtin sistem të shpërndarë kanë kujtesën e tyre private, dhe shpesh informacioni shkëmbehet mes tyre për të arritur një qëllim të përbashkët.

#### Rrjetet kompjuterike
Kjo degë e shkencave kompjuterike synon të menaxhojë rrjete në mes të kompjuterave në mbarë botën.

#### Siguria kompjuterike dhe kriptografia
Siguria kompjuterike është një degë e teknologjisë kompjuterike me një objektiv të mbrojtjes së informacionit nga qasja, prishja ose modifikimi i paautorizuar, duke ruajtur qasjen dhe përdorshmërinë e sistemit për përdoruesit e saj. Kriptografia është praktika dhe studimi i fshehjes (encryption) dhe deshifrimin (decryption) të informacionit. Kriptografia moderne është kryesisht e lidhur me shkencën kompjuterike, sepse shumë algoritme të enkriptimit dhe dekriptimit bazohen në kompleksitetin e tyre kompjuterik.

#### Bazat e të dhënave
Një bazë të dhënash ka për qëllim të organizojë, ruajë dhe rifitoj sasi të mëdha të të dhënave me lehtësi. Bazat e të dhënave digjitale menaxhohen duke përdorur sistemet e menaxhimit të bazës së të dhënave për të ruajtur, krijuar, mbajtur dhe kërkuar të dhëna, nëpërmjet modeleve të bazës së të dhënave dhe gjuhëve të pyetjeve.

#### Praktikat e informatikës
Praktikat e informatikës (IP) janë një fushë e studimit lidhur me softuerin. Kursi kryesisht mbulon kodimin , konceptet e softuerit dhe të rrjetëzimit. Kjo fushë është e krahasueshme me shkencën kompjuterike, por i mungon konceptet hardware , duke u fokusuar më shumë në konceptet e rrjetëzimit sesa në shkencat kompjuterike. Kjo degë e shkencës së informacionit dhe shkencave kompjuterike fokusohet kryesisht në studimin e përpunimit të informacionit , veçanërisht në lidhje me integrimin e sistemit dhe ndërveprimet njerëzore me makinë dhe të dhëna.

### Aplikacionet kompjuterike
#### Grafika kompjuterike dhe vizualizimi
Grafika kompjuterike është studimi i përmbajtjeve dixhitale vizuale dhe përfshin sintezën dhe manipulimin e të dhënave të imazhit. Studimi është i lidhur me shumë fusha të tjera në fushën e shkencave kompjuterike, duke përfshirë vizionin kompjuterik , përpunimin e imazhit dhe gjeometrinë kompjuterike , dhe është aplikuar shumë në fushat e efekteve speciale dhe videolojra.

#### Ndërveprimi njerëzor-kompjuterik
Hulumtime që zhvillojnë teoritë, parimet dhe udhëzimet për dizajnuesit e ndërfaqeve të përdoruesit, në mënyrë që të krijojnë përvoja të kënaqshme për përdoruesit me pajisjet e tyre desktop, laptopë dhe celularë.

#### Informatikë shkencore
Informatika shkencore (ose shkenca kompjuterike ) është fusha e studimit që ka të bëjë me ndërtimin e modeleve matematikore dhe teknikave sasiore të analizës dhe përdorimit të kompjuterëve për të analizuar dhe zgjidhur problemet shkencore . Në përdorim praktik, është zakonisht aplikimi i simulimit kompjuterik dhe formave të tjera të llogaritjes të problemeve në disiplina të ndryshme shkencore. Informatika shkencore (ose shkenca kompjuterike ) është fusha e studimit që ka të bëjë me ndërtimin e modeleve matematikore dhe teknikave sasiore të analizës dhe përdorimit të kompjuterëve për të analizuar dhe zgjidhur problemet shkencore . Në përdorim praktik, është zakonisht aplikimi i simulimit kompjuterik dhe formave të tjera të llogaritjes të problemeve në disiplina të ndryshme shkencore.

#### Inteligjenca artificiale
Inteligjenca artificiale (AI) synon ose kërkohet të sintetizojë procese të orientuara nga qëllimi, si zgjidhja e problemeve, vendimmarrja, përshtatja mjedisore, mësimi dhe komunikimi që gjenden tek njerëzit dhe kafshët. Nga origjinat e saj në kibernetikë dhe në Konferencën Dartmouth (1956), hulumtimi i inteligjencës artificiale ka qenë domosdoshmërisht ndërdisiplinor duke u mbështetur në fusha të ekspertizës si matematika e aplikuar , logjika simbolike , semiotika , inxhinieri elektrike , filozofia e mendjes , neurofiziologjia dhe  inteligjencës sociale . AI është i lidhur me mendjen robotike , por fusha kryesore e aplikimit praktik ka qenë si një komponent i ngulitur në fushat e zhvillimit të softuerit , të cilat kërkojnë të kuptuarit kompjuterik. Pika fillestare në fund të viteve 1940 ishte pyetja e Alan Turing , "A mund të mendojnë kompjuterët?", Dhe pyetja mbetet në mënyrë efektive pa përgjigje, ndonëse Turingi ende përdoret për të vlerësuar prodhimin kompjuterik në shkallën e inteligjencës njerëzore. Por automatizimi i detyrave vlerësuese dhe parashikuese ka qenë gjithnjë e më i suksesshëm si një zëvendësim për monitorimin dhe ndërhyrjen e njeriut në fusha të aplikimit kompjuterik që përfshin të dhëna komplekse të botës reale.

### Inxhinieria softuerike
Inxhinieria softuerike është studimi i dizajnimit, zbatimit dhe modifikimit të softuerit në mënyrë që të sigurohet se është me cilësi të lartë, të përballueshme, të mirëmbajtshme dhe të shpejtë për t'u ndërtuar. Kjo është një qasje sistematike për hartimin e softuerit, që përfshin aplikimin e praktikave inxhinierike në softuer. Inxhinieria e softuerit merret me organizimin dhe analizimin e softuerit - ai nuk merret vetëm me krijimin ose prodhimin e softuerit të ri, por mirëmbajtjen dhe rregullimin e tij të brendshëm.

## Vështirësitë e mëdha të shkencës kompjuterike
Filozofi i informatikës Bill Rapaport vuri në dukje tre Vështrime të Mëdha të Shkencave Kompjuterike : 
*Vështrimi i Gottfried Wilhelm Leibniz , George Boole , Alan Turing , Claude Shannon dhe Samuel Morse : ka vetëm dy objekte që një kompjuter duhet të merret me qëllim që të përfaqësojë "çdo gjë”.
Të gjitha informatat në lidhje me ndonjë problem të llogaritshëm mund të përfaqësohen duke përdorur vetëm 0 dhe 1 (ose ndonjë çift tjetër bistable që mund të rrokulliset në  lehtësisht , si "on / off", "magnetized / de-magnetized" tensionit / tensionit të ulët ", etj.).
*Vështrimi i Alan Turing- it: ka vetëm pesë veprime që një kompjuter duhet të kryejë për të bërë "çdo gjë".
Çdo algoritëm mund të shprehet në një gjuhë për një kompjuter që përbëhet nga vetëm pesë udhëzime themelore:
*lëviz një vend të majtë;
*lëvizni një vend të djathtë;
*lexoni simbolin në vendin aktual;
*printoni 0 në lokacionin aktual;
*printoni 1 në vendndodhjen aktuale.
*Vështirësia e Corrado Böhm dhe Giuseppe Jacopini : ka vetëm tre mënyra për të kombinuar këto veprime (në ato më komplekse) që nevojiten për të bërë një kompjuter "diçka".
Vetëm tre rregulla nevojiten për të kombinuar çdo grup udhëzimesh themelore në ato më komplekse:
*sekuenca : së pari bëni këtë, atëherë bëni atë;
*përzgjedhja : Nëse një gjë e tillë është e tillë, atëherë mos bëni këtë, përndryshe bëni atë;
*përsëritje : pas kësaj dhe kësaj është rasti ta bëni këtë.

## Interneti
Interneti ështe një rrjet global që përbëhet prej shumë rrjetave kompjuterike të lidhura në mes veti.Me zhvillimin e internetit erdhi ideja e krijimiet te disa sistemeve software-ike të cilat u quajten makina të kërkimit. Disa prej këtyre makinave kerkimore qe njihen edhe sot janë: 
*Chrome
*Hotmail
*Microsoft.
Më tutje u bë minimizimi i makinave llogaritse.Sot kompjuterë të vegjël gjenden në shumë paisje të ndryshme .Përshembull, automjetet e sotme përmbajnë kompjuterë të vegjël që e kanë te implementuar sistemin GPS.Kurse në ditët e sotme kjo teknologji gjendet edhe në telefona,ku telefonia është vetëm një nga shumë aplikacionet qe mund të shfrytëzohen.

## Gjuha e Makines
Gjuha e makines është shumë komplekse për një njeri që ta deshifroj atë për arsye se këto paisje punojnë me anë të shifrave 0 dhe 1. Ku 0 ruan vleren "'false'" ndërsa 1 ruan vleren "*true*". Me kombinimin e shifrave 0 dhe 1 mund të ruhen vlera numerike, tekstuale, fotografi, video, audio e shumë të tjera. Këto simbole kthehen në forma të ndryshme per ta bëre më të lehtë leximin e tyre.

## Programimi
Zhvillimi i sistemeve të ndërlikuara software-ike do të ishte shumë i vështirë nëse do të punonim me shifrat 0 dhe 1.Për këte arsye janë krijuar gjuhë të ndryshme programuse të cilat janë pak a shumë të ngjajshme me gjuhen angleze ,të cilat lejojnë që një algoritëm të shprehet në atë mënyre që të kuptohet edhe nga makina edhe vet njeriu.Gjuhët më te njohur programuese janë:
*Java
*C#
*C++
*C
*Fortran
*Ada ...
-Secila nga këto gjuhë ka rregullat e veta të veçanta, fjalë kyqe të cilat e formojnë semantiken e programit.