miercuri, 8 ianuarie 2014

Tragedia monedei euro

Zona euro aproape de colaps?


             Criza din zona euro se accentueaza, dupa ce Eurostat a publicat ultimele date statistice. Astfel, datoria guvernamentala din zona euro, ce cuprinde 17 tari, a crescut pana la nivelul de 92,2% din produsul intern brut, in primul trimestru din 2013, cel mai mare din istoria regiunii.
Datoria economiei euro a urcat de la 90,6% in trimestrul anterior din PIB si 88,2% din PIB in aceeasi perioada a anului trecut, potrivit International Business Times.Intre timp, datoria combinata a celor 27 de state din UE a crescut pana la valoarea de 85,9% din PIB in primul trimestru din 2013, de la 85,2% in trimestrul patru din 2012 si 83,3% in acelasi trimestru al anului trecut, conform datelor publicate de biroul de statistica al UE, Eurostat.
                Grecia, Irlanda, Belgia, Spania si Portugalia au avut cele mai mari probleme in controlarea datoriei publice in crestere, in timp ce Germania si-a diminuat datoria foarte putin pana la 81,2% in primul trimestru fata de 81,9% in ultimul trimestru 2012.
                Rata somajului in randul tinerilor se apropie de 60% in Grecia si Spania, cele mai vulnerabile tari din zona euro. Membri non-G-20, inclusiv SUA, au declarat ca reducerea somajului ar trebui sa fie prima prioritate a blocului economic european.
                In schimb, economistii estimeaza ca nivelul somajului din tarile din zona euro este asteptat sa creasca, dar sfarsitul recesiunii nu poate fi prea departe.
Spania si Grecia vor continua sa lupte pentru crearea locurilor de munca, insa rata somajului din aceste doua tari va ramane peste 27%, chiar si in anul 2015. Potrivit datelor Eurostat, datoria publica a Greciei este in prezent de 160,5% din PIB, iar a Spaniei se ridica la 88,2% din PIB. Rata generala a somajului in zona euro din luna mai 2013 a fost de 12,2% fata de 12,1% in aprilie, ceea ce inseamna ca aproximativ 19,3 milioane de oameni sunt fara locuri de munca in regiune.
                Cele mai scazute rate ale somajului au fost inregistrate in Austria (4,7%), Germania (5,3%) si Luxemburg (5,7%).


luni, 6 ianuarie 2014

Dispozitive periferice de intrare si de iesire

Dispozitivele periferice de intrare au rolul de a permite introducerea datelor în calculator.
1. Tastatura unui calculator este asemănătoare cu cea a unei maşini de scris obişnuite şi are rolul de a permite introducerea datelor în calculator prin apăsarea tastelor. Conţine trei categorii mari de taste:
a) Tastele alfanumerice 
b) Tastele funcţionale : F1..F12
c) Tastele speciale :Esc,Tab,Ctrl,Enter,etc
2. Mouse-ul – este dispozitivul ce controlează mişcarea cursorului pe ecranul monitorului şi permite selectarea sau activarea unor obiecte de pe ecran prin acţionarea unor butoane. În general mouse-ul este format din: carcasă, bilă, butoane şi circuite electrice.
3. Trackball – dispozitiv de indicare asemănător mouse-ului. Practic este un mouse răsturnat utilizat în special la calculatoarele portabile. Mişcarea cursorului serealizează prin rotaţia bilei.
4. Creion optic (light pen) – un dispozitiv asemănător unui creion ce are în vârf un senzor optic.
5. Tableta grafică (graphics tablet) – dispozitiv ce permite introducerea facilă a desenelor şi schiţelor. Este alcătuită dintr-un creion cu vârf electronic şi o plăcuţă electronică, capabilă să detecteze mişcările creionului şi să le transmită calculatorului.
6. Scanner – dispozitiv ce permite digitizarea imaginilor şi introducerea lor în
calculator.
7. Joystick
8. Microfon
9. Camera video, aparat de fotografiat digital
10. GIS (Georaphic Information System) – permite introducerea de date geografice
preluate, în general, de la sateliţi.


 Dispozitivele periferice de ieşire permit extragerea informaţiilor dintr-un sistem de
