Czy branie tego przedmiotu ma sens

0

Zamierzam być programistą Javy (za X lat) i pytanie - czy warto brać przedmiot (z perspektywy zwykłego programisty, który raczej nie będzie miał z takim niskim poziomem do czynienia) którego syllabus jest następujący:

Wprowadzenie (2h):
Ogólnie o problemie kompilacji / interpretacji; język pośredni, poziom interpretacji, głębokość kompilacji; struktura kompilatora dla programów wielomodułowych; składniki zależne od języka źródłowego (front end) i od platformy docelowej. Potrzebne techniki i narzędzia (również teoretyczne); języki i gramatyki; style definiowania języka; przegląd metanotacji (BNF, EBNF, ISO-14977, ABNF, diagramy składniowe).

Przetwarzanie sterowane składnią i makrogeneracja (5h):
Przetwornik tekstu (translator) sterowany składnią, przykład translacji wyrażeń prostych do odwrotnej postaci polskiej. Makrogeneracja, typy substytucji tekstowych, rozpoznawanie makrodefinicji i makrowywołań, organizacja biblioteki makrodefinicji, reguły przesłaniania i dostępności; mechanizmy wiązania parametrów. Makrogenerator MG. Makrogenerator uniwersalny GPM.

Podstawy teoretyczne (3h):
Systemy przepisywania, L-systemy, gramatyki generacyjne. Hierarchia języków wg Chomskiego, formy kanoniczne gramatyk (CNF, GNF, KNF). Generacja i rozpoznawanie, drzewa wyprowadzeń dla gramatyk bezkontekstowych. Niejednoznaczność języka bezkontekstowego. Klasy gramatyk bezkontekstowych i strategie rozbioru.

Języki regularne i analiza leksykalna (4h):
Reprezentacje języków regularnych, formalizm wyrażeń regularnych (WR), gramatyki regularne (GPL, GLL); automaty niedeterministyczne (AN) i deterministyczne (AD). Konwersja wyrażeń regularnych na automaty, algorytm Thompsona, konwersja AN na AD (algorytm podzbiorowy), konwersja WR na AD. Właściwości klasy języków regularnych. Zastosowania do wyszukiwania wzorców i analizy leksykalnej. Zachłanny analizator leksykalny dla języka MiniPascal. Generatory analizatorów leksykalnych.

Języki bezkontektstowe i rozbiór (6h):
Reprezentacje języków bezkontekstowych; właściwości gramatyk bezkontekstowych. Przekształcanie gramatyk ? substytucja, usuwanie nieużytków, usuwanie produkcji pustych i jednostkowych; postacie normalne CNF / GNF. Usuwanie rekursji lewostronnej, faktoryzacja lewostronna. Zbiory FIRST i FOLLOW; rozbiór rekursywnie zstępujący. Schematy translacji. Schemat translacji wyrażeń arytmetycznych do odwrotnej notacji polskiej. Rekursywnie zstępujący analizator składniowy dla MiniPascal'a. Obsługa błędów składniowych.

Analiza semantyczna (3h):
Atrybuty identyfikatorów, organizacja tabel symboli, tebele z funkcją mieszającą, tabele z porządkiem leksykograficznym - drzewa binarne; tabele symboli w rozbiorze struktur blokowych. Akcje semantyczne w rozbiorze rekursywnie zstępującym dla MiniPascal'a.

Generacja kodu (3h):
Komunikacja analizatora z generatorem, alokacja pamięci w strukturach blokowych, generacja kodu dla wyrażeń i struktur sterowania; przejście z konwencji maszyny stosowej do konwencji procesora docelowego. Elementy optymalizacji kodu, optymalizacje lokalne i globalne; algorytm optymalizacji wyrażeń.

Rozbiór sterowany tablicami (4h):
Schemat ogólny metod tabelarycznych. Parser zstępujący predykcyjny LL(1) - struktura i własności. Rozbiór wstępujący, LR-formy. Automat LR(0) i sterownik parsera LR(0), rozbiór wyrażeń wg LR(0). Konflikty w tabelach LR(0), rozbiór SLR(1), konflikty w SLR(1). Rozbiór LR(1), LR1-formy, wyznaczanie tabeli dla parsera LR(1), redukcja LR(1) - LALR(1). Porównanie parserów. Algorytmy uogólnione, algorytm Erley'a, algorytm CYK. Własności i problemy decyzyjne języków BK.

0

U mnie to się nazywało: Języki, automaty i obliczenia.
Nie ma sensu dla normalnego developera.

0

Automaty i kompilatory to fajna i ciekawa sprawa. Do klepania formatek się nie przyda, ale np. mi się już kiedyś zdarzyło w pracy robić mini język skryptowy / DSL i taka wiedza mi się przydała.

0

Tak. Warto rozumiec jak dzialaja niektore rzeczy pod spodem. Automaty stanowe tez sie potrafia przydac (np. w gamedevie sa czesto wykorzystywane). Albo bedziesz mogl sobie napisac parser do jakiegos swojego formatu. Zrozumiesz czemu niektore rzeczy sa ciezkie do zrobienia regexpami albo nawet ze sie nie da.

Z drugiej strony jak pojdziesz na klepacza Crudow to na 99% nie wykorzystasz tego co sie nauczysz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1