Documente Academic
Documente Profesional
Documente Cultură
http://www.cdsd.ro/cursuri.html
constructiicdsd@gmail.com
Noiuni fundamentale
1.1. Definiii
Informaia reprezint un mesaj (de orice natur) care aduce o precizare ntr-o problem ce
comport un anumit grad de incertitudine.
Boar B.H., The Art of Strategic Planning for Information Technologies, 2nd edition, John W iley, 2001
Noiuni fundamentale
________________________________________________________________
Datele n sine nu au semnificaie. Atunci cnd datele sunt interpretate de ctre un anumit
sistem de prelucrare, ele devin informaie.
Algoritmul este un sistem de reguli care transform informaia iniial n una final, trecnd
printr-un ir de informaii intermediare.
Algoritmul se caracterizeaz prin:
1. Generalitate rezolv toate problemele din clasa respectiv de probleme;
2. Finitudine numrul de transformri intermediare aplicate informaiei iniiale, n
scopul de a obine informaia final, este finit;
3. Realizabilitate (efectivitate) - exist posibilitatea efecturii operaiilor prevzute n
instruciunile algoritmului;
4. Claritate se caracterizeaz printr-o descriere precis, cu specificarea riguroas i
fr ambiguiti a aciunilor care urmeaz s se execute;
5. Automatism - algoritmul poate fi aplicat fr ca instruciunile sale s cear un efort
de gndire deosebit; utilizatorul poate executa n mod mecanic operaiile simple
indicate.
Calculatorul reprezint un ansamblu complex de echipamente electronice care, pe baza unor
date de intrare i a unor programe furnizate i elaborate de om, genereaz la ieire informaii. El
este n acelai timp un mijloc de prelucrare automat a informaiilor, prelucrndu-le sub o
form cuantificat i rezolvnd problemele n conformitate cu anumii algoritmi.
Componentele fizice care alctuiesc un calculator reprezint hardware-ul. Programele care i
precizeaz calculatorului ce s fac alctuiesc software-ul..+peopleware
Observatie: Peopleware este un termen utilizat pentru a desemna un al treilea aspect de baz al
tehnologiei informatice, celelalte dou aspecte fiind hardware i software. Peopleware [Con 01]
se refer la acele aspecte care au legatur cu rolul oamenilor n dezvoltarea sau utilizarea de
software de calculator i sisteme hardware, inclusiv aspecte cum ar fi productivitatea
dezvoltatorilor, munca n echip, dinamica de grup, psihologia de management de proiect de
programare, factori organizaionali, elementele de design pentru interfaa uman, interaciunea
om-main etc.
Calculatorul este o main programabil definit de dou caracteristici eseniale:
pentru un anumit set de instruciuni rspunde ntr-o manier foarte bine definit. Prin
instruciune se nelege o comand elementar (de baz) a unui calculator. Setul de
instruciuni al unui calculator formeaz lista tuturor comenzilor elementare din limbajul
main al calculatorului;
poate executa o list de instruciuni prenregistrate (un program). Fr programe
calculatoarele sunt nefolositoare.
constructiicdsd@gmail.com
Noiuni fundamentale
________________________________________________________________
Resursele materiale i umane coexist i formeaz un ansamblu numit Sistem de Prelucrare
Automat a Datelor (SPAD).
Prelucrarea automat a datelor presupune existena unui proces de reglare ntre Introducerea
datelor, Prelucrarea datelor, Extragerea informaiei:
constructiicdsd@gmail.com
1926 - Dr. Julius Lilienfield creeaz conceptul primului tranzistor folosit pentru amplificare
(vacuum tubes).
1936 - Alan Turing folosete noiunea de main Turing universal'' pentru a descrie un
calculator universal, care poate executa orice program. Programele erau stocate n memoria
calculatorului, reprezentate ca iruri de numere.
1939 Este proiectat primul calculator digital: John Atanasoff, lector la IOWA State
University, mpreun cu doctorandul Clifford Berry, au pus bazele primului computer digital.
Pentru prima oar s-a pus problema reprezentrii numerelor folosind condensatori pentru a
stoca sarcini electrice.
1944 - Este realizat primul calculator de scar mare, Mark I, conceput de Howard Aiken,
profesor la Harvard University. Computerul Mark I a fost cel mai mare calculator realizat pn
atunci. Compus din peste 750 000 piese i cntrind peste 5 tone, el putea s adune, s scad, s
nmuleasc sau s mpart dou numere (pn la 23 digii) n numai cteva secunde.
1945 - John von Neumann analizeaz starea de fapt a calculatoarelor i scrie un raport intitulat
``First Draft of a Report on the EDVAC'' (Prima ciorn a unui raport despre EDVAC), n care
sugereaz o arhitectur revoluionar: programul nu mai este reprezentat de felul n care sunt
cuplate unitile funcionale, ci este stocat n memorie, fiind descris folosind un limbaj numit
cod-main. n cod-main, operaiile de executat sunt codificate sub forma unor numere
numite instruciuni. Programul de executat este descris printr-un ir de instruciuni, care se
execut consecutiv. Caracteristica principala a masinii von Neuman este ca functionarea ei este
un proces secvential: la un moment dat se executa o singura instructiune, iar executarea unei
instructiuni poate sa inceapa numai dupa ce s-a incheiat executarea celei precedente. In toate
operatiile participa unitatea centrala si registrii acesteia.
1946 Este realizat, la University of Pennsylvania, calculatorul ENIAC (the Electronic
Numerical Integrator and Computer) cel mai puternic pn la acea dat. Cntrea cca 30 tone.
1946 Este realizat calculatorul EDVAC (the Electronic Discrete Variable Computer), mai
puternic. Arhitectura acestui calculator i modul de stocare a programelor sunt asemntoare
cu cele ale calculatoarelor de astzi.
1954 - Apare primul limbaj de programare - limbajul FORTRAN, inventat de John Backus,
angajat al IBM.
1958 - Jack Kilbz (angajat laTexas Instruments) inventeaz primul circuit integrat.
1964 - Tom Kurtz i John Kemeny (profesori la Dartmouth University) creeaz limbajul de
programare BASIC (Beginners All Purpose Szmbolic Instruction Language), marcnd
nceputul programrii intuitive.
1970 - Compania Busicom folosete n producie de serie circuitele integrate la construcia
calculatoarelor.
5
Noiuni fundamentale
________________________________________________________________
1974 - Marcian Hoff proiecteaz primul microprocessor: circuitul 4004, ce opera pe 4 bii i
coninea peste 2.000 de tranzistoare. Proiectul lui Hoff a fost respins de companiile
productoare de atunci.
1974 - Intel realizeaz primul microprocesor 8080 ce opera pe 8 bii. O serie de alte companii
ca Motorola i Zilog au nceput s realizeze o serie de cipuri similare.
1975 - Se vinde primul computer Altair. Acesta era un calculator cu procesor 8080 i putea fi
asamblat de oricine. Costa 439USD. Bill Gates i Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punndu-se astfel bazele companiei Microsoft
1981 - IBM lanseaz primul PC (Personal Computer). Costa 1365USD. Urmeaz calculatoarele
286 (1982); 386 (1985); 486 (1989); Pentium (1993); Pentium Pro (1995); Pentium II (1997);
Pentium III (1999); Pentium IV (2000).
ncepnd din 1981 au loc o serie de dezvoltri extraordinare:
Se pun bazele Internet-ului - sistem global de comunicare la distan prin intermediul
calculatoarelor;
Apar o serie de noi componente ale calculatorului: componente specializate pentru interconectare (modemuri); scannerul; mouse-ul (ca urmare a apariiei primelor programe cu
interfa grafic) etc.
Apar noi companii specializate n producia de programe sau componente de calculator;
Se formeaz mari concernuri: Microsoft (cel mai mare productor de programe de
calculator, fondat n 1975 de Paul Allen i Bill Gates), AOL (America Online), cel mai
mare furnizor de servicii Internet etc.
Nscut in 1955, Scott McNealy nfiineaz n februarie 1982 firma SUN. Numele acesteia
este un acronim pentru Reeaua Universitii Stanford (Stanford University Network- SUN).
Primul loc de munc al lui Scott McNealy, dup terminarea studiilor, a fost ntr-unul din
magazinele Uniunii Muncitorilor Auto (UAW). Interesul pentru tehnologie l-a cuprins n
urma angajrii la firma de computere, Onyx Systems, unde a primit i cinci mii de aciuni.
Zece luni mai trziu, a nfiinat SUN MicroSystems, mpreun cu trei colegi. n doar 20 de
ani Scott McNealy a fcut din SUN principalul furnizor de soluii software pentru reele.
Multe din aplicaiile Netscape au fost dezvoltate iniial la Universitatea din Illinois, folosind
tehnologiile Sun. Compania pe care o conduce a nregistrat n anul 2002 ncasari de peste
11,7 miliarde de dolari i are reprezentane n peste o sut de ri. Fa de acum zece ani,
cnd o aciune SUN valora un dolar, astzi preul acesteia este de cel puin zece ori mai
mare. A nfiinat compania cu 285.000 de dolari, devenind profitabil n primul an. Astzi,
McNealy conduce un imperiu de 18 miliarde de dolari, a adunat o avere considerabil i a
devenit unul dintre cei mai buni critici ai rivalului Microsoft. Fiind numit de o
prestigioas publicaie drept unul dintre cei mai influeni oameni de afaceri din America,
ideile lui McNealy din domeniul ICT (Information and Communication Technologies) au
fost preluate i transformate, adeseori, n noi curente n aceast industrie
(http://www.sun.com/aboutsun/coinfo/ history.html).
constructiicdsd@gmail.com
Cloud Computing
Sursa: http://thehealthcareblog.com/blog/tag/cloud-computing/
Sursa: http://inbound.nowitworks.com/Portals/174836/images/Screen%20shot%202012-1227%20at%204.18.29%20PM.png
Noiuni fundamentale
________________________________________________________________
Sursa: http://thevarguy.com/site-files/thevarguy.com/files/archive/thevarguy.com/wp-content/uploads/2009/10/cloudcomponents.jpg
constructiicdsd@gmail.com
n funcie de mrime, posibiliti de prelucrare, pre i vitez de operare, exist patru categorii
de sisteme de calcul: supercalculatoare, sisteme principale (mainframe), minicalculatoare i
microcalculatoare.
Noiuni fundamentale
________________________________________________________________
1.3.3. Funcionarea sistemului de calcul
Datele iniiale i programele se introduc prin DPI;
Datele i instruciunile programelor sunt transferate n MEM (prin intermediul canalelor
de I/E) sub form binar, n locaiile identificabile prin adresa lor;
Fiecare instruciune este trimis la UCC. Aceasta le interpreteaz i emite comenzi ctre
MEM, UAL i canalele I/E;
Rezultatele memorate la diferite adrese sunt transferate ctre DPE, prin canalele de I/E.
Ele pot ajunge la dispozitivele de ieire (monitor) pentru vizualizare; ctre MEM EXT
pentru arhivare etc.
Observaie:
Calculatoarele electronice nu sunt supraomeneti. Ele se stric. Fac greeli periculoase
uneori. Nu au nimic magic i cu siguran nu sunt spirite sau suflete din mediul nconjurtor.
Cu aceste rezerve ele rmn ns una din cele mai uimitoare i tulburtoare realizri ale
omului, pentru c ne amplific capacitatea intelectual,i nu tim unde ne vor duce pn la
urm propriile noastre mini. Toffler, A., Al treilea val, Ed.Politic, Bucureti, 1983, p.236.
Sursa: http://www.motherboards.org/imageview.html?i=/images/reviews/hardware/1831_p3_1.jpg
10
constructiicdsd@gmail.com
Sursa: http://www.buzzle.com/articles/i3-i5-i7-comparison.html
http://www.igalaxys3.com/wp-content/uploads/2012/06/s3-teardown.jpg
11
Noiuni fundamentale
________________________________________________________________
http://androidadvices.com/apple-iphone-4s-samsung-galaxy-iii-features-specs-comparison-table/
constructiicdsd@gmail.com
13
Noiuni fundamentale
________________________________________________________________
Figura 2.1 Tabela de coresponden ntre coduri
Hexadecimal
Decimal
BCD
Octal
Binary
Parity
ASCII
EBCDIC
00
00
000
00000000
even
NUL
NUL
01
01
001
00000001
odd
SOH
SOH
02
02
002
00000010
odd
STX
STX
03
03
003
00000011
even
ETX
ETX
04
04
004
00000100
odd
EOT
PF / SEL
05
05
005
00000101
even
ENQ
HT / PT
06
06
006
00000110
even
ACK
LC / RNL
07
07
007
00000111
odd
BEL
DEL
08
08
010
00001000
odd
BS
GE
09
09
011
00001001
even
HT
SPS
0A
10
illegal
012
00001010
even
LF
SMM / RPT
0B
11
illegal
013
00001011
odd
VT
VT
0C
12
illegal
014
00001100
even
FF
FF
0D
13
illegal
015
00001101
odd
CR
CR
0E
14
illegal
016
00001110
odd
SO
SO
0F
15
illegal
017
00001111
even
SI
SI
10
16
10
020
00010000
odd
DLE
DLE
11
17
11
021
00010001
even
DC1
DC1 / SBA
12
18
12
022
00010010
even
DC2
DC2 / EUA
14
constructiicdsd@gmail.com
b) Binar - Zecimal
Conversia se realizeaz prin nsumarea puterilor lui 2 corespunztoare biilor egali cu
1 (puterile se considera de la 0, de la dreapta spre stanga secventei binare).
Exemplu: 111011102= 1*27 + 1*26 + 1*25 + 1* 23+ 1*22+1*21 = 23810
c) Zecimal - Octal
Conversia se efectueaz prin mpriri ntregi succesive cu 8, pn cnd ctul devine
nul. Numrul octal se obine scriind resturile n ordinea invers.
Exemplu: Conversia lui 238:
238 : 8 = 29 rest 6
15
Noiuni fundamentale
________________________________________________________________
29 : 8 = 3 rest 5
3 : 8 = 0 rest 3
Considernd resturile de jos n sus se obine 23810 = 3568
d) Octal - Zecimal
Conversia se reduce la nsumarea puterilor lui 8: 3*82+5*81+6*80= 238
e) Zecimal - Hexazecimal
Conversia se efectueaz prin mpriri ntregi succesive prin 16. Testul de oprire
corespunde situaiei ctului nul. Numrul hexazecimal obinut considernd resturile
obinute de la ultimul ctre primul. OBS: 0,1,2,3,4,5,6,7,8,9, A(10), B(11).....F(15).
e) Hexazecimal - Zecimal
Conversia se reduce la nsumarea puterilor lui 16.
f) Binar - Octal
Conversia se realizeaz nlocuind de la dreapta la stnga, grupele de 3 bii prin cifra
octal corespunztoare. Dac numrul de bii nu este multiplu de 3 se completeaz
configuraia binar la stnga cu zerouri.
Exemplu: 101011111= 537 in octal
g) Octal - Binar
Conversia corespunde dezvoltrii fiecrei cifre octale n echivalentul ei binar pe 3
bii.
Exemplu:
278 = 0101112 deoarece 28 = 0102 si 78 = 1112.
h) Binar - Hexazecimal
Conversia se realizeaz nlocuind de la dreapta la stnga, grupele de 4 bii prin cifra
hexazecimal corespunztoare. Dac numrul de bii nu este multiplu de 4 se
completeaz configuraia binar la stnga cu zerouri.
Exemplu: 1010112= 2B16 .
i) Hexazecimal - Binar
Conversia corespunde dezvoltrii fiecrei cifre hexazecimale n echivalentul ei binar
pe 4 bii.
Exemplu:
3A16 = 001110102 deoarece 316= 00112 si A16=10102.
Binar
0
1
10
Octal
0
1
2
Zecimal
0
1
2
16
Hexa
0
1
2
constructiicdsd@gmail.com
11
3
3
3
100
4
4
4
101
5
5
5
110
6
6
6
111
7
7
7
1000
8
8
10
1001
11
9
9
1010
12
A
10
1011
13
11
B
1100
14
12
C
1101
15
13
D
1110
16
14
E
1111
17
15
F
10000
20
16
10
10001
21
17
11
Pentru a le deosebi, la o valoare hexazecimala se adauga fie un prefix 0x
(rezulta notatia 0x44), fie un sufix h (rezulta notatia 44h). Pentru reprezentarea
constantelor in octal se foloseste prefixul 0: 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale.
Aceste precizari sunt necesare deoarece, in prezentarea diverselor componente
ale calculatorului, vom intalni diversi parametri numerici reprezentati in forma
binara.
Tema: Numerele 9456; 787; 578; 8476 se vor reprezenta (manual!!!!) in binar,
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal,
conform exemplelor de mai sus din curs. Verificarea se va face cu start;
programs,accessories; calculator pe scientific.
Se redacteaza modul de lucru intr-un fisier .doc si se trimite fisierul arhiva
conversii_numeprenume_grupa.rar (se foloseste winrar etc) prin e-mail la
adresa constructii20132014@gmail.com. Termen: 21 oct. 2013 (si pt
ascii+unicode).
2.2.2. Numere ntregi negative
Numerele ntregi negative pot fi codificate prin trei metode:
semn i valoare absolut (SVA);
complement logic sau restrns sau fa de 1 (C1);
complement aritmetic sau adevrat sau fa de 2 (C2);
17
Noiuni fundamentale
________________________________________________________________
SVA: Prin metoda semn i valoare absolut, numerele se codific sub forma:
valoare absolut.
Prin aceast reprezentare se sacrific un bit pentru semn. In mod normal, 0 este
codul semnului +, iar 1 este codul semnului -. n aceste conditii.
Aceast metod de reprezentare prezint unele inconveniente:
- numrul zero are dou reprezentri distincte: 000...0 i 100...0, adic +0 si - 0;
- tabelele de adunare i nmulire sunt complicate din cauza bitului de semn care
trebuie tratat separat.
Complement logic i aritmetic
C1: Complementul logic (complement fa de 1) se calculeaz nlocuind, pentru
valorile negative, fiecare bit 0 cu 1 i 1 cu 0.
C2: Complementul aritmetic (complement fa de 2) este obinut adunnd o unitate
la valoarea complementului logic.
Exemplu: Reprezentarea numrului (-6) pe 4 bii: +6 = 0110 (primul 0 din stg
este al semnului +!!!!)
Semn i valoare absolut: - 6 = 1110
Complement fa de 1: - 6 = 1001 (am negat bitii de 0 si 1 de la 0110 !!!!)
Complement fa de 2: - 6 = 1010 (la reprezentarea din C1 se aduna 1)
Se poate uor constata c intervalul numerelor ntregi N care se pot reprezenta n
complement fa de 1 este acelai ca i pentru reprezentarea semn i valoare
absolut.
Complement aritmetic sau adevrat sau fa de 2 (C2);
Se poate remarca faptul c bitul cel mai din stnga (bitul de semn) este ntotdeauna 0
pentru numere pozitive i 1 pentru cele negative i aceasta pentru fiecare din cele trei
reprezentri, conform tabelului urmtor.
18
constructiicdsd@gmail.com
1
0
0
0
1
1
0
0
1
0
0
0
1
1
0
0
1
0
0
0
1
1
0
0
1
0
0
0
1
1
0
0
1
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
=
=
=
=
=
=
=
=
Zecimal
0001
0000
1111
1110
1101
1100
4
19
127
2
1
0
1
2
127
128
Noiuni fundamentale
________________________________________________________________
Numere ntregi reprezentati in complement fata de 2, pe 4 biti
1111 1111
255
0101 1111
95
===========
=====
1010 0000 (complement fata de 1)
160
+
1
+
1
===========
=====
1 (complement afta de 2)
161
n anul 1973, John Wirth a enunat c programul poate fi caracterizat prin relaia:
Program = Date + Algoritm.
Relaia pune n eviden legtura strns dintre date i algoritm i subliniaz importana care
trebuie s li se acorde ambelor componente la elaborarea unui program.
20
constructiicdsd@gmail.com
Clasificarea software-ului
Observatie:
Noiuni fundamentale
________________________________________________________________
= concepte / termeni, T = teorii / metode / tehnici de rezolvare, Tc = tezaurul
cunoaterii (baza de cunotine).
Limbajele cunoaterii sunt:
Limbajele naturale (utilizate de popoare; limbile popoarelor) entitate=cuvnt ;
construciile lexicale descriu stri, imagini, aciuni etc. ;
Limbajele tiinifice/tehnice/economice ... (utilizate n domeniile tiinelor)entitate=cunotin; studiul obiectelor i a relaiilor dintre obiecte n domeniile
matematic, fizic, chimie, informatic, biologie, economie, etc. ;
Limbajele artificiale (utilizate n domeniul calculatoarelor) formate din:
Limbaje de programare procedural entitate=locaie de memorie
Limbaje de programare fucional entitate=element de list
Limbaje de programare logic entitate=obiect / clauza
Limbaje de programare obiectuala entitate=obiect
Limbaje de programare Web entitate=elemente multimedia
Limbaje pentru baze de date entitate=nregistrare
Limbaje pentru grafica pe calculator entitate=obiect grafic
Limbaje pentru modelare-simulare entitate=eveniment
Limbaje pentru sisteme de operare entitate=proces
Limbaje pentru Inteligena Artificial entitate=cunotin, M. Vlada, Bucuresti, 2012
....................
Aspectele caracteristice ale limbajelor de programare sunt:
Sintaxa - reprezint ansamblul regulilor prin care pornind de la simboluri de baz se construiesc
structuri compuse. Se definete gramatica ca fiind mulimea regulilor sintactice;
Semantica indic sensul construciilor sintactice i corespunde unui set de reguli care determin
semnificaia instruciunilor limbajului;
Pragmatica este capacitatea de a utiliza construciile sintactice i semantice.
Exist limbaje generale ( Pascal, C), de prelucrare a bazelor de date ( COBOL, dBASE, SQL), orientate spre
obiect ( SmallTalk, C++, Java), editoare de texte i hiper-texte ( HTML, TeX, PostScript ), de nivel sczut (
Assembler ), folosite n inginerie, matematic, fizic
( Fortran, Matlab, Mathematica) i lista poate
continua.
Fiecare limbaj are avantaje i dezavantaje, ns se remarc tendina de apropiere de limbajul natural
formalizat, de simplificare a construciilor foarte des folosite, de a structura n mod logic diverse seciuni ale
programelor scrise n limbajul respectiv, de modularizare i de a pune la dispoziia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library, ierarhia de clase de la IBM VisualAge sau MFC - Microsoft Foundation Classes , Java API Java Aplication Programming Interface).
O clasificare a limbajelor de programare cuprinde pe cele:
a. Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare; unitatea
de baz este procedura sau funcia; se aplic principiul programrii structurate prin care, orice
procedur poate fi reprezentat prin cele trei structuri fundamentale din algoritmic: secvenial
(liniar), alternativ (de selecie), ciclic (repetitiv). Exemple: Algol60, Fortran,Pascal, C, PL/1,
Ada etc.
b. Modulare - Programul se descompune n module. Acestea sunt independente (atomice). Principiul
de baz este ncapsularea. Modulul are dou componente: interfaa i implementarea. Exemple:
Modula, Ada etc.
c. Orientate spre obiect - Obiectul este o entitate care conine stare (informaie) i comportament i
poate reprezenta orice entitate din lumea real sau virtual. Programul este un ansamblu de obiecte
22
d.
e.
f.
g.
h.
i.
constructiicdsd@gmail.com
n interaciune. Exemple: Ada 95, boo, C++ , C#, ColdFusion, Common Lisp, CorbaScript, COOL
(Object Oriented COBOL), D, Delphi, ECMAScript (JavaScript), Eiffel, F-Script programming
language, Fortran 2003, Gambas, IDLscript, incr Tcl, J, Java, JavaScript, Lexico, Objective-C, Perl
5, PHP, Simula, Smalltalk, Visual Basic / VB.NET etc.
Specifice programrii funcionale: Programul este un ansamblu de funcii i apeluri recursive;
funciile sunt folosite la descrierea datelor i codului; nu exist instruciuni de atribuire.
Fundamentul matematic este dat de expresiile lambda. Exemple: Lisp, ML etc
Specifice programrii logice - n programarea logic programul const din fapte i reguli.
Limbajele sunt declarative - se indic modul cum trebuie s arate soluia problemei. Fundamentul
matematic este asigurat de sistemele logice formale: logica predicatelor de ordinul 1 precum i logici
modale, temporale sau monotonice. Exemplu: Prolog, Mercury, Visual Prolog, Oz, Metaphor etc.
Specifice programrii concurente i distribuite Ada, Alef, ChucK, Cilk, Comega, Concurrent
Pascal, E, Erlang, Java, Joule, Limbo, Mozart/Oz, Occam, Pict, Promise, SR etc.
Specifice bazelor de date: SQL, dBase, FoxPro, MS SQL, MySQL, MS Access etc.
Specifice programrii Web: ASP, ASP.NET, PHP, JSP; Limbaje de scripting pe server/client:
VBScript, JavaScript, JavaBeans, EJB, Cold Fusion, PERL, PHP etc.
Specifice programarii bazate pe ageni: Telescript, Agents, AgentTcl etc.
Limbajul de asamblare:
a aprut ncepnd cu anul 1950 i reprezint o form mai prietenoas a limbajului main;
programele se scriu n mod text (mnemonice) pentru ca apoi s fie traduse ntr-o form binar,
corespunztoare limbajului main;
limbajul de asamblare este tradus n limbaj main de ctre assembler;
limbajele de asamblare nc solicit programatorului cunoaterea de multe detalii hardware;
este specific anumitor tipuri de calculatoare;
Observaie:
Limbajul de asamblare mpreun cu limbajul main formeaz categoria limbajelor de nivel sczut (lowlevel languages).
Limbajele evoluate (High Level Languages):
permit formularea soluiilor problemei de rezolvat n termeni mai apropiai de cei folosii de oameni;
sunt mult mai apropiate de limbajul uman;
au fost concepute pentru a permite programrii s fie mult mai uoar i cu mai puine erori ;
programatorul nu trebuie s cunoasc detalii cu privire la structura intern a unui anumit tip de
calculator;
23
Noiuni fundamentale
________________________________________________________________
dup modul cum se face transpunerea programelor evaluate, exist dou tipuri de astfel de
componente software specializate:
1. interpretor: traduce succesiv instruciunile de nivel nalt ntr-o form intermediar care este
apoi executat; poate execut un program imediat.
2. compilator: traduce instruciunile de nivel nalt direct n limbaj main. Compilatorul
necesit mai mult timp. Programele produse de compilator ruleaz mul mai rapid dect cele
produse de interpretor.
majoritatea programelor evolute au la dispoziie att compilator ct i interpretor: interpretorul se
folosete n timpul realizrii unui program pentru testarea unor mici seciuni ale programului. Unele
limbaje evoluate sunt concepute s lucreze numai cu interpretor (BASIC, LISP).
dac limbajele sunt standardizate, atunci fiecare productor de calculatoare (procesoare) va putea s
realizeze compilatorul care s respecte standardele i s traduc programele n limbajul main
specific productorului: devine posibil ca un program, respectndu-se aceste standarde, s poat fi
compilat pe diverse calculatoare i apoi executat.
Prin scrierea unui program ntr-un limbaj evoluat se face o economie imens de timp. Programatorul pierde
mai puin timp pentru scrierea ntr-un limbaj mult mai apropiat de cel uman dect dac acelai program ar fi
scris n limbaj main. Timpul de compilare al programului este de ordinul secundelor.
n figura 1.1. sunt prezentate primele trei generaii de limbaje de programare i modul cum interacioneaz
acestea cu calculatorul.
24
constructiicdsd@gmail.com
Noiuni fundamentale
________________________________________________________________
Studiu de caz: Limbajul Java sem2 !!!
3.2. Limbajul Java - Istoric
Primii pai n realizarea limbajului Java au fost fcui n aprilie 1991 de ctre o echip de cercetare de la Sun
Microsystems condus de James Gosling (autor al editorului emacs i al sistemului de ferestre grafice
NeWS). Iniial, scopul echipei era s creeze software destinat produselor electronice comerciale. Aceste
echipamente se definesc ca mici, portabile, distribuite i lucrnd n timp real. De la aceste aparate se cer n
general fiabilitate i uurin n exploatare. Foarte curnd, echipa a constatat c un produs software destinat
unei astfel de piee poate avea succes doar dac este dezvoltat ntr-un mediu independent de platforma
hardware. Grupul de cercetare a ncercat s extind instrumente de dezvoltare bazate pe limbajul C++ dar
aceste ncercri s-au soldat cu un eec datorit complexitii acestui limbaj. Confruntai cu aceast problem,
membrii echipei au decis s realizeze un limbaj care s posede caracteristicile de care aveau nevoie: mai
flexibil, mai simplu i mai portabil. Aa s-a nscut Java, limbaj de programare capabil s ruleze pe orice
dispozitiv conectat la o reea: staii de lucru Sun, PC-uri, calculatoare MacIntosh, PDA-uri (Personal Digital
Assistant), telefonie mobil i chiar frigidere, aparate de prjit pine etc.
n dezvoltarea limbajului, Gosling i echipa sa au mprumutat din caracteristicile limbajelor de programare
consecrate, cum ar fi C++ si SmallTalk, dar, n acelai timp, au creat un limbaj extrem de robust prin
ndeprtarea facilitilor catalogate ca periculoase din C++ cum ar fi pointerii, suprancrcarea
operatorilor i alocarea dinamic a memoriei.
Numele iniial al limbajului a fost Oak (stejar), copac care cretea n faa biroului lui James Gostling.
Ulterior, s-a descoperit c numele fusese deja folosit n trecut pentru un alt limbaj de programare aa c a
fost abandonat i nlocuit cu Java.
Pe data de 23 mai 1995, dup patru ani de cercetare i dezvoltare, firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java, cnd a fcut public i specificaia noului limbaj, la SunWorld, n San
Francisco.
n aceeai perioad, Marc Andreessen, student care lucra la National Center for Supercomputing
Applications (NCSA), a creat primul browser pentru World Wide Web, Mosaic 1.0. Pe la mijlocul anului
1994, creatorii lui Java au gsit World Wide Web-ul ca fiind foarte promitor din punctul de vedere al
limbajului pe care l dezvoltau. Tehnologia dezvoltat de Java era perfect pregtit pentru acest mediu, n
special datorit capacitilor sale de a rula pe mai multe platforme i facilitilor de comunicare prin reele.
Cel mai important lucru este c a introdus ceva ce nu mai fusese posibil pn atunci: posibilitatea de a rula n
siguran aplicaii de pe serverele Web pe calculatoarele utilizatorilor.
n Noiembrie 1995 a fost fcut disponibil, pe site-urile firmei Sun Microsystems, prima versiune de Java
(beta), fiind cutat de zeci de mii de persoane i sute de firme. Prima versiune popular de Java a fost Java
1.02, care a aprut n 1996, distribuit de Sun sub forma JDK1.02 (Java Development Kit). Aceasta
coninea compilator i interpretor Java precum i alte unelte utile programatorilor (depanator, generator de
documentaie, dezasamblor). Iniial au existat versiuni pentru sistemele de operare Sun, Windows 3.x/95 i
MacOS. Ulterior au aprut versiuni i pentru alte sisteme de operare (alte UNIX-uri, Linux etc).
n 1997 a aprut JDK1.1, beneficiind de multe mbuntiri i extensii. Unele programe compilate cu
versiuni 1.02 ale compilatorului nu sunt compatibile cu Java1.1 dect dac sunt recompilate. Un program sau
applet Java 1.1 nu va rula ntr-un mediu Java1.02. Java 1.1.5. a adus mbuntiri n interfaa utilizator,
tratarea evenimentelor i o mai mare consisten a limbajului.
n decembrie 1998 a fost lansat noua versiune Java 2, care introduce cteva faciliti avansate: Swing noi
funcii care permit crearea unei interfee utilizator grafice, fie n stilul unui anumit sistem de operare, fie n
noua prezentare grafic Java, numit Metal; drag and drop posibilitatea de a transfera interactiv
informaii ntre diferite aplicaii sau dintr-o parte a interfeei programului n alta; revizuirea complet a
funciilor din Java, n sensul alinierii acestora la posibilitile audio ale altor limbaje etc.
26
constructiicdsd@gmail.com
Partea de control nu a fost neglijat: cu toate c versiunea principal nu este conceput pentru uz industrial
sau n dispozitive cu capaciti restrnse, Sun a lansat dou linii paralele de Java, PersonalJava, pentru
dispozitive limitate ca i capaciti dar cu posibiliti de afiare i EmbeddedJava, pentru dispozitive limitate
ca i capaciti sau resurse i fr nici un mijloc de afiare:
1. PersonalJava (http://java.sun.com/products/personaljava/pj-emulation.html) - este un nou mediu de
dezvoltare a aplicaiilor Java pentru dispozitive conectabile n reea, cu capaciti mai reduse dect
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial). Deoarece PersonalJava
include numai o anumit parte din funciile Java standard, aplicaiile scrise pentru PersonalJava sunt
perfect compatibile n sus. Prezint urmtoarele particulariti: mecanisme de incrcare i execuie
dinamic a codului, ceea ce permite s se fac modificri foarte uor n codul aplicaiilor;
dimensiune redus a codului generat (codul binar Java este mult mai compact n raport cu celelalte
coduri); este printre primele limbaje care aduce tehnologia orientat spre obiect n astfel de
dispozitive. Java si menine portabilitatea i n acest domeniu, tocmai datorit faptului ca el ruleaz
n interiorul unei maini virtuale. PersonalJava include o main Java virtual, un set de librrii de
baz i un set de librrii opionale, care pot fi folosite dup preferin. Pachetele sunt concepute
modular i scalabile, permind, de exemplu, folosirea unor dispozitive diferite de afiare sau
protocoale diferite de reea.
2. EmbeddedJava (http://java.sun.com/j2me/index.jsp) este, n mod asemntor cu PersonalJava, o
versiune de Java pentru dispozitive cu faciliti restrnse, cu deosebirea c este mult mai putin
pretenios. A fost proiectat s fie mult mai modular, scalabil i configurabil, rulnd cu un minim
posibil de memorie, asigurnd o serie de nivele de funcionalitate. Aceast versiune asigur suportul
unor instrumente absolut necesare: unelte de inserare a codului executabil n memoriile ROM, unelte
pentru compilarea, compresia i plasarea imaginilor precum i pentru estimarea resurselor de calcul
necesare.
Din 1995 i pn n prezent, lumea Java triete ntr-o continu agitaie, aprnd alte i alte inovaii i
modificri ale limbajului. Alturi de JDK - Java Development Kit (http://java.sun.com/j2se/1.5.0/index.jsp),
pus la dispoziie de compania Sun Microsystems, au aprut noi medii de dezvoltare a aplicaiilor Java: Sun
ONE Studio 5 (http://wwws.sun.com/software/sundev/jde/); JCreator (http://www. jcreator. com/); BlueJ
(http://www.bluej.org/);
Borland
JBuilder
(http://www.
borland.
com/products/downloads/
download_jbuilder. html); RealJ (http://www.realj. com/); DrJava (http://drjava. sourceforge. net/);
NetBeans IDE (http://www.netbeans.org/); JIPE (http://jipe.sourceforge.net/); Visual Age for Java
(http://www7b.software. ibm.com/ wsdd/zones/vajava /) etc.
3.3. Tehnologia Java
http://www.java.com/en/download/windows_ie.jsp?locale=en&host=www.java.com:80
Java este un limbaj de programare orientat spre obiect, destinat iniial pentru aparatura electronic inteligent
conectat n reea, proiectat pentru dezvoltarea de aplicaii pentru Internet i extins complet pentru ca, pe
lang domeniul World Wide Web, s poat fi folosit i pentru dezvoltarea de software de interes general.
n acelai timp Java este i o platform, n sensul c ofer o arhitectur multi-nivel i distribuit obiect.
Aplicaiile bazate pe aceast platform pot fi distribuite prin sisteme fizice multiple, ceea ce permite
scalabilitate, securitate, performan i o uoar interfaare cu sistemele existente.
3.3.1. Limbajul de programare Java
O caracteristic particular a programelor Java este c sunt n acelai timp interpretate i compilate.
Compilarea const n traducerea programelor scrise n limbajul Java ntr-un limbaj intermediar numit
bytecode (cod de octei). Acest limbaj intermediar este indepenent de platform i este interpretat de un
interpretor Java (Java Virtual Machine JVM). Interpretorul execut fiecare instructiune din bytecode pe
calculatorul int. Compilarea are loc o singur dat, pe cnd interpretarea este un proces care se repet de
fiecare dat cnd un program Java este lansat n execuie. Instructiunile bytecode sunt de fapt instruciunile
n cod main pentru Maina Virtual Java (Java Virtual Machine). Orice interpretor Java, fie el java.exe sau
un browser Web capabil s ruleze appleturi, este de fapt o implementare a mainii virtuale Java.
Java bytecode face posibil filozofia scrie odat, execut oriunde - write once, run anywhere care a fost i
este, scopul urmrit de ctre dezvoltatorii limbajului. Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java, dup care fiierele bytecode pot fi executate sub orice implementare
a mainii virtuale Java.
27
Noiuni fundamentale
________________________________________________________________
3.3.2. Platforma Java
O platform este definit drept contextul software sau hardware n care ruleaz un program. Exemple de
platforme sunt Windows 2003 Server, Windows XP, Linux, Sun Solaris etc. Majoritatea platformelor pot fi
descrise ca o combinaie de componente hardware i software. Platforma Java este o platform exclusiv
software care ruleaz pe diverse platforme hardware.
Platforma Java are dou componente :
Maina Virtual Java (Java Virtual Machine - JVM)
Interfaa de programare a aplicaiilor Java (Java Application Programming Interface Java API)
Aceste componente asigur legtura dintre un program scris utiliznd limbajul Java i o platform harware
oarecare. Rolul platformei Java este s asigure independena programului de platforma hardware pe care
acesta ruleaz, aa cum se poate vedea n figura 1.2.
constructiicdsd@gmail.com
2. n loc ca programele s fie compilate, ele pot fi interpretate: n timpul execuiei programului, n
memoria calculatorului se gsete chiar programul surs n limbaj de nivel superior, mpreun cu un
program binar numit interpretor. Acesta parcurge instruciunile programului surs i le
interpreteaz, adic le traduce n instruciuni binare, aparinnd setului de instruciuni al
procesorului i le transmite pe rnd procesorului pentru a fi executate. Exemple de limbaje
interpretate sunt: limbajul Basic, limbajele de comand ale sistemelor de operare, limbajele de
comand ale unor sisteme de gestiune a bazelor de date etc. Limbajele interpretate prezint unele
avantaje (programele sunt mai uor de exploatat i depanat), dar prezint i dezavantajul c
executarea programelor se face mai lent dect n cazul celor compilate. Din aceast cauz, atunci
cnd viteza de execuie este esenial, se prefer programele compilate.
n cazul limbajului Java, portabilitatea este asigurat la nivelul codului de octei (byte-code-ului) rezultat
n urma compilrii. Aceasta s-a obinut prin adoptarea unei soluii de compromis ntre cea a programelor
compilate i a programelor interpretate.
Maina virtual Java, este un calculator abstract pentru care s-au specificat setul de instruciuni al
procesorului, setul de regitri i organizarea memoriei. Limbajul Java n sine este un limbaj de nivel
superior, asemntor lui C++.
Procesul de execuie a unui program Java este descries in Figura 1.3: Programul scris n Java este compilat.
Compilatorul Java genereaz un program binar numit cod de octei (bytecode) care este destinat mainii
virtuale Java, adic folosete setul de instruciuni i organizarea memoriei specifice acestei maini. n cazul
general, maina fizic pe care se execut programul are alt set de instruciuni i alt structur dect maina
virtual Java. Deoarece codul de octei destinat mainii virtuale Java trebuie interpretat, n timpul execuiei,
n memoria calculatorului se vor gsi codul de octei al programului care trebuie executat i interpretorul
Java, adic un program care interpreteaz acest cod de octeti. Avantajul este c interpretarea codului de
octei este mult mai rapid decat cea a programului surs, dei totui ceva mai lent dect executarea unui
program binar compilat special pe maina pe care se execut.
Observaii:
1. Deoarece maina virtual Java este un calculator abstract universal, nu este deloc obligatoriu ca
programele pentru aceast main s fie scrise n limbajul Java. Pentru orice limbaj de nivel superior
se pot realiza compilatoare care s genereze cod de octei pentru maina virtual Java, acest cod
putnd fi apoi executat pe orice calculator pe care exist un interpretor Java. Astfel de compilatoare
exist deja pentru diferite limbaje, ceea ce creaz perspectiva ca maina virtual Java s devin un
mijloc general de asigurare a portabilitii programelor la nivel de cod de octei, indiferent de
limbajul n care ele au fost scrise.
2. Unii fabricani de microprocesoare (n frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a mainii virtuale Java, precum calculatoare a cror structur i cod de instruciuni respect
specificaiile mainii virtuale Java. Ele pot executa direct codul de octei, fr a mai avea nevoie de
un interpretor, ceea ce mrete viteza de execuie a programului.
29
Noiuni fundamentale
________________________________________________________________
30
constructiicdsd@gmail.com
3.3.4. Terminologie
JDK Java Development Kit conine instrumentele folosite pentru dezoltarea de software, n el fiind inclus
i un mediu de execuie JRE (Java Runtime Environment). Pe lng maina virtual Java, JDK mai conine
compilatorul de Java, un instrument de vizualizare a applet-urilor, un generator de documentaii, utilitare
specifice mediului de dezvoltare Java i exemple de programe Java.
SDK este o alt denumire pentru JDK, deoarece, ncepnd cu lansarea lui Java 2, compania Sun s-a referit
la acesta cu numele de Java Software Development Kit.
JRE - Java Runtime Environment este un mediu de execuie Java care conine toate bibliotecile de rulare
necesare la executarea oricrui program Java precum i o main JVM.
Exist trei ediii de JDK, fiecare din ele fiind livrat cu cte o main JVM i cu toate instrumentele standard
necesare dezvoltrii de aplicaii:
J2SE Java 2 Standard Edition este livrat cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea i distribuirea de aplicaii Java de uz general. Aceast ediie conine o main Java
optimizat pentru partea de client; (www.sun.com....downloads....j2se with netbeans)
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US//USD/ViewFilteredProducts-SingleVariationTypeFilter
J2ME - Java 2 Micro Edition este o versiune livrat cu un set restrns de biblioteci de rulare i cu
o main Java optimizat pentru dispozitive integrate sau portabile. Are dou linii paralele de
dezvoltare, PersonalJava i EmbeddedJava.
J2EE - Java 2 Enterprise Edition este o versiune care conine tot ceea ce se afl n J2SE, la care
se adaug un set de interfee API (Application Program Interface) i biblioteci de dezvoltare i
distribuire a aplicaiilor la nivel de ntreprindere (sisteme de prelucrare de tranzacii, servere Web,
servicii de mesagerie etc. Maina JVM este aceeai cu cea de la J2SE dar exist i o versiune de
JVM optimizat pentru server, care poate fi descrcat separat (HotSpot Server VM http://www.softpile.com /Development /Java/Review_03157_index.html ). J2EE simplific
aplicaiile tip ntreprindere prin construirea lor pe baza unor componente modulare standardizate,
prin oferirea unui set complet de servicii acelor componente i prin preluarea multor detalii a
comportamentului automat al aplicaiei, fr o programare complex. Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaiilor care sunt dificile i care ar necesita timp,
tehnologia J2EE permite dezvoltatorilor de sisteme de tip ntreprindere s se concentreze asupra
mbuntirii strategiei de afaceri, dect s creeze infrastructura acesteia.
JVM - Java Virtual Machine este software-ul care execut toate aplicaiile Java. Const din cteva fiiere
care sunt plasate n directoarele din JDK sau JRE, unul din fiiere fiind o interfa care instaniaz JVM-ul i
face posibil ca aceasta s lucreze pe sistemul de operare nativ din calculator. Pentru utilizator, numele
mainii JVM este java, nume standard al comenzii necesare pentru a rula JVM, nume ce trebuie urmat de
numele programului. Exist dou semnificaii pentru termenul JVM:
1. Fiierul binar care exist n sistemul de fiiere, instalat pe calculator cnd s-a instalat JDK sau JRE;
2. Instan particular care se ncarc n memoria calculatorului cnd se execut un program, fiind
executat ca un proces din sistemul de operare. Fiierul binar nu este ncrcat i nici nu se schimb,
ceea ce permite ca s fie rulate n acelai timp mai multe instane ale mainii JVM.
.jar este extensia ce corespunde unui fiier arhiv Java, creat cu utilitarul jar din Java. Folosind opiunea
jar, comanda java permite lansarea n execuie a unui program Java care este stocat ntr-un fiier jar.
31
Noiuni fundamentale
________________________________________________________________
.class este extensia fiierului obinut (numit de clase), dup compilarea de ctre compilatorul de Java a
unui fiier cu cod surs Java (care are extensia .java). Fiierele de clase reprezint forma executabil a
programelor Java. Codurile de octei sunt coduri de dimensiunea unui octet pentru JVM.
JavaBeans numele componentelor de cod Java reutilizabile. Orice program Java sau orice bloc de program
Java poate fi scris ca o clas JavaBean.
constructiicdsd@gmail.com
Java 2 SDK. Standard Edition v 1.4. Java 2 Runtime Environment (JRE) este compus din maina virtual
Java, clasele care formeaz nucleul platformei i fiiere de suport. Java 2 SDK include pe lng JRE i unelte
de dezvoltare, cum ar fi compilatoare i depanatoare. Pentru Java 2 SDK 1.6/ 1.7 http://java.sun.com/javase/6/docs/
3.3.6. Tipuri de aplicaii Java
Cu ajutorul API, Java suport o varietate mare de aplicaii. Principalele tipuri de programe Java sunt:
1. Applet-uri Java - sunt cele mai rspndite programe Java. Toate appleturile urmeaz o serie de
convenii care le permit s ruleze n interiorul unui navigator (browser) Web care ncorporeaz o
main virtual Java. Appleturile sunt incluse n pagile Web la fel ca i imaginile i adaug
dinamism acestora.
2. Aplicatii Java - limbajul Java poate fi folosit i pentru dezvoltarea de aplicaii, fiind o puternic
platform software. Aplicaiile pot rula independent de un navigator web i au caracteristicile
oricror alte programe, cu deosebirea c, pentru a le rula, n sistem trebuie s existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment).
3. Servlet-uri Java - sunt programe Java care pot interaciona cu diferii clieni i care se execut
numai pe partea de server, ca efect al unei cereri primite. Acestea afieaz numai rezultatul
procesrii, sub forma unui fiier HTML (HyperText Markup Language). Implementarea de tip
cerere/rspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol).
Simplu
Orientat spre obiecte
Portabil
Dinamic
Robust
Distribuit
Concurent
Sigur
Independent de platform
Performant
Aceti termeni nu sunt doar pentru reclam - ei i gsesc justificarea n implementarea limbajului.
1. Simplitate: Dei mprumut multe aspecte din limbajele C i C++, limbajul Java renun la unele
trsturi, considerate neeseniale, ale acestora. Aparent, limbajul are mai puine grade de libertate
dect C si C++, dar n realitate poate realiza aceleai lucruri, cu un plus de claritate. Au fost
eliminate acele faciliti care, n opinia experilor, produceau mai mult confuzie dect s aduc
beneficii:
supradefinirea operatorilor (Java ofer un puternic suport pentru supradefinirea metodelor);
moteniri multiple;
conversii automate a tipurilor de date;
pointeri la date.
33
Noiuni fundamentale
________________________________________________________________
Pointerii reprezint un mecanism deosebit de periculos din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de gsit i corectat) i o potenial problem de
securitate, dat de nerestricionarea accesului lor: este deosebit de uor s se fac scrierea/citirea
dintr-o zon de date interzis, ceea ce va conduce la coruperea datelor, n mod intenionat sau nu.
Mecanismul folosit la Java este cel al handler-elor i al tablourilor reale de date, nefiind permis
modificarea unui tip ntreg de date ntr-un handler i, prin aceasta, accesarea necontrolat a unei
zone de memorie. S-au adugat faciliti de ultim or, dintre care cea mai important este
managmentul automat al memoriei. Aceasta simpific imens munca programatorului, n schimbul
complexitii mai ridicate a sistemului. O surs comun, generatoare de complexitate i probleme,
este gestionarea memoriei, alocarea i eliberarea ei, la momente bine specificate de timp. Prin
facilitatea oferit, de creare a unui mecanism automat de gestionare a memoriei a carui funcie
primar se poate descrie prin dealocarea resurselor nefolosite n mod automat, s-a reuit nu numai
nlesnirea muncii programatorului, dar i reducerea imens a timpului necesar finalizrii unui
proiect, deoarece, eliminnd problema gestionrii memoriei, se elimin automat cea mai mare surs
generatoare de scame (bug-uri). Dealocarea memoriei se face n mod uniform, fr intervenia
programatorului. Exist un colector de gunoaie (garbage collector) a crui implementare n Java
este fcut inteligent i eficient, folosind un fir separat de execuie. Astfel, colectarea gunoaielor
se face de obicei n timp ce un alt fir de execuie ateapt o operaie de intrare-ieire sau pe un
semafor. Se marcheaz obiectele care nu mai sunt folosite i se elibereaz spaiul ocupat de ele.
Eliberarea nu se face neaprat imediat, ci atunci cnd spaiul disponibil curent nu mai poate satisface
o nou cerere.
Un alt aspect al faptului de a fi simplu este dimensiunea mic a limbajului, conceput special penru
dispozitive cu capaciti reduse (microcontrolere etc), deci capabil de a rula n astfel de dispozitive.
Interpretorul limbajului i librriile acestuia au dimensiuni foarte reduse.
2. Orientare spre obiect (object-oriented): Ca i C++, Java folosete clase pentru organizarea logic a
codului. La executare, programul creeaz obiecte de tipul claselor. Este admis i larg utilizat
motenirea claselor, dar nu este permis motenirea multipl. Aceasta este suplinit de o alt
facilitate, numita interfa. Modelul orientat spre obiect ofer mecanismul pentru a defini cum
modulele se interconecteaz ntre ele. Folosind modelul programrii orientate spre obiect se pot
elabora programe mult mai clare, mai curate i mai apropiate de modul de gndire uman i se
permite reutilizarea codului. Facilitile, din puncul de vedere al orientrii spe obiect, sunt cele
oferite de limbajul C++, extinse cu facilitile oferite de Objective C, pentru a oferi o dinamic mult
mai mare metodelor sale.
3. Portabilitate: Limbajul Java este independent de platform. Programele Java sunt mai nti
compilate ntru-un cod intermediar, numit bytecode, i apoi sunt interpretate de ctre mediul de
execuie Java (Maina Virtual Java, creat la instalarea limbajului Java) n instruciuni main
asociate platformei sistem. Fiierele bytecode (care au extensia .class) pot fi copiate i executate pe
orice platform indiferent c ea este Windows, Unix, Solaris etc. Applet-urile pot rula direct ntr-un
navigator Web (Internet Explorer, Netscape etc). Anumite aplicaii ncorporeaz tehnologie Java
tocmai pentru a face mai uoar portarea lor ntre diverse sisteme de operare. Cteva exemple ar fi
Corel Word Perfect sau Netscape Communicator.
4. Claritate: Eliminarea unor faciliti neeseniale din C i C++ conduce la programe mai uor de
nteles. n plus, se consider c limbajul Java este uor de nteles, cu condiia ca cel care l prezint
s fi neles el nsui foarte bine mecanismele puse la dispoziie.
5. Robustee: Robusteea limbajului este asigurat de o serie de mecanisme de nalt performan, cum
ar fi verificarea timpurie a programelor pentru posibile probleme, verificarea dinamic trzie
(runtime) i forarea programatorului s elimine situaiile care sunt presupuse c ar putea genera
probleme la rulare. Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este c asigur
un puternic suport pentru verificarea programelor n timpul compilrii, n ideea de a elemina un
numr ct mai mare de erori. Din pcate, limbajul C++ motenete din C o serie de probleme la
verificarea n timpul compilrii i acesta doar pentru a pstra compatibilitatea n jos. Deoarece Java
34
constructiicdsd@gmail.com
nu are ce compatibilitate n jos s menin, nu este nevoit s suporte consecinele unor implementri
sau specificaii vechi, greite sau incomplet fcute.
6. Dinamicitate: Dinamicitatea limbajului Java o depete pe cea a limbajelor convenionale. De
exemplu, considerm c o companie oarecare A produce o librrie sau o component activ i o
companie B o cumpr i o folosete; dac compania A produce o nou versiune a aceleiai
componente, atunci, pentru a o integra, compania B trebuie s-i recompileze ntreaga aplicaie i s
o redistribuie din nou clienilor si. Deoarece Java face conexiunile dintre module abia la rulare, sunt
eliminate cu succes aceste probleme. Indiferent cte modificri ar interveni n librria productorului
A (cu pstrarea compatibilitii), Java se va executa fr recompilri i probleme. Acest mecanism
este sprijinit de modul cum sunt concepute aplicaiile Java. O interfa specific un set de metode i
de obiecte pe care le poate executa, dar nu specific i cum trebuie executate O clas implementeaz
o interfa, implementnd toate obiectele i metodele interfeei. De asemenea motenirea paseaz
att metodele ct i implementarea lor de la superclas la subclas. O clas este capabil s
moteneasc numai o singur clas, dar poate implementa cte interfee dorete. Se poate observa c
interfeele promoveaz reutilizarea codului i conecteaz elementele ntre ele specificnd ce se
conecteaz i nu cum se face. Un alt avantaj este identificarea n timpul rulrii al tipului de dat,
printr-un mecanism foarte ingenios: fiecare instan de obiect are o metod numit getClass prin
care se poate determina din ce clas s-a instaniat metoda respectiv; n acest mod se poate
determina foarte elegant tipul obiectului respectiv. Acest facilitate este inexistent n C sau C++.
Tot prin aceast metod se execut i verificrile de rigoare din timpul rulrii, i aceasta deoarece n
Java programele sunt verificate att n timpul compilrii ct i n timpul rulrii. Astfel se poate avea
deplin ncredere n conversiile de date executate n Java, deoarece sunt verificate de dou ori. n C
sau C++, limbajul se bazeaz pe faptul c programatorul a executat o conversie de date (cast)
corect, cea ce nu ntotdeauna este adevrat. Ca o facilitate n plus, se poate cuta o clas (n timpul
rulrii), specificndu-se numai numele acesteia ntr-un ir de caractere: odat gsit, clasa se poate
ncarca i instania, oferind un dinamism complet aplicaiilor fr s se mai pun problema eliberrii
memoriei sau coruperii datelor. Programatorii Java pot fi relativ fr griji din pricina lucrului cu
memoria, tocmai din cauz c nu trebuie s lucreze direct cu ea. Din cauz c nu exist pointeri, nu
se pot depi limitele vectorului cu care se lucreaz i s se suprascrie accidental alte date, sau s se
capate acces neutorizat la zone de memorie care nu-i aparin, situaii care se pot ntlni n C sau
C++. Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este c ele
nu impun luarea unor decizii explicite de implementare prea devreme. Java are la baz o legare
dinamic forat de compilator. Aceste implementri sunt nsoite de o asisten: de exemplu, dac la
invocarea unei metode se obine ceva greit, programatorul este ntiinat n timpul compilrii i nu
n timpul execuiei, cnd invocarea respectiv are loc efectiv.
7. Depanare uoar: Datorit fluxului de cod binar al crui proprietar este sistemul Java, mai mult
informaie este stocat n format binar, ceea ce face operaia de depanare (debugging) mult mai
facil. Un dezansamblor, este n msur s restabileasc codul n procent de aproape 100% la forma
sa iniial, lucru care la alte limbaje este practic imposibil. La conceperea formatului byte-code-ului
s-a inut cont de faptul c acesta uremaz s fie intrepretat i transformat direct n cod main
specific platformei pe care se lucrez. S-a obinut cod puternic optimizat, optimizrile necesare
realizndu-se n timpul conversiei.
8. Tipizare static: Obiectele folosite ntr-un program Java trebuie obligatoriu declarate nainte de a fi
folosite. n acest mod se uureaz sarcina compilatorului de a detecta conflicte de tip.
9. Limbaj concurent: Java are capacitatea de a executa mai multe secvene de cod simultan. Aceste
secvene de cod se numesc fire de execuie (thread-uri).
10. Limbaj distribuit: Java ofer posibilitatea dezvoltrii de aplicaii pentru Internet capabile s ruleze
pe platforme distribuite i eterogene. Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul n reea i are inclus suportul nativ pentru aplicaii care lucreaz cu mai multe fire de
execuie. Exist primitive de sincronizare independente de sistemul de operare i mecanisme bazate
35
Noiuni fundamentale
________________________________________________________________
pe metode de monitorizare i condiionare. Integrnd toate aceste mecanisme n nucleul limbajului,
acesta a devenit mult mai simplu, robust i mai uor de folosit. Limbajul ofer un rspuns mult mai
interactiv i un comportament n timp real. Acesta este limitat de platforma care asigur tot suportul
pentru aplicaie. Mediul Java are un bun rspuns n timp real, rulnd deasupra unor sisteme de
operare. Rspunsul sistemului i modul de tratare al task-urilor este cel care determin rspunsul n
timp real al aplicaiei scrise n Java.
11. Suport pentru reele de calculatoare: Modul n care acest suport este integrat n limbaj i uurina
cu care se implementeaz mecanisme deosebit de complexe, fac ca Java s fie unic n domeniul
reelelor de calculatoare. Librriile i rutinele implementate asigur suport pentru protocoale TCP/IP
(Transmission Control Protocol/Internet Protocol) precum i pentru HTTP (HyperText Transfer
Protocol) i FTP (File Transfer Protocol). Se poate afirma c este mult mai simplu i uor s se
realizeze o conexiune n reea utliliznd limbajul Java dect limbajele C sau C++, programatorul
reuind s aceseze obiecte din reea aproape la fel de simplu i uor de parc s-ar lucra cu sistemul
local de fiiere.
12. Securitate ridicat. Java asigur un grad de securitate ridicat, uneori cu un plus de efort din partea
programatorului. Accesul la memorie este posibil numai prin verificarea prealabil a drepturilor de
acces. Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
s nu fie posibil. De asemenea, este asigurat neptrunderea viruilor pe timpul executrii unei
aplicaii. Securitatea a fost deasemenea un punct vizat pe parcusul elaborrii limbajului, cu att mai
mult cu ct a fost vizat s ating mediile orientate pe reele i programare disribuit, permitndu-se
construirea de medii eliberate de virui sau programe cu intenii obscure, implementnd de asemenea
i librrii de funcii avansate de criptografie, majoritateta bazate pe tehnologii de ultim or (chei
publice). Exist o puternic interdependen ntre robustee i securitate: eliminndu-se pointerii se
elimin practic orice metod de a fora accesul la structurile de date al altor aplicaii sau la accesarea
membrilor protejai sau privai la care, n mod normal, nu au acces din cadrul programului, aceasta
eliminnd majoritatea cilor de acces a viruilor.
13. Extensibilitate. Limbajul Java permite includerea de metode native, adic de funcii scrise n alt
limbaj (de obicei C++). Metodele native sunt legate dinamic la programul Java la momentul
executrii, rolul lor fiind n principal de a mri viteza de execuie pentru anumite secvene din
program.
Observatie:
Utilitarele javac.exe si java.exe se afla in subdirectorul bin al directorului de instalare al kit-ului
Java. Asrfel, programele Java ale caror surse se afla in subdirectorul bin, vor putea fi compilate si
interpretate. In aceste conditii, insa, se ajunge la supraincarcarea directorului bin, iar gestiunea
programelor se va face foarte greu. Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc, trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare.
Setarea variabilei PATH se face astfel:
Settings->Control Panel->System->Advanced->Evironment Variables->System Variables>PATH->Edit->se adauga calea catre subdirectorul bin. De ex, C:\j2sdk1.4.2_10\bin;
36
constructiicdsd@gmail.com
Pentru a testa daca totul este configurat corespunzator, se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac help. Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare: javac is not recognized as an internal or external
command, operable program or batch file)
Android
Noiuni fundamentale
________________________________________________________________
23 Septembrie 2008 - are loc lansarea lui Android 1.0.
9 Februarie 2009 - apare Android 1.1 cu API schimbat, prezentnd: timp de stingere al
ecranului crescut la utilizarea hands-free-ului din telefon, arta i ascunde dialpad meniul de
apel, suport pentru salvarea ataamentelor din MMS (Multiple Messages).
......................
9 Iulie 2012 - apare versiunea Android 4.1.1 (Jelly Bean), bazat pe Linux kernel 3.0.31.
Prezint ca particulariti: notificri intuitive care permit o interaciune mai ampl: opiunea de
auto redimensionare i auto-aranjarea icoanelor pe ecran, cu o posibil poziionare a unui
widget astfel nct acesta s poat fi accesat cat mai uor; un nou meniu de share, un meniu
mbuntit pentru opiunea open with (momentul n care mai mult de o aplicatie poate rula ceea
ce se dorete s se deschid); grafic uor schimbat i ceva mai luminoas a sub-meniurilor;
mici modificri n categoria Developer Options; modificri la nivel de tranziii (dupa fiecare
poz apare o tranziie care permite ntoarcerea n modul camer), cea mai evident modificare
fiind posibilitatea de accesare a galeriei printr-un swipe spre stanga. prezena informaiilor
despre ceas, baterie i semnal; lista melodiilor poate fi accesat cu ajutorul pictogramei de sub
search; mbuntirea considerabil a vitezei sistemului de operare prin intermediul
modificrilor denumite generic Project Butter, ceea ce permite ca partea grafic s ruleze tot
timpul la 60 de cadre pe secund, cu un suport de buffer triplu (acesta ajut sistemul de operare
s prezic ce urmeaz s faca utilizatorul n funcie de poziia degetelor pe ecran); un nou sistem
de rspuns sub forma unor carduri de rspuns, care nu doar c afieaz informaia cerut, dar o
i expune vocal cu ajutorul asistentului n limba englez; Google Now nva cat mai multe
despre utilizator i caut s ofere informaii personalizate, n funcie de nevoile fiecruia: trafic,
vreme, agend, cltorii, bilete de avion, programri etc.
constructiicdsd@gmail.com
39
Noiuni fundamentale
________________________________________________________________
& QTOCTAVE
4.
40
3.
4.
constructiicdsd@gmail.com
1.
2.
3.
4.
5.
41
Noiuni fundamentale
________________________________________________________________
6.
7.
Dupa lansarea programului, din bara de unelte, de sus, alegeti Configuration (Config,
Configuracion) dupa caz, si alegeti Configurari Generale;
42
8.
constructiicdsd@gmail.com
Apoi, alegeti OCTAVE Select octave.exe din folderul bin al programului QTOctave
Open OK si reporniti programul.
Anexa:
Distinct English terms are used
http://www.techno-science.net/?onglet=glossaire&definition=162 :
Informatics (information science): what emerges from the study of systems, biological or
artificial, that store, process and communicate information. This includes the study of neural
systems, as well as computer systems.
Computer Science (Theoretical Computer): this follows from the procedural epistemology
, or the study of such algorithms, and thus indirectly of software and computers.
Computer Engineering (Computer Engineering): what emerges from the manufacture and
use of computer hardware.
Software Engineering (Software Engineering): what emerges from the modeling and
development of software, this includes two aspects: data and processing, and the two are
related in the implementation of the data processing ( Data Processing ). In France, in practice,
the term software engineering rather corresponds to software engineering or engineering
software .
computing center, are in the field of computing. However, the term computer means more often
those who design, deploy and implement solutions.
43
Noiuni fundamentale
________________________________________________________________
Probleme organizatorice:
Disciplina: Informatica aplicata
Colectiv de cadre didactice
Conf.Univ.Dr.Ing.Eugen Petac curs
Asist.Univ.Dr. Cristina Serban grupe laborator
Observatii
Colocviu:
Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 0.5 *Punctaj test grila (PTG)
+0.3 *Punctaj activitate laborator (PAL) (prezenta activa, rezolvare teme etc)+0.2 *Punctaj
evaluare la laborator(PVL)
Organizare test grila: Saptamana a 13-a, Luni,
Conform programarii de mai sus, la Testul grila participa numai studentii din seria
respectiva, care au sustinut activitatea la laborator conform programarii, pe parcursul
semestrului I.
Reamintim ca prezenta la activitatile didactice este obligatorie!!! Recuperarea
activitatilor de laborator se face conform regulamentelor facultatii si universitatii, dupa
sesiune.
44