calcul.
1. Monitorul – permite vizualizarea pe ecran a rezultatelor execuţiei programelor.
2. Imprimanta – este dispozitivul ce realizează afişarea informaţiilor pe hârtie.
3. Plotter – dispozitiv asemănător imprimantei dar hârtia poate fi parcursă în ambele
sensuri, acceptă formate mari de hârtie şi precizia desenelor este foarte mare. Este folosită
pentru schiţe, grafice, desene etc.
4. Difuzor – dispozitiv de ieşire audio.
 





Memoria sistemelor de calcul


În cadrul unui sistem de calcul memoria ocupă un loc important reprezentând „depozitul de informații” (date și program) al acestuia. Există două arhitecturi consacrate în ceea ce privește organizarea sistemului de memorie: von Neumann și Harvard. În cazul arhitecturii von Neumann memoria este văzută ca un tot unitar în care se află atât programele cât și datele. În cazul arhitecturii Harvard memoria este împărțită în două părți distincte, memorie program și memorie de date.
Sistemele de calcul de uz general actuale (sistemele desktop, serverele etc.) au o organizare de von Neumann în timp ce sistemele dedicate de tip embedded au o organizare de tip Harvard. Arhitectura von Neumann este specifică sistemelor de calcul de uz general datorită flexibilității care o oferă permițând utilizarea memoriei în funcție de scopul sau de funcționalitatea dorită la un moment de timp dat. Sistemele embedded având o funcționalitate fixă și fiind supuse unor restricții în ceea ce privește modul de funcționare (consum redus, cost redus, un număr mic de circuite componente) exploatează mult mai bine arhitectura Harvard.

Sistemul de memorie constă din mai multe subsisteme, cu capacități diferite și timpi de acces diferiți. Datele și programele sunt mutate dinamic dintr-o zonă de memorie în alta. Fluxul este controlat de către programator, de sistemul de operare, de hardware sau de către o combinație a tuturor acestor factori.
Există mai multe tipuri de memorie, cu diverse viteze și costuri pe bit.[1] Memoria este ierarhizată cu scopul de a realiza transferuri de date între procesor și memorie cu o viteză cât mai apropiată de cea a procesorului. În general, transferul de date are loc doar între niveluri adiacente ale ierarhiei.
Întrucât organizarea memoriei bazată pe localitatea programelor oferă valori bune pentru raportul cost/performanță, ideea este larg folosită în noile microprocesoare. Trebuie remarcat cǎ ierarhia memoriei pentru aceste sisteme are un număr mai mare de nivele decât modelele anterioare. Memoria poate fi ierarhizată după mai multe criterii:
  • metoda de accesare a informației (memorii RAM - cu acces aleatoriu)
  • timpul de acces - ca timp de întârziere între comandă și prelucrarea efectivă a informației
Timpul de acces este mai redus către nivelurile superioare și mai mare spre nivelurile inferioare.
Ierarhia memoriei are un numǎr de cel puțin 5 niveluri:
                                   
  • Nivelul 0: Registre
  • Nivelul 1: On-chip-cache
  • Nivelul 2: On-board-cache
  • Nivelul 3: Memoria principală
  • Nivelul 4: Memoria secundară
