Jezyki i srodowiska programowania system - PowerPoint PPT Presentation

1 / 21
About This Presentation
Title:

Jezyki i srodowiska programowania system

Description:

Title: Obiektowe j zyki zapyta 1..5 Subject: Wyk ady w Polsko-Japo skiej Wy szej Szkole Technik Komputerowych Author: subieta Last modified by – PowerPoint PPT presentation

Number of Views:54
Avg rating:3.0/5.0
Slides: 22
Provided by: subi150
Category:

less

Transcript and Presenter's Notes

Title: Jezyki i srodowiska programowania system


1
Jezyki i srodowiska programowania systemów
rozproszonych
Wyklad 5 Stos srodowisk, rezultaty
zapytan, funkcja nested
Wykladowca Tomasz Kowalski Wyklady przygotowane
na podstawie materialów prof. Kazimierza Subiety

2
Stos srodowisk
environment stack
  • Pojecie stosu srodowisk pojawilo sie w
    informatyce w latach 60-tych.
  • Od tego czasu stos ten jest elementem konstrukcji
    wiekszosci znanych jezyków, wlaczajac Pascal,
    C/C, Smalltalk, Java, itd.
  • Idea jest prosta i oczywista, ale nie jest czesto
    dostatecznie dobrze objasniona w podrecznikach.
  • Przy konstrukcji semantyki jezyków zapytan musimy
    wrócic do stosu srodowisk.
  • Zasady zarzadzania srodowiskami programu maja
    wplyw na technike i niezawodnosc programowania.
    Sa one nastepujace
  • Srodowisko lokalne danego bytu programistycznego
    ma priorytet w stosunku do srodowiska bardziej
    globalnego.
  • Zasada lokalnego kontekst.
  • Zasada dowolnego zagniezdzania wolan procedur.

3
Ilustracja dzialania stosu srodowisk
Procedura p1 wywoluje procedure p2, która
wywoluje procedure p3
Wywolanie p3
Sekcja lokalnych danych i parametrów procedury
p3 Sekcja lokalnych danych i parametrów procedury
p2 Sekcja lokalnych danych i parametrów procedury
p1 ... Sekcja danych globalnych
Wywolanie p2
Wyjscie z p3
Sekcja lokalnych danych i parametrów procedury
p2 Sekcja lokalnych danych i parametrów procedury
p1 ... Sekcja danych globalnych
Sekcja lokalnych danych i parametrów procedury
p2 Sekcja lokalnych danych i parametrów procedury
p1 ... Sekcja danych globalnych
Wywolanie p1
Wyjscie z p2
Sekcja lokalnych danych i parametrów procedury
p1 ... Sekcja danych globalnych
Sekcja lokalnych danych i parametrów procedury
p1 ... Sekcja danych globalnych
Wyjscie z p1
... Sekcja danych globalnych
... Sekcja danych globalnych
czas
4
Wiazanie
binding
  • Wiazanie jest to zastepowanie nazw wystepujacych
    w tekscie programu na byty programistyczne czasu
    wykonania, np. na adresy RAM, identyfikatory
    obiektów, adresy startowe procedur, itd.
  • Przykladowo, wiazanie nazwy zmiennej x oznacza
    zastapienie tej nazwy przez adres RAM, gdzie
    przechowywana jest wartosc zmiennej x.
  • Wiazanie moze byc wczesne lub statyczne (early
    binding, static binding), czyli odbywa sie w
    czasie kompilacji, albo pózne lub dynamiczne
    (late binding, dynamic binding), czyli odbywa sie
    w czasie wykonania.

5
Przykladowa sytuacja na stosie srodowisk
Wykonywany jest blok l w procedurze p2 wywolanej
z p1.
Kolejnosc poszukiwania wiazania dla zmiennej g
procedure p1( x, y ) deklaracje zmiennych a,
b ... call p2( 55, 83 ) ...
procedure p2( z, t ) deklaracje zmiennych
c,d ... ( blok l )
deklaracje zmiennych e, f g 75
... ...
Wierzcholek stosu
Zmienne e, f zadeklarowane wewnatrz bloku
l Zmienne c, d i parametry z(55), t(83)
procedury p2 Zmienne a, b i parametry x, y
procedury p1 ......... Zmienne i inne byty
globalne
Dól stosu
6
Po co jest mechanizm stosu srodowiskowego?
  • Abstrakcja i hermetyzacja.
  • Izolacja.
  • Semantyczna niezaleznosc i ponowne uzycie.
  • Wywolywanie procedur z innych procedur.
  • Spójne zarzadzanie nazwami uzytymi w programie.
  • Realizacja metod transmisji parametrów.
  • Kontrola typologiczna (analiza statyczna).
  • Podane motywacje maja znaczenie dla jezyków
    zapytan, pozwalajac zrealizowac takie ich
    zalozenia jak mozliwosc dowolnego zagniezdzania
    zapytan, mozliwosc powolywania lokalnych nazw
    wewnatrz zapytan, mozliwosc uzywania nazw z bazy
    danych lacznie z nazwami zmiennych
    programistycznych, nazwami procedur, funkcji i
    metod.

