Jaki jest model matematyczny klasy Pythona?

10

Rozumiem, że klasyczny model z gazet lambda nie dotyczy Pythona.

Zamknięcia nie są matematycznym modelem implementacji systemu Python.

Który to model?

Alinsoar
źródło
Jeśli znam ten model, pomyślałem, że mogę znaleźć szczegółową książkę (jak sicp dla lisps), która opisałaby proces budowania systemu od zera.
alinsoar,
4
Powiązane: stackoverflow.com/q/2469824 . Usunąłem twoje drugie pytanie z treści twojego postu (Jak zbudować system Python od zera), ponieważ tutaj nie da się odpowiedzieć. Jeśli chcesz wiedzieć, jak stworzyć rzeczywisty działający język programowania, powinieneś przyjrzeć się parserom, leksykonom i kompilatorom.
Robert Harvey,
Dzięki ! Drugie pytanie było równoważne pierwszemu! Jeśli znam ten model, mogę znaleźć dokument opisujący go praktycznie, aby pokazać, jak zbudować jądro systemu!
alinsoar,
Świetne pytanie !!! :)
Maxood,

Odpowiedzi:

7

Główną różnicą między Pythonem a modelami z klasycznych prac na rachunku lambda jest to, że Python jest językiem wieloparadygmatycznym. Większość artykułów, które biorą pod uwagę rachunek lambda, bierze pod uwagę czysty język funkcjonalny, bez komplikacji związanych z dodawaniem innych paradygmatów (takich jak OOP lub programowanie logiczne).

Z pytania i twoich komentarzy wynika, że ​​interesują cię podstawy takich języków o wielu paradygmatach. W takim przypadku mogę bardzo zasugerować koncepcje, techniki i modele programowania komputerowego autorstwa Petera van Roya i Seifa Haridiego . Książka dotyczy głównie języka Mozart / Oz, który sam w sobie jest językiem raczej akademickim. Jednak książka bardzo wyraźnie pokazuje, jak zacząć od bardzo małego języka podstawowego i zbudować na nim programowanie obiektowe, funkcjonalne i logiczne (i wszystko w tym samym języku podstawowym).

Jeśli chodzi o rzeczywisty model matematyczny, większość języków programowania ma jedynie nieformalną lub półformalną specyfikację. Rzadko znajdujesz taką, która ma właściwą teorię, taką jak rachunek lambda jako podstawa. Istnieje wiele różnych modeli matematycznych, które zostały wynalezione i mają mniej lub więcej zastosowanie. Co ciekawe, istnieje ogólne rozróżnienie na różne podejścia do modelowania semantyki programowania: semantykę można opisać denotacyjnie, operacyjnie lub algebraicznie. Jeśli chcesz zejść jeszcze głębiej, przeczytaj trochę o Jednolitych Teoriach Programowania , ale jest to trudny temat ze stromą krzywą uczenia się.

Szczery
źródło