Principiul localității programelor este valabil pentru orice tip de referire la memorie. Totuși, diferitele niveluri ale ierarhiei necesitǎ modalitǎți diferite de manipulare a instrucțiunilor, datelor și informației în scopul gestionǎrii memoriei.
Un prim exemplu de ierarhizare a memoriei îl constituie împărțirea memoriei pe două niveluri: memorie principală (memorie cu care UCP lucrează în mod direct) și memorie secundară (memorie accesibilă prin intermediul unui dispozitiv de control suplimentar).
Apariția celui de al doilea nivel de memorie a fost argumentată de rațiuni economice și practice. Memoria primară este formată din circuite electrice care nu permit stocarea unor mari cantități de informații și care nu permit întotdeauna stocarea informațiilor în absența alimentării cu energie electrică. În schimb, memoria principală oferă un timp de acces foarte mic. Spre deosebire de aceasta, memoria secundară este formată din dispozitive de stocare magnetice sau magneto-optice, cu un timp de acces mai ridicat dar cu posibilități de stocare de mari dimensiuni și cu facilități de păstrare a datelor și în absența alimentării cu energie electrică.
Memoriile care nu sunt capabile să rețină date în absența alimentării cu energie electrică se numesc volatile, termenul opus fiind de non-volatile.
Funcționarea unui sistem de calcul cu o arhitectură ierarhizată a sistemului de memorie se bazează pe ideea de păstrare a informațiilor într-un mediu de stocare de mare capacitate (memorie secundară), cu un timp de acces mare dar cu proprietăți non-volatile. În momentul utilizării informațiilor de către UCP acestea sunt aduse în memoria principală pentru o accesare mult mai rapidă. Numai informațiile care sunt utilizate la un moment de timp dat de către UCP sunt prezente în memoria principală, fragmente de program și date. În cazul necesității aducerii unor noi informații în memoria principală există posibilitatea descărcării altor informații care nu mai sunt utilizate pentru a face loc acestora (capacitatea memoriei principală este mult mai mică decât a cea a memoriei secundare).
În sistemele de calcul actuale există și alte niveluri intermediare în sistemul de ierarhizare a memoriei. Astfel, pentru a accelera și mai mult accesul la informații a UCP se utilizează unul sau mai multe nivele de memorie cache (nivelul 1 - on-chip cache si nivelul 2 – on-board cache). Memoria cache este implementată la nivel de UCP sau de sistem prin intermediul unor circuite de memorie electrice cu timp de acces foarte mic (mult mai mic decât al circuitelor care formează memoria principală) și care intermediază accesul la informații a UCP. Cu cât timpul de acces a unui circuit de memorie este mai mic cu atât prețul pe unitate de stocare este mai mare și de aceea nu se pune problema utilizării unor circuite extrem de rapide la construirea memoriei principale nefiind rezonabil din punct de vedere economic; aceste circuite pot fi folosite în schimb la memoria cache, aceasta are dimensiuni mult mai mici decât memoria principală ne-conținând decât informații necesare imediat UCP-ului.
Registrele de uz general constituie nivelul 0 al memoriei pentru date (incluzând adresele programului) și registrul instrucțiunii este nivelul 0 al memoriei pentru cod.
Pe lângă nivelul suplimentar de memorie cache, în sistemul de ierarhizare a memoriei mai poate apare și un nivel de stocare de foarte mare capacitate, extern sistemului de calcul, și care poate fi privit ca o suplimentare a memoriei secundare dar cu parametri de acces mult inferiori.
Informația care nu este imediat necesară UCP (programe care nu sunt gata de rulare sau subspații de adresare care nu sunt necesare în faza curentă) este memorata în dispozitive cu mediu magnetic de stocare, care oferă un mare volum de memorare la costuri unitare mici, dar cu timpi de acces cu cel puțin trei ordine de mărime mai mari decît cei ai memoriei primare. 
În cazul sistemelor embedded memoria nu este ierarhizată din considerente economice și de complexitate a sistemelor. Singurele diferențieri între unitățile de memorie se fac în ceea ce privește funcționalitate acestora: memorie program, memorie de date și în ceea ce privește localizarea acestora: memorie internă (în interiorul microcontroler-ului), memorie externă (sistem). Toate aceste unități de memorie se află ierarhic la nivel de memorie principală. Implementarea fizică diferă între memoria program și memoria de date, cele două tipuri de memorie fiind implementate cu circuite electrice de memorie volatilă – circuite de memorie RAM (memoria de date) și circuite de memorie non-volatile – circuite de memorie ROM (memoria program). Utilizarea memoriei de tip ROM, în cazul memoriei program, asigură non-volatilitatea informațiilor în lipsa memoriei secundare.

Comparație între tipuri de memorie

MemorieFacilități
FlashCost scăzut, densitate înaltă, arhitectura permite viteze mari, putere scăzută, fiabilitate înaltă.
ROMCost scăzut, densitate înaltă, timp de scriere crescut, potrivită pentru producție
pe scară largă cu cod stabil.
SRAMCost mare generat de densitatea scazută, cea mai mare viteză, putere mare.
EPROMDensitate înaltă, necesită UV pentru ștergere.
EEPROMCost mai mare, densitatea cea mai scăzută, fiabilitate mai mica. Se șterge electric.
DRAMCost scăzut, densitate înaltă, viteză mare, putere mare.











