Metody realizacji języków programowania: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Salwicki (dyskusja | edycje)
Diks (dyskusja | edycje)
 
(Nie pokazano 56 wersji utworzonych przez 5 użytkowników)
Linia 1: Linia 1:
== Forma zajęć ==
Wykład (30 godzin) + laboratorium (30 godzin)
== Opis ==
== 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.
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, algorytmy syntezy kodu wynikowego oraz niektóre zaawansowane zagadnienia kompilacji.


== Sylabus ==
== Sylabus ==


=== Autor  ===


''Autor sylabusa''
* Andrzej Salwicki


prof. dr hab. Andrzej Salwicki
=== Wymagania wstępne ===
salwicki@mimuw.edu.pl


''Nazwa zajęć'':
* Programowanie obiektowe


Metody Realizacji Języków Programowania
* Języki, automaty i obliczenia


''Typ zajęć'':
* Podstawy kompilatorów


wykład (30 godz.) + ćwiczenia (30 godz.)
=== Zawartość ===


''Opis'':
* Tablica symboli — dla języka typu Java tablica symboli to poważne wyzwanie.
* Statyczna analiza semantyczna.
* Maszyna wirtualna.
* Generowanie kodu pośredniego. Sprowadzanie go do postaci SSA.
* Optymalizacja kodu pośredniego.
* Zarządzanie pamięcią . 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.


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, sposoby analizy składniowej: parsery LL(1) i LR(1), algorytmy syntezy kodu wynikowego.
=== Literatura ===


''Wymagania wstępne'':
* A. Aho, R. Sethi, J. Ullman, ''Kompilatory'', Wydawnictwa Naukowo-Techniczne, Warszawa 2001.


Programowanie obiektowe
* W. Waite, G. Goos, ''Konstrukcja kompilatorów'', Wydawnictwa Naukowo-Techniczne, Warszawa 1989
Języki, automaty i obliczenia


''Sylabus'':
* D. Gries, ''Konstrukcja translatorów dla maszyn cyfrowych'', Wydawnictwa Naukowo-Techniczne, Warszawa 1984


Kompilator i maszyna wirtualna z lotu ptaka
== Moduły ==
Analiza leksykalna. Analiza składniowa zstępująca i wstępująca
Tablica symboli. Statyczna analiza semantyczna
Środowisko czasu wykonania: rekordy aktywacji i obiekty.
Kompilacja sterowana składnią. Reguły semantyczne.
Kod pośredni. Postać SSA kodu pośredniego
Optymalizacja kodu
Zarządzanie pamięcią – tworzenie jednostek dynamicznych i odśmiecanie
Obsługa systuacji wyjątkowych i zarządzanie wątkami w procesach współbieżnych i rozproszonych
 
''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
Poniższe materiały przygotowuje dla Ciebie zespól w składzie: Marcin Benke, Marek Biskup, Paweł Górecki, Marcin Kowalczyk, Andrzej Salwicki, Łukasz Sznuk, Marek Warpechowski, Artur Zaroda.


* Internet
# [[Metody realizacji języków programowania/MRJP Wykład 1| Wstęp]]
# [[Metody realizacji języków programowania/MRJP Wykład 2| Tablica symboli]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 2|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 3| Statyczna analiza semantyczna ]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 3|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 4| Maszyna wirtualna I]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 4|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 5| Maszyna wirtualna II ]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 5|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 6| Generowanie kodu pośredniego]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 6|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 7| Sprowadzanie kodu do postaci SSA]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 7|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 8| Optymalizacja kodu pośredniego w postaci SSA]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 8|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 9| Zarządzanie pamięcią. Odśmiecanie ]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 9|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 10| Realizacja obsługi sygnałów/wyjątków]]
# [[Metody realizacji języków programowania/MRJP Wykład 11|Optymalizacja II]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 11|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 12| Kompilacja języków programowania funkcyjnego ]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 12|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Wykład 13| Realizacja obiektów aktywnych (wątków, procesów) w jezyku z procesami współbieżnymi i rozproszonymi]] ([[Metody realizacji języków programowania/MRJP Ćwiczenia 13|Ćwiczenia]])
# [[Metody realizacji języków programowania/MRJP Laboratorium| Laboratorium]]


----


== 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 ==


