Documente Academic
Documente Profesional
Documente Cultură
Cuprins
1Funcționare
2Istoric
3Arhitectura von Neumann
4Circuite digitale (hardware)
5Memorare de date
6Periferice de intrare/ieșire
7Instrucțiuni (software)
o 7.1Programe
o 7.2Cod mașină
o 7.3Limbaje de programare
7.3.1Limbaje de nivel inferior
7.3.2Limbaje de nivel superior
o 7.4Biblioteci și sisteme de operare
8Variante constructive de calculatoare
9Utilizare
o 9.1Rețele de calculatoare și Internetul
10Concepte de viitor
11Vezi și
12Note explicative
13Referințe
14Legături externe
15Bibliografie
Funcționare[modificare | modificare sursă]
Calculatoarele clasice pe care le folosim în prezent efectuează operații logice folosind biți - un flux de
impulsuri electrice sau optice reprezentând formule binare formate din 1 sau 0. Un calculator obișnuit
stochează și procesează informația cu ajutorul tranzistorilor: când tranzistorul permite trecerea
curentului electric, apare un semnal de tip 0, iar, dacă tranzistorul nu permite trecerea curentului
electric, un semnal de tip 1. În orice sarcină a computerului, procesul este același:
un algoritm manipulează o serie de biți, unde fiecare bit este fie 0, fie 1 (input), din care rezultatul este
un nou șir de biți (output).
Istoric[modificare | modificare sursă]
Articol principal: Istoria mașinilor de calcul
Cel mai vechi mecanism cunoscut care se pare că putea funcționa ca o mașină de calculat se
consideră a fi mecanismul din Antikythira, datând din anul 87 î.e.n. și folosit aparent pentru
calcularea mișcărilor planetelor. Tehnologia care a stat la baza acestui mecanism nu este
cunoscută.
Odată cu revigorarea matematicii și a științelor în timpul Renașterii europene au apărut o
succesiune de dispozitive mecanice de calculat, bazate pe principiul ceasornicului, de exemplu
mașina inventată de Blaise Pascal. Tehnica de stocare și citire a datelor pe cartele perforate a
apărut în secolul al XIX-lea. În același secol, Charles Babbage este cel dintâi care proiectează o
mașină de calcul complet programabilă (1837), însă din păcate proiectul său nu va prinde roade, în
parte din cauza limitărilor tehnologice ale vremii.
În prima jumătate a secolului al XX-lea, nevoile de calcul ale comunității științifice erau satisfăcute
de calculatoare analoage, foarte specializate și din ce în ce mai sofisticate.
Perfecționarea electronicii digitale (datorată lui Claude Shannon în anii 1930) a condus la
abandonarea calculatoarelor analogice în favoarea celor digitale (numerice), care modelează
problemele în numere (biți) în loc de semnale electrice sau mecanice. Este greu de precizat care a
fost primul calculator digital; realizări notabile au fost: calculatorul Atanasoff-Berry, mașinile Z ale
germanului Konrad Zuse - de exemplu calculatorul electromecanic Z3, care, deși foarte nepractic, a
fost probabil cel dintâi calculator universal, apoi calculatorul ENIAC cu o arhitectură relativ inflexibilă
care cerea modificări ale cablajelor la fiecare reprogramare, precum și calculatorul secret
britanic Colossus, construit pe bază de lămpi și programabil electronic.
Echipa de proiectare a ENIAC-ului, recunoscând neajunsurile acestuia, a elaborat o altă arhitectură,
mult mai flexibilă, care a ajuns cunoscută sub numele de arhitectura von Neumann sau „arhitectură
cu program memorat“. Aceasta stă la baza aproape tuturor mașinilor de calcul actuale. Primul
sistem construit pe arhitectura von Neumann a fost EDSAC.
În anii 1960 lămpile (tuburile electronice) au fost înlocuite de tranzistori, mult mai eficienți, mai mici,
mai ieftini și mai fiabili, ceea ce a dus la miniaturizarea și ieftinirea calculatoarelor. Din anii 1970,
adoptarea circuitelor integrate a coborât și mai mult prețul și dimensiunea calculatoarelor, permițând
printre altele și apariția calculatoarelor personale de acum.
Lămpile electronice erau caracterizate de câteva limitări severe în folosirea lor pentru
construcția porților logice: erau scumpe, puțin fiabile, ocupau mult spațiu și consumau cantități
mari de curent. Deși erau incredibil de rapide față de releele electromecanice, aveau și ele
totuși o viteză de operare relativ limitată. Astfel că începând din anii 1960 lămpile (tuburile
electronice) au fost înlocuite cu tranzistori, dispozitive ce funcționau asemănător, însă erau mult
mai mici, mai rapide, mai fiabile, mai puțin consumatoare de curent și mult mai ieftine.
Din anii 1960-'70, tranzistorul a fost și el înlocuit cu circuitul integrat, care conținea mai mulți
tranzistori, și firele de interconectare corespunzătoare, pe o singură plăcuță de siliciu
(numită cip). Din anii '70, UAL-urile combinate cu unități de control (UC) au fost produse unitar
ca circuite integrate, numite microprocesoare, sau CPU (Central Processing Unit/unitate de
procesare centrală). În timp, densitatea tranzistorilor din circuitele integrate a crescut incredibil,
de la câteva zeci, în anii 70, până la peste 100 de milioane de tranzistoare pe circuit integrat, la
procesoarele Intel și AMD din anul 2005.
Memorare de date[modificare | modificare sursă]
Lămpile electronice și tranzistorii pot fi folosite și pentru construirea de memorii - așa-numitele
circuite flip-flop sau „basculante bistabile” (CBB), și chiar sunt folosite pentru mici circuite de
memorie de mare viteză, numite „cu acces direct”. Însă puține designuri de calculatoare au
folosit bistabile pentru grosul nevoilor de memorie, memorii de amploare. Primele calculatoare
foloseau tuburi Williams - în esență proiectând puncte pe un ecran TV și citindu-le din nou mai
târziu, sau linii de mercur, în care datele erau depozitate sub formă de unde sonore care
parcurgeau tuburi cu mercur la viteză mică (comparativ cu viteza de operare a mașinii). Aceste
metode destul de neproductive au fost înlocuite cu dispozitive de stocare (memorare) în mediu
purtător magnetic, de exemplu memoria cu miezuri magnetice de formă inelară, în care un
curent electric era folosit pentru a induce un câmp magnetic remanent (dar slab) într-un material
feros, care putea fi citit ulterior, după necesitate pentru a folosi datele. În cele din urmă a apărut
memoria dynamic random access memory , DRAM. DRAM-ul este format din bănci (mulțimi
grupate) de condensatori, componente electrice care pot reține o sarcină electrică pentru o
anumită durată de timp. Scrierea informației într-o astfel de memorie se face prin încărcarea
condensatorilor cu o anumită sarcină electrică, iar citirea prin determinarea („măsurarea”)
sarcinii acestora (dacă este încărcat sau descărcat).
Programe[modificare | modificare sursă]
Programele de calculator sunt listele de instrucțiuni de executat de către un calculator.
Acestea pot număra de la câteva instrucțiuni, care îndeplinesc o sarcină simplă, până la
milioane de instrucțiuni pe program (unele din ele executate repetat), plus tabele de date.
Un calculator personal curent din anul 2008 din categoria sub 1.000 euro este capabil să
execute peste 4 miliarde de instrucțiuni pe secundă. Compunerea sau scrierea acestor
programe este efectuată de către programatori, care pot fi profesioniști, semiprofesioniști
sau amatori, în funcție de temele de rezolvat și mediul de dezvoltare.
În practică, programele nu se mai scriu demult în limbajul mașină al calculatorului. Scrierea
în limbaj-mașină era extrem de laborioasă și erorile se puteau strecura ușor, ceea ce putea
provoca scăderea productivității la programare. Actualmente programele dorite sunt de
obicei descrise/scrise într-un limbaj de programare de nivel mai ridicat (superior), care,
înainte de a putea fi executat, este tradus automat în limbaj-mașină de către programe
specializate (interpretoare și compilatoare), adică într-o „limbă” inteligibilă mașinii de calcul
(computerului).
Unele limbaje de programare sunt foarte strâns legate de limbajul mașină de la baza
calculatorului, ca de ex. limbajul de asamblare, de aceea sunt numite limbaje de „nivel jos”.
La cealaltă extremă se situează limbajele de „nivel înalt”, de ex. C++, Java, Lisp, Visual
Basic ș.a. Acestea oferă programatorilor posibilitatea operării cu concepte foarte abstracte,
complexe, a căror implementare concretă la nivelul de jos nu mai interesează (dacă
interpretorul sau compilatorul funcționează corect). Limbajul ales pentru o anume problemă
depinde în primul rând chiar de natura problemei, de competența profesională a
programatorilor, de disponibilitatea uneltelor de proiectare precum și de bugetul disponibil.
Programele mai sunt numite și software, ele putând fi memorate permanent sau/și doar
memorabile temporar; însă software-ul poate include, pe lângă programele propriu-zise, și
material auxiliar, cum ar fi date grafice, în cazul unui joc pe calculator.
Instrumentele moderne de proiectare software precum și tehnicile de programare ce pun
accentul pe reutilizarea codului (de ex. programarea orientată pe obiecte) fac posibilă
realizarea unor programe complexe, constituite din zeci de milioane de instrucțiuni; de
exemplu browserul Firefox al organizației Mozilla se compune din peste 2 milioane de linii
de cod în limbajul C++. Gestiunea acestor programe complexe face obiectul unei științe
numite ingineria programării.
În cele mai multe calculatoare, instrucțiunile individuale sunt stocate sub formă de cod
mașină, fiecărei instrucțiuni atribuindu-i-se un număr unic (cod de operație sau opcod pe
scurt).[1] Comanda pentru a adăuga două numere împreună ar avea un opcode; comanda
de a le multiplica ar avea un opcod diferit, și așa mai departe. Cele mai simple calculatoare
sunt capabile să efectueze oricare din câteva diferite instrucțiuni; calculatoarele mai
complexe au câteva sute de instrucțiuni din care să aleagă, fiecare cu un cod numeric unic.
Întrucât memoria calculatorului este capabilă să stocheze numere, se pot stoca, de
asemenea, codurile de instruire. Aceasta conduce la faptul important că programe întregi
(care sunt chiar listele cu aceste instrucțiuni) pot fi reprezentate ca liste de numere și pot fi
manipulate în interiorul calculatorului în același mod ca datele numerice. Conceptul
fundamental de a stoca programe în memoria calculatorului alături de datele pe care le
operează e punctul cheie von Neumann, sau al arhitecturii programului de memorat. În
unele cazuri, un calculator poate stoca unele sau toate programele sale în memorie care
este ținută separat de datele cu care operează. Aceasta se numește arhitectura Harvard,
după computerul Harvard Mark I. Calculatoare moderne von Neumann includ unele
trăsături ale arhitecturii Harvard în proiectele lor, cum ar fi cache-ul CPU.
Deși este posibil să se scrie Program (informatică)|programe de calculator]] ca liste lungi de
numere (limbaj mașină), această tehnică fiind folosită pe multe alte calculatoare timpurii,[Note
1]
este extrem de obositor și potențial predispusă la erori în acest sens, în practică, în
special pentru programele mai complicate. În schimb, fiecărei instrucțiuni de bază i se poate
da un nume scurt care indică funcția sa și este ușor de ținut minte - un mnemonic, cum ar fi
ADD, SUB, MULT sau JUMP. Aceste mnemonice sunt colectiv cunoscut sub numele
de limbaj de asamblare al unui computer. Conversia programelor scrise în limbaj de
asamblare în ceva ce computerul poate înțelege de fapt (limbaj mașină) se face de obicei
de către un program de calculator numit de asamblare.[2]
Majoritatea covârșitoare a programelor practice de astăzi sunt scrise în limbaje de nivel
superior sau limbaj de asamblare. Codul sursă este apoi tradus în cod mașină executabil
de utilitare precum compilatoare, asamblări și linkere, cu excepția importantă a programelor
interpretate,[Note 2] care nu sunt traduse în cod mașină. Cu toate acestea, interpretul însuși,
care poate fi văzut ca un executor sau procesor care execută instrucțiunile codului sursă,
constă de obicei din cod mașină executabil direct (generat din ansamblu sau cod sursă de
limbaj la nivel înalt).
Codul mașinii este, prin definiție, cel mai scăzut nivel de programare vizibil programatorului,
dar la nivel intern multe procesoare utilizează microcod sau optimizează și transformă
instrucțiunile codului mașinii în secvențe de micro-op-uri. aAcesta nu este în general
considerat a fi un cod mașină.
Pamela Samuelson a scris despre codul mașină c[ este atât de ilizibil încât Oficiul pentru
Drepturile de Autor din Statele Unite nu poate identifica dacă un anumit program codificat
este o operă originală de autor; codul mașină al unui program poate fi uneori decompilat
pentru a face funcționarea sa mai ușor de înțeles de către oameni.[3]
Profesorul de științe cognitive Douglas Hofstadter a comparat codul mașină cu codul
genetic, spunând că „Citirea unui program scris în limbajul mașinii este vag comparabilă cu
examinarea unei molecule de ADN atom cu atom”.[4]
Variante constructive de
calculatoare[modificare | modificare sursă]
Calculatoarele de astăzi se produc în numeroase forme și prezentări:
Utilizare[modificare | modificare sursă]
Primele calculatoare electronice digitale, fiind foarte mari și scumpe, erau folosite la calcule
științifice complicate, de multe ori pentru scopuri militare. ENIAC-ul a fost proiectat pentru
calculul tirurilor de artilerie, dar a fost folosit și la calculul densităților transversale de
neutroni, în proiectarea bombei cu hidrogen. Multe din supercalculatoarele contemporane
sunt folosite pentru simulări de arme nucleare. Alte calculatoare au fost utilizate
în criptanaliză, de exemplu primul calculator electronic programabil, Colossus.
În ciuda concentrării de la început pe aplicații științifice și militare, calculatoarele au început
repede să fie adoptate și în alte domenii, precum cel al afacerilor. LEO, unul din primele
calculatoare bazate pe arhitectura von Neumann, era folosit la gestiunea stocurilor încă din
anii 1950. O dată cu apariția microprocesoarelor și ieftinirea semnificativă a calculatoarelor,
acestea și-au găsit aplicare în contabilitate, birotică, alcătuirea de previziuni meteo și de
altă natură, în calculele matematice repetitive precum și în calcul tabelar.
În domeniul artelor, calculatoarele sunt întrebuințate pentru generarea și editarea de sunet,
imagini și video. Astăzi aceste activități sunt efectuate aproape exclusiv pe calculator
(computer). De asemenea, industria jocurilor pe calculator este una foarte lucrativă.
Calculatoarele au putut fi folosite pentru comanda mecanismelor (dispozitivelor
electromecanice) din momentul în care au devenit suficient de mici și de ieftine pentru acest
scop. Primele aplicații majore pentru calculatoarele integrate au fost ghidarea
misiunilor Apollo și a rachetelor Minuteman. Astăzi se întâlnesc din ce în ce mai rar
echipamente mecanice care să nu fie comandate într-o formă sau alta de un calculator.
Unele din cele mai complexe asemenea echipamente sunt roboții industriali, mașini mai
mult sau mai puțin asemănătoare omului și aptitudinilor sale. Calculatoarele sunt din ce în
ce mai mult utilizate în domotică, pentru aplicații casnice de genul „dacă cineva e acasă,
computerul deschide televizorul la 7 seara“ sau „reduce căldura noaptea”.
Roboții industriali sunt o prezență obișnuită în producția de masă, însă roboții umanoizi încă
nu au ajuns la nivelul la care sunt portretizați în literatura de anticipație SF și sunt astăzi
doar jucării sau subiecte de cercetare. De asemenea, progresul inteligenței artificiale în
crearea unui calculator cu „inteligență” electronică la nivelul celei omenești a fost până
acum extrem de lent, deși de-a lungul timpului s-au dezvoltat metode care permit
calculatoarelor să îndeplinească destul de bine sarcini despre care inițial se bănuia că ar fi
prin excelență umane, cum ar fi jocurile șah și go, sau citirea scrisului de mână (analogic).