Coduri detectoare si corectoare de erori. Coduri Hamming

În domeniul compresiei de date (considerata în teoria codarii ca si ”codarea sursei”) codarea s-a
facut în scopul reducerii dimensiunii reprezentarii, presupunând un canal de comunicatie ideal, fara
pierderi. În cele ce urmeaza vom aborda pe scurt o problema diferita, si anume codarea în scopul
detectiei si eventual corectiei erorilor ce pot apare pe un canal de comunicatie real, cu erori
(considerata în teoria codarii ca si ”codarea canalului”).

În acest al doilea caz este evident ca, pentru a obtine detectie si corectie de erori, trebuie sa
încarcam suplimentar fluxul cu biti dedicati acestui lucru, având de a face cu o crestere a
dimensiunii reprezentarii (trebuie platit un pret...). În timp ce la compresia datelor se elimina cât
mai mult posibil redundanta, codurile corectoare adauga acel nivel de redundanta necesar pentru a
transmite datele în mod eficient si cu fidelitate pe un canal cu zgomot (cu erori).


  •  Distanta Hamming 

 Pe lânga distantele prezentate într-un material anterior, o distanta de un interes deosebit în problema
noastra este distanta Hamming, numita astfel dupa Richard Hamming, cel care a introdus-o în 1950.
Distanta Hamming între doi vectori de dimensiuni egale este data de numarul de pozitii în care
acestia difera. Ea masoara astfel numarul de schimbari care trebuie facute într-un vector pentru a îl
obtine pe celalalt, sau reformulat numarul de erori care transforma un vector în celalalt.


  • Exemple: 

vector 1 codare 126359 01101011
vector 2 notate 226389 01001110
distanta Hamming 3 2 3

Desi definirea este generala, în cele ce urmeaza von considera doar cazul vectorilor cu elemente
binare, fiind vorba de fluxuri de biti transmise pe canalul de comunicatie. În acest caz distanta este
data de numarul de 1 din rezultatul obtinut prin XOR.

Pentru început vom considera doar cazul simplu al erorilor singulare - adica avem un singur bit
eronat.

Sa consideram urmatoarea solutie simpla de codare – fiecare bit este codat prin repetarea sa de doua
ori. Introducem astfel în mod evident o redundanta care însa ne va permite sa detectam erori
singulare.

Daca la receptie obtinem coduri 00 respectiv 11 am receptionat corect 0 respectiv 1 iar daca
obtinem 01 sau 10 am detectat o eroare singulara (fara a putea decide însa nimic în sensul corectiei
ei).


  • Exemplu: 

mesaj initial: 0.1.0.0.1.0.1.1.0.1
mesaj codat: 00.11.00.00.11.00.11.11.00.11
mesaj receptionat cu eroare: 00.11.00.00.10.00.11.11.00.11 => detectie de eroare

Remarcam faptul ca între oricare doua ”cuvinte de cod” valide avem o distanta Hamming 2.

  • Exemplu: 
mesaj initial: 0.1.0.0.1.0.1.1.0.1 
mesaj codat: 000.111.000.000.111.000.111.111.000.111 
mesaj receptionat cu eroare: 000.101.000.000.111.000.111.111.001.111 
mesaj corectat: 000.111.000.000.111.000.111.111.000.111 
 => detectie si corectie de erori singulare 
Remarcam faptul ca între oricare doua ”cuvinte de cod” valide avem o distanta Hamming 3.

Din exemplele anterioare constatam ca, daca distanta Hamming între oricare cuvinte de cod valide 
este 2, putem detecta erori singulare dar nu le putem corecta - nu stim care cod valid aflat la distanta 
1 este cel corect. Daca distanta Hamming între oricare cuvinte de cod valide este 3 putem detecta 
erori singulare si putem corecta înspre codul valid aflat la distanta 1 (remarcam faptul ca, în acest 
caz, putem detecta chiar erori duble ! – fara însa a le putea corecta). 
Daca scopul este doar de a detecta erori se pot folosi si alte solutii cum ar fi simpli biti de paritate, 
sume de control, coduri ciclice de tip CRC, functii hash criptografice, etc. 

  •  Codul Hamming (7,4) 