# [[MRJP Wykład 1|Kompilator z lotu ptaka. Analiza leksykalna]] ([[MRJP Ćwiczenia 1|Ćwiczenia]])
* [[ Metody realizacji języków programowania/MRJP Przykładowy zestaw zadań egzaminacyjnych]]
# [[MRJP Wykład 2|Analiza składniowa zstępująca]] ([[MRJP Ćwiczenia 2|Ćwiczenia]])
# [[MRJP Wykład 3|Analiza składniowa wstępująca I]] ([[MRJP Ćwiczenia 3|Ćwiczenia]])
# [[MRJP Wykład 4|Analiza składniowa wstępująca II]] ([[MRJP Ćwiczenia 4|Ćwiczenia]])
# [[MRJP Wykład 5|Tablica Symboli]] ([[MRJP Ćwiczenia 5|Ćwiczenia]])
# [[MRJP Wykład 6|Statyczna analiza semantyczna]] ([[MRJP Ćwiczenia 6|Ćwiczenia]])
# [[MRJP Wykład 7|Maszyna wirtualna]] ([[MRJP Ćwiczenia 7|Ćwiczenia]])
# [[MRJP Wykład 8|Generowanie kodu pośredniego]] ([[MRJP Ćwiczenia 8|Ćwiczenia]])
# [[MRJP Wykład 9|Temat]] ([[MRJP Ćwiczenia 9|Ćwiczenia]])
# [[MRJP Wykład 10|Temat]] ([[MRJP Ćwiczenia 10|Ćwiczenia]])
# [[MRJP Wykład 11|Temat]] ([[MRJP Ćwiczenia 11|Ćwiczenia]])
# [[MRJP Wykład 12|Temat]] ([[MRJP Ćwiczenia 12|Ćwiczenia]])
# [[MN Wykład 13|Temat]] ([[MN Ćwiczenia 13|Ćwiczenia]])
# [[MN Wykład 14|Temat]] ([[MN Ćwiczenia 13|Ćwiczenia]])
# [[MN Wykład 15|Temat]] ([[MN Ćwiczenia 13|Ćwiczenia]])

Aktualna wersja na dzień 08:27, 20 paź 2006

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, algorytmy syntezy kodu wynikowego oraz niektóre zaawansowane zagadnienia kompilacji.

Sylabus

Autor

  • Andrzej Salwicki

Wymagania wstępne

  • Programowanie obiektowe
  • Języki, automaty i obliczenia
  • Podstawy kompilatorów

Zawartość

  • Tablica symboli — dla języka typu Java tablica symboli to poważne wyzwanie.
  • Statyczna analiza semantyczna.
  • Maszyna wirtualna.
  • Generowanie kodu pośredniego. Sprowadzanie go do postaci SSA.
  • Optymalizacja kodu pośredniego.
  • Zarządzanie pamięcią . 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, Wydawnictwa Naukowo-Techniczne, Warszawa 2001.
  • W. Waite, G. Goos, Konstrukcja kompilatorów, Wydawnictwa Naukowo-Techniczne, Warszawa 1989
  • D. Gries, Konstrukcja translatorów dla maszyn cyfrowych, Wydawnictwa Naukowo-Techniczne, Warszawa 1984

Moduły

Poniższe materiały przygotowuje dla Ciebie zespól w składzie: Marcin Benke, Marek Biskup, Paweł Górecki, Marcin Kowalczyk, Andrzej Salwicki, Łukasz Sznuk, Marek Warpechowski, Artur Zaroda.

  1. Wstęp
  2. Tablica symboli (Ćwiczenia)
  3. Statyczna analiza semantyczna (Ćwiczenia)
  4. Maszyna wirtualna I (Ćwiczenia)
  5. Maszyna wirtualna II (Ćwiczenia)
  6. Generowanie kodu pośredniego (Ćwiczenia)
  7. Sprowadzanie kodu do postaci SSA (Ćwiczenia)
  8. Optymalizacja kodu pośredniego w postaci SSA (Ćwiczenia)
  9. Zarządzanie pamięcią. Odśmiecanie (Ćwiczenia)
  10. Realizacja obsługi sygnałów/wyjątków
  11. Optymalizacja II (Ćwiczenia)
  12. Kompilacja języków programowania funkcyjnego (Ćwiczenia)
  13. Realizacja obiektów aktywnych (wątków, procesów) w jezyku z procesami współbieżnymi i rozproszonymi (Ćwiczenia)
  14. Laboratorium