7
Stos srodowisk w SBA
  • Stos srodowisk dostosujemy do wymagan semantyki
    jezyków zapytan oraz konstrukcji pochodnych,
    takich jak perspektywy, procedury bazy danych,
    itd. Stos bedzie spelniac nastepujace zalozenia
  • Bedzie zgodny z modelami skladu AS0 - AS3.
  • Bedzie w jednorodny sposób traktowal dane
    indywidualne i kolekcje.
  • Maksymalny rozmiar stosu nie bedzie
    implementacyjnie ograniczony.
  • Stos bedzie skladal sie z sekcji, gdzie kazda
    sekcja bedzie przechowywac informacje o pewnym
    srodowisku czasu wykonania, np. srodowisku
    wywolania pewnej funkcji, procedury lub metody,
    srodowisku wnetrza pewnego obiektu, srodowisku
    wnetrza pewnej klasy, srodowisku obiektów bazy
    danych, itd. Rozmiar sekcji nie bedzie
    ograniczony.
  • Na dole stosu umieszczone beda sekcje globalne,
    do których naleza globalne zmienne aplikacji,
    baza danych, wspólne biblioteki procedur i
    funkcji, oraz zmienne srodowiskowe systemu
    komputerowego.

8
Binder
binder
  • Podstawowa struktura przechowywana na stosie
    srodowisk jest binder.
  • Binder jest para ltn, xgt, gdzie n jest zewnetrzna
    nazwa (nazwa zmiennej, stalej, obiektu, funkcji,
    perspektywy, procedury, metody, itd.), zas x jest
    bytem czasu wykonania (zwykle referencja do
    obiektu).
  • Pare ltn, xgt bedziemy zapisywac n( x ).
  • Definicje te uogólnimy.
  • Koncepcja bindera jest bardzo prosta. Zadaniem
    bindera n(x) jest wiazanie, czyli zastapienie
    nazwy n wystepujacej w zapytaniu lub programie na
    wartosc x, bedaca bytem czasu wykonania.
  • Dla dowolnej nazwy wystepujacej w programie musi
    byc na stosie odpowiedni binder, który zamieni te
    nazwe na byt czasu wykonania.
  • Nazwa, dla której odpowiadajacy jej binder nie
    istnieje, nie moze byc zwiazana, czyli jest
    bledna.
  • Przy luznych modelach skladu (tzw.
    pólstrukturalnych, semistructured) mozemy uznac,
    ze wiazanie takiej nazwy jest puste (jest pustym
    zbiorem).

9
Rola binderów
  • Uogólnienie Binder jest para n(x), gdzie n moze
    byc dowolna zewnetrzna nazwa definiowana przez
    programiste, uzytkownika, projektanta aplikacji,
    projektanta bazy danych, itp., zas x moze byc
    dowolnym rezultatem zwracanym przez zapytanie.
  • W podejsciu stosowym do jezyków zapytan stos
    srodowisk sklada sie z sekcji odpowiadajacych
    poszczególnym srodowiskom czasu wykonania.
  • Sekcja jest zbiorem binderów do bytów
    programistycznych odpowiadajacego jej srodowiska.
  • W budowanej przez nas semantyce bindery beda
    mialy takze inne zastosowania, w szczególnosci,
    beda niekiedy zwracane jako rezultaty zapytan.
  • Stos srodowiskowy bedziemy oznaczac ENVS
    (ENVironment Stack).

