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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Salwicki (dyskusja | edycje)
Nie podano opisu zmian
Diks (dyskusja | edycje)
 
(Nie pokazano 62 wersji utworzonych przez 5 użytkowników)
Linia 1: Linia 1:
'''Sylabus'''
== Forma zajęć ==
----


''Autor sylabusa''
Wykład (30 godzin) + laboratorium (30 godzin)


prof. dr hab. Andrzej Salwicki
== Opis ==
salwicki@mimuw.edu.pl


''Nazwa zajęć'':
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.


Metody Realizacji Języków Programowania
== Sylabus ==


''Typ zajęć'':
=== Autor  ===


wykład (30 godz.) + ćwiczenia (30 godz.)
* Andrzej Salwicki


''Opis'':
=== Wymagania wstępne ===


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.
* Programowanie obiektowe


''Wymagania wstępne'':
* Języki, automaty i obliczenia


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


''Sylabus'':
=== Zawartość ===


Kompilator i maszyna wirtualna z lotu ptaka
* Tablica symboli — dla języka typu Java tablica symboli to poważne wyzwanie.  
Analiza leksykalna. Analiza składniowa zstępująca i wstępująca
* Statyczna analiza semantyczna.
Tablica symboli. Statyczna analiza semantyczna
* Maszyna wirtualna.
Środowisko czasu wykonania: rekordy aktywacji i obiekty.
* Generowanie kodu pośredniego. Sprowadzanie go do postaci SSA.
Kompilacja sterowana składnią. Reguły semantyczne.
* Optymalizacja kodu pośredniego.
Kod pośredni. Postać SSA kodu pośredniego
* Zarządzanie pamięcią . Odśmiecanie.
Optymalizacja kodu
* Realizacja obsługi wyjątków/ sygnałów.
Zarządzanie pamięcią – tworzenie jednostek dynamicznych i odśmiecanie
* Kompilacja języków programowania funkcyjnego.
Obsługa systuacji wyjątkowych i zarządzanie wątkami w procesach współbieżnych i rozproszonych
* Realizacja obiektów aktywnych (wątków, procesów) w języku z procesami współbieżnymi i rozproszonymi.


''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
Internet


----
* W. Waite, G. Goos, ''Konstrukcja kompilatorów'', Wydawnictwa Naukowo-Techniczne, Warszawa 1989
'''Definicje
 
== MRJP wprowadza definicje ==
* 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.
 
# [[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]]
 
 
 
* [[ 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