next up previous contents
Next: Referinte Up: Miez - Core Previous: Miez - Core   Cuprins

Date

Datele unui program sursa plint le reprezinta variabilele. O variabila are asociata o valoare si un tip. Tipul valoarii este unul dintre urmatoarele posibile (in numar fix): Dintr-o alta perspectiva, valorile se pot clasifica in domenii si functii, sau scalare si vectoriale; valorile domenii reprezinta, asa cum le spune si numele o multime de valori scalarea (un domeniu de valori); valorile functii pun in corespondenta valori domenii cu alte variabile. Dupa cum s-s spus si la introducere, variabilele modeleaza structuri de date care pot fi indexate, adica exista functii index ce pun in corespondenta valori domenii cu variabile; in acest gen trebuie vazuta sintagma valori domenii - valori functii. Valorile functii sunt ultimele doua amintite in enumerarea de mai sus, iar valorile domenii restul. Nulul este o valoare mai speciala, in sensul ca nu reprezinta nimic util. Facand o analogie cu circuitele electrice, in aplicatia plint valoarea nul exista intr-o singura instanta in memorie, adica este un fel de ``nul'' electric (masa), pe cand restul valorilor (potentialele electricee) putand lua o serie de valori.

Numarul de tipuri de valori se poate extinde (si probabail ca in versiuni viitoare se va intampla acest lucru) prin adaugarea unor proceduri pentru copierea, duplicarea, stergerea, alocarea implicita a unei valori de un anumit tip; se va avea in vedere pe viitor crearea unor valori de tip: data opaca (sir de octeti), fisier text, fisier binar, socketuri, entitati IPC (comunicare intre procese).

Variabilele au asociata o anumita valoare; mai multe variabile pot sa refere aceeasi valoare, si cand i se schimba valoarea la una, aceasta se va reflecta si in cealalta; de asemenea ``variabilele'' in sensul identificatorilor programului pot sa-si imparta aceeasi valoare; tot asa, valorile functii pot sa nu fie injective.
Tipul unei variabile este de fapt un pointer la o secventa de operatii (interfata) cheie; tipul unei variabile este de fapt o cheie pentru tipul ei; operatiile care trebuiesc implementate pentru ai definii tipul sunt cuprinse intr-o structura de pointeri la functii: [first=29,last=41]plint/data/variable.h Indiferent de valoarea ei, motorul tipului variabilei poate face orice in aceste functii. Tipurile de mai sus se regasesc definite (``typedef''d) in fisieruldata/types.h: [first=29,last=49]plint/data/types.h

Fie ca e valoare sau variabila, o data are alocata o memorie dinamica; cum s-a spus mai sus aceste date pot fi folosite de mai multe alte date deodata. Prin urmare, s-a prevazut un mecanism de numarare a referintelor la date (``reference counting''). O data se elibereaza numai cand contorul de referinte ajunge la 0. Duplicarea unei date inseamna incrementarea numarului de referinte. Eliberarea unei date inseamna decrementarea numarului de referinte. Copierea unei date inseamna returnarea unei noi date alocate, care sa fie ``copia'' fidela a unei date initiale; notiunea de fidel este interpretabila.

Definirea tipurilor valorilor trebuie sa prevada operatii de conversie la alte tipuri (cu valori implicite daca nu se poate converti), de comparare, de specificare a lungimii (abstract), de incrementare si decrementare (abstract).

Avand in vedere ca printr-o valoare se poate ajunge la alte variabile si ca valorile sunt alocate dinamic, rezulta ca ele pot fi vazut ca memorii pentru variabile.

Urmatoarele trei sectiuni abordeaza cele trei personalitati ale valorilor: domenii, functii, memorii. Mai intai insa, se va vorbi putin despre numararea referintelor.


Subsections
next up previous contents
Next: Referinte Up: Miez - Core Previous: Miez - Core   Cuprins
Sebastian Glita 2002-06-19