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.

Tim Stewart
źródło
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.

Conal
źródło
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
Cóż, można również przeczytać github.com/conal/talk-2014-bayhac-denotational-design/blob/…
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 .

Martin Erwig
źródło
Dzięki za wspaniałe zasoby. Sprawdzę je, zanim oznaczę pytanie jako odpowiedź.
Tim Stewart