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 47 wersji utworzonych przez 5 użytkowników)
Linia 1: Linia 1:
== Inwokacja ==
== Forma zajęć ==
Wszystkich którzy trafią na poniższą stronę proszę o nadsyłanie uwag, protestów, sugestii etc. Dziękuję.


Jak łatwo widać zderzyły się programy zajęć Podstawy kompilatorów i Metody Realizacji Języków Programowania.
Wykład (30 godzin) + laboratorium (30 godzin)
 
Na prośbę prof. Diksa opracowujemy nowy sylabus. Prosimy o uwagi i sugestie.


== 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 sylabusa'''
=== Autor ===
 
prof. dr hab. Andrzej Salwicki
salwicki@mimuw.edu.pl
 
'''Nazwa zajęć''':
 
Metody Realizacji Języków Programowania


'''Typ zajęć''':
* Andrzej Salwicki


wykład (30 godz.) + ćwiczenia (30 godz.)
=== Wymagania wstępne ===
 
'''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
* Programowanie obiektowe
Linia 36: Linia 19:
* Języki, automaty i obliczenia
* Języki, automaty i obliczenia


'''Sylabus''':
* Podstawy kompilatorów


TODO
=== Zawartość ===
Zob. lista tematów wykładów


'''Literatura''':
* 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.


* A. Aho, R. Sethi, J. Ullman. Kompilatory. WNT, 2001.
=== Literatura ===


* W. Waite, G. Goos, Konstrukcja kompilatorów, WNT, 1989
* A. Aho, R. Sethi, J. Ullman, ''Kompilatory'', Wydawnictwa Naukowo-Techniczne, Warszawa 2001.


* D. Gries Konstrukcja translatorów dla maszyn cyfrowych ,WNT, 1984
* W. Waite, G. Goos, ''Konstrukcja kompilatorów'', Wydawnictwa Naukowo-Techniczne, Warszawa 1989


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


----
== Moduły ==


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