SW wykład 4 - Slajd1: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arturas (dyskusja | edycje)
Nie podano opisu zmian
Tarlecki (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
{{Semantyka i weryfikacja programów/Wykład 4}}
{{Semantyka i weryfikacja programów/Wykład 4}}
[[Grafika:sw0400.png|center|frame]]
[[Grafika:sw0400.png|center|frame]]
Przejdźmy teraz do prezentacji kolejnej metody definiowania semantyki
języków programowania: semantyki denotacyjnej.
(Uwaga: "denotacyjny" to nie jest piękne polskie słowo, ale tę
terminologię można już uznać za powszechnie przyjętą, szczególnie, że
nie bardzo potrafimy znaleźć rdzennie polski odpowiednik. "Semantyka
znaczeniowa" z pewnością nie brzmi lepiej...)
Podstawowy pomysł jest dość oczywisty i tak naprawdę był już w tych
materiałach wcześniej wykorzystywany. Otóż: semantykę programów i
innych fraz języka opisujemy tu przypisując im wprost ich znaczenia
--- pewne matematyczne obiekty. Funkcje, przypisujące frazom języka
ich znaczenia też zresztą często nazywa się semantyką, choć my będziemy
się starali systematycznie używać określenia "funkcje semantyczne".
Definiując semantykę denotacyjną języka programowania, jak zwykle
rozpoczynamy od zdefiniowania jego składni. Napisy, tworzące poprawne
frazy poszczególnych kategorii składniowych języka, tworzą zbiory,
zwane tu "dziedzinami syntaktycznymi". Zaczynamy więc od ich definicji.
Podobnie, zbiory obiektów, które potencjalnie mogą być znaczeniami
fraz języka, nazywane są tu "dziedzinami semantycznymi". Ich
precyzyjna definicja to kolejny krok definiowania semantyki
denotacyjnej języka.
W końcu definiujemy funkcje semantyczne: dla danej kategorii
składniowej języka, funkcja taka przypisuje frazom tej kategorii
(elementom odpowiadającej tej kategorii dziedziny syntaktycznej) ich
znaczenia (elementy odpowiadającej jej dziedziny semantycznej).
Kluczową cechą denotacyjnej metody opisu semantyki jest jej
kompozycjonalność: znaczenie każdej frazy języka zależy jedynie od
znaczeń jej bezpośrednich składowych. Podkreślmy: od ich znaczeń, nie
od ich postaci. Definiując znaczenie danej frazy języka określamy je
więc jednolicie względem znaczeń jej bezpośrednich składowych, nie
pozwalając sobie na analizę ich syntaktycznej postaci, czy na sięganie
"w głąb", po znaczenia właściwych pod-składowych tychże składowych.

Wersja z 10:25, 2 wrz 2006

<<powrót do strony wykładu

Semantyka denotacyjna Dziedziny składniowe i semantyczne Funkcje semantyczne Kompozycjonalność Tiny. Semantyka denotacyjna Tiny. Semantyka denotacyjna, c.d. Pojęcia pomocnicze Pojęcia pomocnicze, c.d. |Tiny. Semantyka denotacyjna, c.d. Tiny. Semantyka denotacyjna, c.d. Problem z while Konstrukcje stałopunktowe Konstrukcje stałopunktowe, c.d. Konstrukcje stałopunktowe, c.d. Przykład Przykład, c.d. Dowód Dowód Zgodność semantyki denotacyjnej

Przejdźmy teraz do prezentacji kolejnej metody definiowania semantyki języków programowania: semantyki denotacyjnej.

(Uwaga: "denotacyjny" to nie jest piękne polskie słowo, ale tę terminologię można już uznać za powszechnie przyjętą, szczególnie, że nie bardzo potrafimy znaleźć rdzennie polski odpowiednik. "Semantyka znaczeniowa" z pewnością nie brzmi lepiej...)

Podstawowy pomysł jest dość oczywisty i tak naprawdę był już w tych materiałach wcześniej wykorzystywany. Otóż: semantykę programów i innych fraz języka opisujemy tu przypisując im wprost ich znaczenia --- pewne matematyczne obiekty. Funkcje, przypisujące frazom języka ich znaczenia też zresztą często nazywa się semantyką, choć my będziemy się starali systematycznie używać określenia "funkcje semantyczne".

Definiując semantykę denotacyjną języka programowania, jak zwykle rozpoczynamy od zdefiniowania jego składni. Napisy, tworzące poprawne frazy poszczególnych kategorii składniowych języka, tworzą zbiory, zwane tu "dziedzinami syntaktycznymi". Zaczynamy więc od ich definicji.

Podobnie, zbiory obiektów, które potencjalnie mogą być znaczeniami fraz języka, nazywane są tu "dziedzinami semantycznymi". Ich precyzyjna definicja to kolejny krok definiowania semantyki denotacyjnej języka.

W końcu definiujemy funkcje semantyczne: dla danej kategorii składniowej języka, funkcja taka przypisuje frazom tej kategorii (elementom odpowiadającej tej kategorii dziedziny syntaktycznej) ich znaczenia (elementy odpowiadającej jej dziedziny semantycznej).

Kluczową cechą denotacyjnej metody opisu semantyki jest jej kompozycjonalność: znaczenie każdej frazy języka zależy jedynie od znaczeń jej bezpośrednich składowych. Podkreślmy: od ich znaczeń, nie od ich postaci. Definiując znaczenie danej frazy języka określamy je więc jednolicie względem znaczeń jej bezpośrednich składowych, nie pozwalając sobie na analizę ich syntaktycznej postaci, czy na sięganie "w głąb", po znaczenia właściwych pod-składowych tychże składowych.