10
Przykladowy sklad
11
Przykladowy ENVS
Sekcja chwilowa przetwarzania Sekcja chwilowa
przetwarzania - wlasnosci lokalne wywolanej
metody Sekcja chwilowa przetwarzania - wlasnosci
wnetrza aktualnie przetwarzanego obiektu
Prac Sekcje danych globalnych
Sekcja bazy danych
12
Pojecie stanu
  • Pojedyncza referencja jest szczególnym
    przypadkiem rezultatu zapytania.
  • W ten sposób, poprzez definicje skladu obiektów i
    stosu ENVS uzyskalismy precyzyjna definicje
    pojecia stanu.
  • W podejsciu stosowym pojecie stanu (dziedzina
    Stan) jest definiowane jako stan skladu obiektów
    plus stan stosu srodowisk.
  • Brak pojecia stanu jest bardzo powazna wada wielu
    koncepcji i modeli obiektowych, w szczególnosci
    standardów SQL-99, XQuery i ODMG.
  • Zgodnie z wczesniejszymi definicjami, semantyka
    zapytania jest funkcja odwzorowujaca stan, czyli
    sklad obiektów oraz stan ENVS, w rezultat.
  • Odwzorowaniem, które bedzie podstawa dalszych
    definicji, jest semantyka pojedynczej nazwy
    wystepujacej w zapytaniu lub w programie.
  • Czynnosc ewaluacji takiej nazwy nosi nazwe
    wiazania.
  • Wiazanie odbywa sie na ENVS zgodnie z regula
    stosu, które nakazuje przeszukiwanie stosu od
    jego wierzcholka w kierunku jego podstawy, z
    pominieciem niektórych sekcji.

13
Reguly wiazania nazw
  • Zasady przeszukiwania stosu i wyznaczania
    rezultatu wiazania sa nastepujace
  • Dla wiazanej nazwy n, ENVS jest przeszukiwany az
    do znalezienia sekcji, w której znajduje sie
    binder oznaczony nazwa n. Po znalezieniu takiej
    sekcji wyszukiwanie jest zakonczone.
  • Wszystkie bindery z tej sekcji oznaczone nazwa n
    tworza rezultat przeszukiwania.
  • Rezultat wiazania uzyskuje sie poprzez odrzucenie
    ze znalezionych binderów nazwy n i pozostawienie
    wylacznie wartosci tych binderów.

14
Mechanizm przeszukiwania stosu - funkcja bind
start przeszukiwania stosu
Prac(i1) X(i127) Y(i128) N(5)
I("Anna") ......... Nazwisko(i10) Zarobek(i11)
Adres(i12) PracujeW(i16) ......... Prac(i1)
Prac(i5) Prac(i9) Dzial(i17)
Dzial(i22) .........
  • bind( nazwa ) - funkcja wiazania nazw
  • bind( Prac ) i1
  • bind( Y ) i128
  • bind( I ) "Anna"
  • bind( Zarobek ) i11
  • bind( Dzial ) i17, i22

Binder Prac(i1) znajduje sie w dwóch sekcjach
stosu, ale w tym przypadku wiazanie nazwy Prac
zwróci i1, a nie i1, i5, i9 .
15
Rezultaty zwracane przez zapytania
  • Oprócz referencji i wartosci atomowych zapytania
    moga zwrócic bindery.
  • Uogólnienie podanych zalozen prowadzi do
    nastepujacej rekurencyjnej definicji dziedziny
    Rezultat
  • Atomowa wartosc nalezaca do V (np. 3, "Kowalski",
    TRUE, itd.) nalezy do dziedziny Rezultat.
  • Referencja do obiektu (inaczej identyfikator
    obiektu) dowolnego typu nalezaca do I nalezy do
    dziedziny Rezultat. W szczególnosci, do dziedziny
    Rezultat naleza referencje do metod, procedur,
    funkcji, perspektyw, itd.
  • Jezeli x ? Rezultat, zas n ? N jest dowolna
    nazwa, wówczas para n(x) nalezy do dziedziny
    Rezultat. Taki rezultat bedziemy nazywac nazwana
    wartoscia w innym kontekscie zostal on juz
    okreslony jako binder.
  • Jezeli x1, x2, x3, ... sa atomowymi wartosciami,
    referencjami lub nazwanymi wartosciamy, wówczas
    struct x1, x2, x3, ... ? Rezultat. Kolejnosc
    elementów w strukturze ma znaczenie.
  • Jezeli x1, x2, x3, ... sa wyzej wymienionymi
    rezultatami, wówczas bag x1, x2, x3, ... ?
    Rezultat oraz sequence x1, x2, x3, ... ?
    Rezultat.

