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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Diks (dyskusja | edycje)
 
(Nie pokazano 44 wersji utworzonych przez 5 użytkowników)
Linia 1: Linia 1:
== Forma zajęć ==
== Forma zajęć ==


Wykład (30 godzin) + ćwiczenia (30 godzin)
Wykład (30 godzin) + laboratorium (30 godzin)


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


* Andrzej Salwicki
* Andrzej Salwicki
 
=== Wymagania wstępne ===
=== Wymagania wstępne ===


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


=== Zawartość ===
=== Zawartość ===


*Analiza kodu źródłowego
* Tablica symboli — dla języka typu Java tablica symboli to poważne wyzwanie.
*Analiza leksykalna
* Statyczna analiza semantyczna.
*Analiza składniowa
* Maszyna wirtualna.
*Analiza poprawności typów (statyczna analiza semantyczna)
* Generowanie kodu pośredniego. Sprowadzanie go do postaci SSA.
*Synteza
* Optymalizacja kodu pośredniego.
*Generowanie kodu pośredniego
* Zarządzanie pamięcią . Odśmiecanie.
*Optymalizacja kodu
* Realizacja obsługi wyjątków/ sygnałów.
*Generowanie kodu wynikowego
* Kompilacja języków programowania funkcyjnego.
*Środowisko czasu wykonania (maszyna wirtualna)
* Realizacja obiektów aktywnych (wątków, procesów) w języku z procesami współbieżnymi i rozproszonymi.
*Zarządzanie pamięcią
*Odśmiecanie


=== Literatura ===
=== Literatura ===


* A. Aho, R. Sethi, J. Ullman. Kompilatory. WNT, 2001.
* A. Aho, R. Sethi, J. Ullman, ''Kompilatory'', Wydawnictwa Naukowo-Techniczne, Warszawa 2001.
* W. Waite, G. Goos, Konstrukcja kompilatorów, WNT, 1989
 
* D. Gries Konstrukcja translatorów dla maszyn cyfrowych ,WNT, 1984
* 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 ==
== Moduły ==


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

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