Unul din cele mai cunoscute coduri detectoare si corectare de erori singulare este codul numit 
Hamming (7,4). Acesta notatie indica faptul ca avem un cod de 7 biti din care 4 sunt biti de date 
independenti (restul fiind biti redundanti, reprezentând paritatea a diferite combinatii a bitilor de 
date). Codul contine deci 4 biti de date d1, d2, d3, d4 si 3 biti de paritate p1, p2, p3. Bitii de paritate 
sunt calculati astfel: 
p1 sumeaza d1, d2, d4 
p2 sumeaza d1, d3, d4 
p3 sumeaza d2, d3, d4 
iar organizarea bitilor în cuvântul de cod este urmatoarea: 
p1 p2 d1 p3 d2 d3 d4 

Coduri de bare

Codul de bare este o reprezentare de date codificată (cifrată), destinată a fi citită pe cale optică. Codurile de bare sunt folosite în multe domenii, îndeosebi industriale.

Un cod de date are aspectul unui șir de bare negre de diverse grosimi pe un fundal alb. În general fiecare cifră sau literă se reprezintă printr-o anumită combinație de 1 sau mai multe bare. Există mai multe formate (sisteme) de coduri de bare.
Codurile de bare sunt citite și decodate cu ajutorul unor scanere speciale. Acestea măsoară reflexia luminii, interpretează codurile drept cifre și litere și trimit acestea unui calculator sau altui dispozitiv de gestionare a datelor. Scanerele actuale recunosc mai multe formate.
Setul de simboluri utilizate este în general restrâns (cuprinde de obicei literele, cifrele și câteva semne speciale), dar sistemele de alcătuire (formatele) codurilor de bare sunt foarte variate. Multe coduri de bare constau în bare verticale (paralele cu axa Y), după diverse formate. Lungimea codului de bare (pe axa X) depinde de cantitatea de date ce trebuie reprezentată.
Toate codurile de bare dispun de un caracter special de start/stop ce permite citirea atât de la stânga la dreapta, cât și de la dreapta la stânga. Prin convenție caracterul din stânga este considerat caracterul de start și caracterul din dreapta caracterul de stop.
Codurile de bare au fost introduse deoarece mașinile (calculatoarele) în general nu citesc cu ușurință reprezentarea grafică normală a cifrelor și literelor; pentru aceasta s-a dezvoltat domeniul specializat numit „Recunoașterea optică a caracterelor” , care încă mai are puncte slabe.
De-a lungul anilor au fost dezvoltate un însemnat număr de standarde și formate.

Cum functioneaza un cod de bare?
    Fiecare caracter este reprezentat de o secventa de linii mai inguste sau mai groase.

coduri de bare

    Un cititor de coduri de bare foloseste un senzor optic pentru a converti codul de bare intr-un impuls electric pe masura ce fascicolul trece pe deasupra codului.  Apoi cititorul masoara grosimile relative alte liniilor si spatiilor intalnite, decodifica aceste secvente, le transforma inapoi in caractere si le transmite la computer sau la un terminal portabil.
