Zastosowanie Denotational Semantics do projektowania programów


30

Przeczytałem trochę na temat semantyki denotacyjnej (DS) i jestem bardzo zaintrygowany procesem projektowania programów komputerowych, w których typy i funkcje mają silne i wyraźne odwzorowania na matematykę.

Czy są jakieś zasoby, które szczegółowo omawiają projektowanie programów opartych na DS? Widziałem kilka powierzchownych zabiegów na ten temat.

Jestem biegły w Haskell, Scali, Common Lisp i trochę Schematu, więc wszelkie zasoby korzystające z tych języków będą mile widziane.


7
Powinieneś sprawdzić pracę Conal Elliott: conal.net

2
Słowo kluczowe izomorfizm Curry'ego-Howarda, jeśli jeszcze tego nie wiesz.
— pedrofurla

2
Myślałem podobnie. Próbowałem zaprojektować numeryczną symulację punktów, sztywnych ciał i płynu. Ten ( github.com/takagi/SimulationDSL ) jest jednym z moich eksperymentów, w których wyraziłem algebrę wektorową i równania cząstkowe w Haskell DSL. Sprawdziłem także prace Conala Elliotta.

3
Powinieneś sprawdzić LtU . Prawdopodobnie są tam jakieś dobre stare dyskusje, a przynajmniej twoje pytanie byłoby lepiej dopasowane niż na SO

3
Możesz przeczytać Samuela Kamina „Zorientowana na implementację semantyka ładnie drukujących kombinatorów Wadlera”. Porównuje podejścia operacyjne i denotacyjne do wdrażania dobrze znanego przykładu ze świata rzeczywistego i obejmuje popieranie podejścia denotacyjnego.
— Stephen Tetley

Odpowiedzi:


13

Projekt denotacyjny ( projekt programu zakorzeniony i wywodzący się z semantyki denotacyjnej) jest moją podstawową metodologią. Kilka lat temu pisząc o FRP, jaśniej zrozumiałem, co robiłem. Zobacz programowanie reaktywne funkcjonalne Push-pull . Aby uzyskać bardziej precyzyjny opis paradygmatu i różne przykłady, zobacz Projektowanie denotacyjne z morfizmami klas typu . Kiedy uświadomiłem sobie ten wzór, zacząłem go szukać wszędzie. W przypadku niepowodzenia wiem, że mam wyciek abstrakcji. Wczesny, nieformalny opis znajduje się na blogu Luke'a Palmera w Semantic Design .

Zawsze jestem zainteresowany aplikacjami projektowania denotacyjnego, dlatego chciałbym usłyszeć o twoich poszukiwaniach.


Dzięki za wspaniałe zasoby. Sprawdzę je, zanim oznaczę pytanie jako odpowiedź.
— Tim Stewart

Dziękujemy za podanie linków do Twojej pracy! Po raz drugi zwracam się do studiowania. Niestety conal.net nie odpowiada. Czy są inne miejsca, w których można je zdobyć?
— imz - Ivan Zakharyaschev


1
@ imz - IvanZakharyaschev Przepraszamy. Mój serwer spadł. Utwórz kopię zapasową teraz. Mam nadzieję, że wkrótce będę migrował i będzie bardziej stabilny.
— Conal,

7

Zastosowaliśmy semantykę denotacyjną do samego projektowania języka, argumentując, że projektowanie języków, w szczególności języków specyficznych dla domeny, powinno zaczynać się od definicji semantyki. Jeśli jesteś zainteresowany szczegółami, możesz rzucić okiem na Projektowanie DSL oparte na Semantics i Semantics Najpierw! Nowe spojrzenie na proces projektowania języka .


Dzięki za wspaniałe zasoby. Sprawdzę je, zanim oznaczę pytanie jako odpowiedź.
— Tim Stewart
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.