Uniwersytet Warszawski - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Metody realizacji języków programowania

Informacje ogólne

Kod przedmiotu: 1000-217bMRJ Kod Erasmus / ISCED: 11.304 / (0612) Database and network design and administration
Nazwa przedmiotu: Metody realizacji języków programowania
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obowiązkowe dla I roku studiów 2 stopnia na kierunku informatyka
Punkty ECTS i inne: 9.00
Język prowadzenia: angielski
Rodzaj przedmiotu:

obowiązkowe

Założenia (opisowo):

Języki i paradygmaty programowania 1000-216bJPP

Języki, automaty i obliczenia 1000-214bJAO

Skrócony opis:

Przegląd podstawowych zagadnień i technik tworzenia interpreterów i kompilatorów dla języków programowania. Najważniejszymi tematami omawianymi na wykładzie są metody analizy semantycznej oraz generacji i optymalizacji kodu dla różnych maszyn docelowych (JVM, LLVM, asembler).

Przydatna będzie wiedza wyniesiona z przedmiotu Języki i Paradygmaty Programowania (lub równoważnego).

Absolwenci kursu powinni umieć stworzyć kompilator dla prostego języka programowania.

Pełny opis:

1. Analiza leksykalna i syntaktyczna (2 wykłady): analiza zstępująca i wstępująca; gramatyki LL(1) i konstrukcja parsera metodą zejść rekurencyjnych; gramatyki LR(k),SLR,LALR i konstrukcja automatów dla nich.

2. Analiza semantyczna (2 wykłady): tablica symboli, wiązanie nazw, kontrola typów.

3. Środowisko czasu wykonania (1-2 wykłady): struktury czasu wykonania, organizacja pamięci, realizacja podprogramów.

4. Generacja kodu: języki pośrednie – kod czwórkowy, maszyna stosowa, generacja kodu maszynowego, alokacja rejestrów.

5. Maszyna wirtualna JVM i generacja kodu dla niej.

6. Static Single Assignment i maszyna wirtualna LLVM.

7. Kod asemblera na przykładzie architektury x86.

8. Optymalizacja (2 wykłady): graf bloków prostych, analiza przepływu; alokacja rejestrów; metody ulepszania kodu: zwijanie stałych, eliminacja wspólnych podwyrażeń, eliminacja martwego kodu, optymalizacja pętli, metoda peephole.

9. Obsługa wyjątków: semantyka wyjątków, odnajdywanie bloku obsługi wyjątku, zwijanie stosu.

10. Zarządzanie pamięcią: alokacja i dealokacja pamięci; odśmiecanie: zliczanie odwołań, kopiowanie, „zaznacz i zamieć”; metody synchroniczne i asynchroniczne; konserwatywność odśmiecania.

11.Kompilacja języków funkcyjnych: specyfika; domknięcia, kombinatory i superkombinatory; redukcja grafów, metoda szablonów, G-maszyna i jej warianty; leniwe obliczenia, lambda-lifting.

Literatura:

A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullman, Compilers: Principles, Techniques, and Tools, 2/E (w języku polskim dostępne jest tłumaczenie poprzedniego wydania: Kompilatory. Reguły, metody i narzędzia, Wydawnictwa Naukowo-Techniczne, Warszawa 2002).

http://wazniak.mimuw.edu.pl

http://moodle.mimuw.edu.pl

Efekty kształcenia:

Wiedza

Zna problemy, techniki i narzędzia związane z budową kompilatorów (K_W03), w szczególności:

● ma pogłębioną wiedzę w zakresie problemów i metod analizy składniowej,

● ma pogłębioną wiedzę w zakresie problemów i metod analizy semantycznej,

● rozumie strukturę i funkcjonalność środowiska czasu wykonania,

● zna przykłady języków pośrednich i sposoby ich wykorzystania w kompilatorze,

● zna podstawowe problemy i techniki związane z generacją kodu maszynowego,

● zna metody ulepszania kodu,

● ma pogłębioną wiedzę w zakresie zarządzania pamięcią, w tym problemy i techniki odsmiecania.

Umiejętności

Potrafi zbudować kompilator dla języka programowania o średnim stopniu złożoności (K_U03).

Kompetencje

Rozumie konieczność systematycznej pracy nad wszelkimi projektami, które mają długofalowy charakter (K_K03).

Metody i kryteria oceniania:

Egzamin 55%, projekt zaliczeniowy 30% kolokwium 15%.

Dla zaliczenia trzeba oddać wszystkie programy w terminie i uzyskać z nich min 50% punktów oraz min. 50% z kolokwium.

Zaliczenie jest wymagane do przystapienia do egzaminu w pierwszym terminie. Zaliczenie nie jest wymagane do przystapienia do egzaminu w drugim terminie, wymagane jest uzyskanie przynajmniej 30% możliwych do uzyskania punktów za projekt; punkty uzyskane za kolokwium i projekt zaliczeniowy są wliczane do oceny koncowej także w drugim terminie.

Zajęcia w cyklu "Semestr zimowy 2018/19" (zakończony)

Okres: 2018-10-01 - 2019-01-25
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marcin Benke
Prowadzący grup: Marcin Benke, Jacek Chrząszcz, Konrad Iwanicki, Łukasz Sznuk, Daria Walukiewicz-Chrząszcz, Artur Zaroda
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin

Zajęcia w cyklu "Semestr zimowy 2019/20" (w trakcie)

Okres: 2019-10-01 - 2020-01-27
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marcin Benke
Prowadzący grup: Marcin Benke, Konrad Iwanicki, Agata Janowska, Łukasz Sznuk, Daria Walukiewicz-Chrząszcz, Artur Zaroda
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.