Czym jest superkompilacja?

Krótko i słodko: widziałem kilka źródeł mówiących o"superkompilacji". Ale nie znalazłem jeszcze jednego dokumentu w Internecie, który opisuje Co to jest . Prawdopodobnie dlatego, że wydaje się to dość proste dla kogokolwiek, że nie jest to nawet warte wyjaśnienia.

Czy ktoś wie co to właściwie jest?

Author: Quonux, 2012-01-30

2 answers

Superkompilację można traktować jako uogólnienie oceny częściowej. Ideą częściowej oceny jest to, że wiele części programu może być ocenianych w czasie kompilacji, i tak powinno być. Superkompilacja rozszerza to, oceniając rzeczy, które nie mogą być w pełni wykonane w czasie kompilacji, jak zamiana map f (map g xs) w map (f . g) xs bez niczego poza definicją map (przynajmniej myślę, że mam częściową ocenę dobrze - czytałem tylko dużo o superkompilacji).

Inny można na to spojrzeć jako na połączenie wielu innych optymalizacji, takich jak wylesianie, specjalizacja i inlining. Działając tak, jakby znał już Dane wejściowe do funkcji i oceniając, może uzyskać bardziej bezpośrednią metodę obliczania wyniku - może pozbyć się pośrednich struktur danych, widząc, jak będą używane, lub może podłączyć wszystkie możliwe wartości, a następnie zawinąć wynik w case, lub zrobić coś innego z jego udawanymi wartościami.

Max Bolingbroke ma wiele przydatnych referaty na ten temat-polecam pierwszą, Superkompilację przez ewaluację , jako wstęp. Sekcja 2 wprowadza temat za pomocą przykładu, a reszta, choć trochę trudna do opanowania, jest bardzo pouczająca o tym procesie. Neil Mitchell ma również liczbę dobrych prezentacji opisujących to.

Mam nadzieję, że to pomoże.
 46
Author: gereeter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-19 20:50:03

From Wikipedia na Metacompilation :

Metakompilacja to obliczenie polegające na przejściu metasystemów (MST) z maszyny obliczeniowej M do metamachiny m', która steruje, analizuje i imituje pracę programu opartego na semantyce M. transformacja, taka jak częściowa Ocena i superkompilacja (SCP), jest metakomputacją.

Więcej o Metasystemach na Wikipedii.

Nie znam się na tym temacie, ale dam moje zrozumienie opisu. Powiedzmy, że mamy prosty program, który mógłby skopiować stdin na stdout. Jest to nasza maszyna obliczeniowa M. nasza metamachine M' jest drugim programem, który pobiera źródło M jako dane wejściowe (lub jest w inny sposób skonstruowany, aby z natury wiedzieć o M) i dlatego jest w stanie zrozumieć nie tylko to, co robi M, ale Jak to robi.

Jeśli moje rozumienie jest poprawne, to oczywiste pytanie brzmi: dlaczego dbamy o M'? Co przychodzi mi do głowy jest automatyczne optymalizacja. Jeśli możemy zrozumieć zarówno jak działa M, jak i CO m próbuje osiągnąć, M ' może rozwiązać sposoby poprawy działania M, zarówno w przestrzeni, jak i w czasie. Ponadto, i co ważne, m 'może zastąpić M, ponieważ M' może osiągnąć to, co m zrobił. Oznacza to, że M" może poprawić sposób m 'zoptymalizowane m, a następnie zastąpić m', i tak dalej.

 2
Author: erisco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 17:12:23