Metody realizacji języków programowania
Forma zajęć
Wykład (30 godzin) + laboratorium (30 godzin)
Opis
Celem tych zajęć jest przedstawienie najważniejszych algorytmów i struktur danych służących kompilacji i wykonywaniu skompilowanych programów. Omówione zostaną: maszyna wirtualna czyli środowisko wykonywania programów, tablica symboli, sposoby analizy składniowej: parsery LL(1) i LR(1), algorytmy syntezy kodu wynikowego.
Sylabus
Autor sylabusa
prof. dr hab. Andrzej Salwicki
salwicki@mimuw.edu.pl
Nazwa zajęć:
Metody Realizacji Języków Programowania
Typ zajęć:
wykład (30 godz.) + ćwiczenia (30 godz.)
Opis:
Celem wykładu jest przedstawienie najważniejszych algorytmów i struktur danych służących kompilacji i wykonywaniu skompilowanych programów. Omówione zostaną: maszyna wirtualna czyli środowisko wykonywania programów, tablica symboli, algorytmy syntezy kodu wynikowego i jego optymalizacji. Przedstawione też zostaną wybrane zaawansowane zagadnienia kompilacji: kompilacja języków funkcyjnych, kompilacja języków z wątkami współbieżnymi i procesami rozproszonymi, obsługa sygnałów sytuacji wyjątkowych.
Wymagania wstępne:
- Programowanie obiektowe
- Języki, automaty i obliczenia
Sylabus:
Tablica symboli - Java stwarza wyzwanie. Statyczna analiza semantyczna. Maszyna wirtualna. Generowanie kodu pośredniego. Sprowadzanie go do postaci SSA. Optymalizacja kodu posredniego. Zarządzanie pamiecią . Odśmiecanie. Realizacja obsługi wyjątków/ sygnałów. Kompilacja języków programowania funkcyjnego. Realizacja obiektów aktywnych (wątków, procesów) w języku z procesami współbieżnymi i rozproszonymi.
Literatura:
- A. Aho, R. Sethi, J. Ullman. Kompilatory. WNT, 2001.
- W. Waite, G. Goos, Konstrukcja kompilatorów, WNT, 1989
- D. Gries Konstrukcja translatorów dla maszyn cyfrowych ,WNT, 1984
- Internet - jak widać literatura w języku polskim nie jest zbyt obszerna. Zachęcamy do szukania informacji w internecie. Zacznij od zadawania pytań wikipedii i google. Np. do wyszukiwarki Google (tj. http://google.com) wpisz "SSA form" lub tylko "SSA".
MRJP wprowadza definicje
analiza kodu źródłowego
analiza leksykalna
analiza składniowa
analiza poprawności typów (statyczna analiza semantyczna)
synteza
generowanie kodu pośredniego
optymalizacja kodu
generowanie kodu wynikowego
środowisko czasu wykonania (maszyna wirtualna)
zarządzanie pamięcią
odśmiecanie
Moduły
- Wstęp (Ćwiczenia)
- Tablica symboli (Ćwiczenia)
- Statyczna analiza semantyczna (Ćwiczenia)
- Maszyna wirtualna I (Ćwiczenia)
- Maszyna wirtualna II (Ćwiczenia)
- Generowanie kodu pośredniego (Ćwiczenia)
- Sprowadzanie kodu do postaci SSA (Ćwiczenia)
- Optymalizacja kodu pośredniego w postaci SSA (Ćwiczenia)
- Zarządzanie pamięcią. Odśmiecanie (Ćwiczenia)
- Realizacja obsługi sygnałów/wyjątków (Ćwiczenia)
- Optymalizacja II (Ćwiczenia)
- Kompilacja języków programowania funkcyjnego (Ćwiczenia)
- Realizacja obiektów aktywnych (wątków, procesów) w jezyku z procesami współbieżnymi i rozproszonymi (Ćwiczenia)