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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Salwicki (dyskusja | edycje)
m Poprawki edytorskie
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) + ćwiczenia (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 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.  


== Sylabus ==
== Sylabus ==


'''Autor sylabusa'''
=== Autor ===
 
prof. dr hab. Andrzej Salwicki
salwicki@mimuw.edu.pl


'''Nazwa zajęć''':
* Andrzej Salwicki
 
Metody Realizacji Języków Programowania
=== Wymagania wstępne ===
 
'''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
* Programowanie obiektowe
* Języki, automaty i obliczenia
* Języki, automaty i obliczenia


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


TODO
*analiza kodu źródłowego
Zob. lista tematów wykładów
*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


'''Literatura''':
=== Literatura ===


* A. Aho, R. Sethi, J. Ullman. Kompilatory. WNT, 2001.
* A. Aho, R. Sethi, J. Ullman. Kompilatory. WNT, 2001.
Linia 51: Linia 42:
* Internet
* Internet


----
== 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 ==
== Moduły ==
Linia 92: Linia 58:
# [[MRJP Wykład 12| Kompilacja języków programowania funkcyjnego ]] ([[MRJP Ćwiczenia 12|Ćwiczenia]])
# [[MRJP Wykład 12| Kompilacja języków programowania funkcyjnego ]] ([[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]])
# [[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]])
* [[MRJP Przykładowy zestaw zadań egzaminacyjnych]]

Wersja z 09:22, 7 lip 2006

Forma zajęć

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

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.

Sylabus

Autor

  • Andrzej Salwicki

Wymagania wstępne

  • Programowanie obiektowe
  • Języki, automaty i obliczenia

Zawartość

  • 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

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


Moduły

  1. Wstęp (Ćwiczenia)
  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 (Ćwiczenia)
  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)