16
Przyklady zbioru Rezultat
  • Atomowe
  • 25, "Kowalski", i11, i18
  • Zlozone
  • structi1, i56
  • sequence i1, i6, i11
  • bag structi1, i56, structi6, i72,
    structi11, i72
  • bagstructn("Kowalski"), Zarobek(2500), d(i56)
  • bagstruct Dzial(i56), Prac( bag struct
    n("Nowak"), s(i9 ) ,
    struct n("Stec" ), s(i14) )
  • Przy pomocy podanych konstruktorów mozna tworzyc
    struktury przypominajace obiekty. Nie sa one
    jednak obiektami, poniewaz nie mozna im przypisac
    wlasnych identyfikatorów i nie mozna ich zwiazac
    z istniejaca lub nowa klasa. Uzywajac
    terminologii ODMG, rezultaty zapytan sa
    literalami. Takiej terminologii nie bedziemy
    stosowac.

17
Rezultaty zapytan zapisane jako tablice
18
Otwieranie nowego zakresu na stosie srodowisk
  • W klasycznych jezykach programowania otwieranie
    nowego zakresu na wierzcholku ENVS nastepuje w
    momencie wywolania procedury (funkcji, metody)
    lub w momencie wejscia sterowania w nowy blok.
    Skasowanie tej sekcji nastepuje w momencie
    zakonczenia dzialania procedury (funkcji, metody)
    lub w momencie wyjscia sterowania z bloku.
  • Do klasycznych sytuacji otwierania nowego zakresu
    na ENVS dolaczymy nowa. Stanowi ona istote
    podejscia stosowego do jezyków zapytan. Pewne
    operatory wystepujace w zapytaniach (zwane
    niealgebraicznymi) dzialaja na stosie podobnie do
    wywolan bloków programów.
  • Np. w zapytaniu jezyka SBQL
  • Prac where (Nazwisko Kowalski and Zarobek gt
    1000)
  • czesc (Nazwisko Kowalski and Zarobek gt
    1000) jest blokiem, który jest ewaluowany w
    nowym srodowisku okreslonym przez wnetrze
    obiektu Prac aktualnie testowanego przez operator
    where.
  • Na stos ENVS jest wkladana nowa sekcja
    zawierajaca bindery do wszystkich wewnetrznych
    wlasnosci (atrybutów, metod, itd.) tego obiektu
    Prac.

19
Ilustracja otwierania nowego zakresu
Operator where iteruje po rezultacie zapytania
PRAC. W kazdej iteracji wklada (i po ewaluacji
zdejmuje) sekcje stosu zawierajaca bindery do
wnetrza kolejnego obiektu PRAC.
PRAC where
(Nazwisko Kowalski and Zarobek gt 1000)
wiazanie
wiazanie
wiazanie
PRAC (i1) PRAC (i5) PRAC(i9) DZIAL (i17)
DZIAL (i22)
Stos w momencie ewaluacji zapytania
PRAC. Ewaluacja (wiazanie) nazwy PRAC zwraca
i1, i5, i9
Stos w momencie ewaluacji pod-zapytania (Nazwisko
Kowalski and Zarobek gt 1000) dla trzeciego
obiektu PRAC. Ewaluacja (wiazanie) nazwy Nazwisko
zwraca i10. Ewaluacja (wiazanie) nazwy Zarobek
zwraca i11.
20
Funkcja nested
  • Intencja jest zdefiniowanie funkcji, której
    argumentem jest referencja do obiektu, zas
    wynikiem jest wewnetrzne srodowisko tego obiektu,
    które ma byc umieszczone na ENVS.
  • Takie srodowisko jest zbiorem binderów.
  • Funkcje nazwalismy nested.

nested(i9) Nazwisko (i10 ), Zarobek (i11 ),
Adres (i12 ), PracujeW (i16 )
21
Uogólnienie funkcji nested
  • Dla dowolnej wartosci atomowej v ? V ? nested( v
    ) ? (zbiór pusty).
  • Dla identyfikatora i obiektu atomowego (nie
    posiadajacego podobiektów) ? nested( i ) ?.
  • Dla obiektu zlozonego lti, n, lti1, n1, ...gt, lti2,
    n2, ...gt, ... , ltik, nk, ...gt gt ? nested( i )
    n1(i1), n2(i2), ... , nk(ik) .
  • Dla identyfikatora i obiektu pointerowego lti, n,
    i1gt dla którego istnieje w skladzie obiekt lt i1,
    n1, ...gt ? nested( i ) n1(i1) .
  • Dla dowolnego bindera n(x) ? nested( n(x) )
    n(x) .
  • Jezeli argumentem funkcji nested jest struktura
    elementów, wówczas wynik jest suma
    teorio-mnogosciowa rezultatów funkcji nested dla
    pojedynczych elementów tej struktury ?
  • nested( struct x1, x2, x3, ...) nested( x1 )
    ? nested( x2 ) ? nested( x3 ) ? ...
Write a Comment
User Comments (0)
About PowerShow.com