Robimy kompilator

Prowadzący: Radosław Rowicki


Stwórz swój własny język programowania — od parsera do assemblera!
Kategorie: informatyka

Zapisz się

Opis

Prawdą jest, że większość istniejących języków programowania totalnie ssie, więc przyszedł czas by wziąć sprawy w swoje ręce i stworzyć ten jedyny, najlepszy, idealny język który odmieni losy współczesnej informatyki. Taki ze wszystkimi niezbędnymi ficzerami: dyndającymi wskaźnikami, legendarną operacją COMEFROM oraz naszą dumną polską pętlą dopóty-dopóki. To od ciebie zależy jak będzie wyglądał twój język — ogranicza cię jedynie twoja wyobraźnia i kilka problemów nierozstrzygalnych. Oczywiście nie ominie cię też wielebna okazja nadania nazwy swojemu dziełu — halinkalang niedługo stanie się rzeczywistością!

Na tych warsztatach dowiesz się jak działa kompilator, a następnie użyjesz tej wiedzy by rozwinąć prosty prototyp języka w wybranym przez siebie kierunku. Krok po kroku przejdziemy przez cały proces kompilacji — od zwykłej kupy tekstu, aż po wykonywalny kod maszynowy. Z wielu względów naszą docelową architekturą będzie najprawdopodobniej wirtualna maszyna Javy (JVM). Nie oznacza to że trzeba znać Javę, ale warto dodać że ten wybór pozwoli na łatwą integrację naszego języka z kodem napisanym w Javie czy też Scali (co w przyszłości znacznie uprości migrację kodu wielkich systemów bankowych na nasz język).

Wymagania

Wymagane cechy i umiejętności:

  1. Względna umiejętność programowania w jakimkolwiek języku.
  2. Komputer się raczej przyda.
  3. Zainstalowana Java na owym komputerze. Wystarczy sam runtime (JRE), kompilator (JDK) nie będzie nam oczywiście potrzebny.
  4. Jakiś assembler JVM, prawdopodobnie padnie na jasm.

Zadania kwalifikacyjne przedstawiają litecore wersję tego co będziemy robić na warsztatach. Nie jest konieczne zrobienie ich wszystkich, ale raczej oczekuję że przynajmniej podejmiesz próbę. Wysyłaj nawet częściowe rozwiązania.

Przydatne rzeczy

Kontakt

Pisać na radrowicki+www21 w popularnej domenie mailowej Google. Chętnie pomogę z zadankami.