coduri de bare     Fiecare tip de cod de bare incepe cu un caracter special de start si se termina cu un caracter special de stop. Aceste caractere ajuta cititorul sa detecteze codul de bare si sa-si dea seama daca este scanat de la cap la coada sau invers.
     Unele coduri de bare pot sa contina caractere de control pozitionate chiar inainte de caracterul de stop. Caracterul de control este calculat cand codul de bare este imprimat aplicandu-se o formula asupra caracterelor continute de codul de bare. Cititorul in momentul citirii aplica aceeasi formula si compara rezultatul cu caracterul de control. Daca cele doua valori nu sunt identice, cititorul presupune ca este ceva gresit si reia scanarea.
     Sunt cateva tipuri de coduri de bare, fiecare cu un format propriu de linii si spatii:


  • codul UPC folosit pentru produsele ambalate individual este un cod alfa-numeric;
  • codul Interleaved 2 of 5;
  • codul Code 39 include litere mari si cateva simboluri;
  • codul Code 128 include toate caracterele printabile si neprintabile ASCII.
    Ce este un cod de bare 2-D?
         Simbolurile bidimensionale sunt de obicei formatele patrate sau rectangulare care codeaza datele in doua dimensiuni.   Ele se impart in general in doua categorii:  'Stacked barcodes' sunt realizate printr-o suprapunere repetata si pot fi citite de cititoare de coduri de bare 2 D, speciale sau de unele cititoare CCD sau laser ajutate de un software special de decodificare.  'Matrix Codes' sunt construite pe o matrice 2-D; ele sunt de obicei mai compacte decat codurile "Stacked barcodes" si pot fi citite doar de cititoarele de coduri de bare 2-D.
         Avantajul principal al codurilor de bare 2-D este posibilitatea de a coda o cantitate mare de informatii intr-un cod mic.  Limita de informatie codificata pentru codurile de bare unidimensionale depinde de mai multi factori, dar 20-25 de caractere este maximul; codurile de bare 2-D pot codifica de la 100 de caractere pana la 2000.
         Cel mai cunoscut cod de bare 2-D este MaxiCode si este utilizat cel mai mult de serviciile postale.  Alte doua tipuri de coduri de bare mai raspandite sunt: PDF-417 si DataMatrix.







  • Teoria informației

    Teoria informației (a nu se confunda cu informatica) este o ramură a matematicii aplicate si a ingineriei electrice care se ocupă cu cuantificarea informației. La începuturi teoria informației s-a dezvoltat în direcția găsirii unor limite fundamentale ale compresiei datelor și comunicațiilor de date. Apoi, cu timpul, teoria informației s-a lărgit, găsind aplicații în multe alte domenii, inclusiv neurobiologie , evoluție , genetică, ecologie, termodinamică , calculatoare cuantice, detecția plagiatelor și alte discipline care implică analiza datelor și exploatare de date (data mining) .
    O importantă măsură în teoria informației este entropia informațională, mărime de regulă exprimată prin numărul mediu de biți necesar pentru stocarea sau comunicarea respectivei informații. Intuitiv, entropia cuantifică nivelul de incertitudine implicat de o variabilă aleatoare. De exemplu, o aruncare de monedă va avea entropie informațională mai mică decât o aruncare cu zarul.
    Printre aplicațiile teoriei informației se numără compresia datelor fără pierderi (de exemplu algoritmul de compresie ZIP), cea cu pierderi (de exemplu MP3) și codificarea canalelor. Acest domeniu se află la limita mai multor domenii: matematică, statistică, informatică, fizică, neurobiologie și inginerie electrică. Impactul său a fost crucial pentru succesulmisiunilor Voyager, inventarea CD-ului, dezvoltarea Internetului, studiile moderne ale lingvisticii și percepției umane, înțelegerii găurilor negre, și multor altor domenii.
    Mare parte din matematica din spatele teoriei informației cu evenimente de probabilități diferite a fost dezvoltată pentru domeniul termodinamicii de către Ludwig Boltzmann și J. Willard Gibbs.
    În lucrarea revoluționară a lui Shannon, elaborată în cea mai mare parte la Laboratoarele Bell până în 1944, el a introdus pentru prima oară un model calitativ și cantitativ al comunicației ca proces statistic ce stă la baza teoriei informației, deschizând cu propoziția:
    "Problema fundamentală a comunicațiilor este aceea a reproducerii într-un punct, fie aproximativ, fie cu exactitate, a unui mesaj ales la un alt punct."
    În această lucrare au fost definite următoarele idei:
    • Entropia informațională și redundanța unei surse, și relevanța acesteia, prin teorema codificării sursei;
    • Informația mutuală și capacitatea unui canal de comunicație afectat de zgomot, inclusiv promisiunea comunicației fără zgomote dată de Teorema codificării canalului zgomotos;
    • Rezultatul practic al legii Shannon-Hartley pentru capacitatea unui canal gaussian;
    • Bitul — o nouă modalitate de a vedea unitatea fundamentală de informație.
    Contribuții la dezvoltarea teoriei informației au adus Norbert Wiener (din 1948), Alexander Hincin (ru) (1953), Andrei Kolmogorov (1956). Printre cercetători români cu contribuții în acest domeniu se numără: Octav Onicescu, Silviu Guiașu etc.