2011-04-21 12 views
12

Przygotowuję się do egzaminu dotyczącego języków, gramatyki, parsowania i kompilatorów. Nie jest to tak naprawdę moja filiżanka herbaty i większość zasobów używam języka matematyki do określenia różnych warunków handlu i wyjaśnienia różnych pojęć, które muszę znać, zamiast trzymać się angielskiego lub francuskiego, co bardzo bym chciał. Dlatego mam problemy zarówno ze znalezieniem motywacji do kontynuowania nauki, jak i po prostu zrozumieniem teorii. Oto moje pytanie: czy ktokolwiek wie, gdzie mogę znaleźć "zabawny" sposób na naukę wszystkiego? A może przynajmniej bardziej "konkretny" i mniej "matematyczny" sposób radzenia sobie z tym tematem.Czy są jakieś "zabawne" sposoby na poznanie języków, gramatyki, parsowania i kompilatorów?

Muszę omówić następujące kwestie, aby wszystko na te tematy było mile widziane!

  • analizowaniem (LR, LL, ...)
  • Gramatyki (bezkontekstowych, deterministyczny, ...)
  • analiza składni analiza przepływu Static
  • Analiza oddziaływania dotycząca konserwacji oprogramowania oraz do uzależnienia interfejsy użytkownika
  • Dynamiczna analiza

Oto niektóre zasoby, które mogą być uważane za „fun” (z naciskiem na cudzysłowów) sposób s, aby dowiedzieć się czegoś na temat przedmiotu technicznego, aby uzyskać poczucie tego, czego szukam.

+0

Jeśli masz tylko tydzień, musisz przeczytać książkę Smoka, aby omówić większość z tych tematów. To nie będzie zabawne. –

+0

Jeśli pozostanie mi tylko tydzień, wątpię, czy uda mi się szybko zdobyć książkę smoka. – Shawn

Odpowiedz

14

Jeśli chcesz dowiedzieć się wiele w krótkim czasie, dowiedz się o kompilatorach meta z 1964 roku Val Schorre'a (tak, dobrze to przeczytałeś). MetaII dokument o tym, jak budować kompilatory metakompilujące. Jako freebie mogą także kompilować tradycyjne lanu! Artykuł ma 10 stron, opisuje meta-kompilatory (jako maszynę wirtualną) lub zawiera dwa kompletne kompilatory.

Jest niesamowity moment, w którym ostatecznie dochodzisz, gdy grokujesz, jak kompilator może się skompilować ... Nauczyłem się kompilatorów w ten sposób na początku lat 70. i jest to najbardziej pamiętna lekcja kompilacji, jaką kiedykolwiek miałem. To jest zabawne.

Istnieje online tutorial here which implements all the ideas in JavaScript..

Autorem tutoriala jest dr James Neighbours, facet, który wymyślił termin "analiza domeny". Użył pomysłów MetaII do spektakularnego generatora kodu specyficznego dla domeny o nazwie Draco. Draco było kluczową inspiracją dla narzędzi podobnych do kompilatora, które budowałem przez ostatnie 30 lat.

0

Jak długo trzeba się przygotować? Najlepszym sposobem na poznanie kompilatorów jest zagłębienie się w nie, a najlepszym sposobem na to jest skorzystanie z najlepszej książki o kompilatorach EVER WRITTEN: The Dragon Book Jest stara, ale niesamowita. Nie jest tani, ale jest prawdopodobnie najbardziej konkretnym i najmniej matematycznym sposobem na poznanie magicznego kompilatora.

Nie ma żadnych migających świateł i nie będzie w niesamowitym czcionki jak przewodnika Ruby, ale to jest w top 10 Books Every Programmer Should Read

+0

Tak, bez pieniędzy i bez czasu (mam jeszcze tydzień), ale dziękuję za rekomendację! – Shawn

+3

Naprawdę nie lubiłem kompilatorów, gdy brałem je w college'u, ale wracając i widząc, ile się nauczyłem, było naprawdę warto. Wygląda na to, że jest kiepski, ale w CS wciąż były 4 klasy, o których wciąż wspominam dzisiaj. Kompilatory są jednym z nich. Znalezione na SO: http://stackoverflow.com/questions/424796/are-there-any-compiler-lectures-available-via-video –

Powiązane problemy