ŻYWE JĘZYKI
PROGRAMOWANIA
LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE
Sean McDirmid
Ecole Polytechnique Fédérale de Lausanne (EPFL)
sean.mcdirmid@epfl.ch
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
1
AGENDA
Geneza Geneza
SuperGlue SuperGlue
Dodatkowe techniki Dodatkowe techniki
Szczegóły realizacji i implementacja
Szczegóły realizacji i implementacja
Przykład - PacMan Przykład - PacMan
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
2
DYNAMICZNE JĘZYKI PROGRAMOWANIA
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
3
edycj a edycj
a kompi
-lacja kompi
-lacja
debu- gowa-
nie debu- gowa-
nie
Programowanie wysokopoziomowe
Dynamiczne typowanie
Spadek wydajności
Lisp
Smalltalk
Erling
PROGRAMOWANIE NA ŻYWO
Natychmiasto we efekty
zmian w kodzie
Natychmiasto we efekty
zmian w kodzie
Konstrukcje deklaratywne
- mniej kodu Konstrukcje deklaratywne
- mniej kodu
Dopełnianie i podpowiedzi kodu
Dopełnianie i podpowiedzi kodu
Często oparte o metody
wizualne Często
oparte o metody
wizualne
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
4
JĘZYKI WIZUALNE
Dla „zwykłych użytkowników”
Dla „zwykłych użytkowników”
Komponenty – model deklaratywny Komponenty – model deklaratywny
Problemy z graficzną reprezentacją większych programów
Problemy z graficzną reprezentacją większych programów
Połączenie cech wizualnych z tekstowymi Połączenie cech wizualnych z tekstowymi Excel, Forms/3, Fabrik, LabVIEW
Excel, Forms/3, Fabrik, LabVIEW
Apple Quartz Composer: graf połączeń dźwiękowych
Apple Quartz Composer: graf połączeń dźwiękowych
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
5
SUPERGLUE
Tekstowy, żywy język programowania
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
6
SUPERGLUE
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
7
Sygnały komponent i
y
Dynamiczn e dziedzi-
czenie Graf
przepływu danych
OOP +
Dane zmienne w czasie
Sygnały dynamicznie
dziedziczą po klasach
PRZYKŁAD POCZĄTKOWY
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
8
SYGNAŁY
Wartości w grafie przepływu danych, które ułatwiają komunikację pomiędzy
komponentami.
Są to obiekty dziedziczące po klasach,
połączone z innymi sygnałami i zawierające sygnały zdefiniowane w ich nadrzędnych
klasach.
Definiuje się je jako elementy klasy używając słowa kluczowego port
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
9
KLASY
Definiują zachowanie
Nie są wartościami i mogą być rozszerzone jedynie przez sygnały
Definiowane w najwyższej warstwie programu lub jako elementy inncyh klasy z
wykorzystaniem słowa kluczowego class
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
10
POŁĄCZENIA
Definiują zależność pomiędzy sygnałami, dzięki czemu ich wartość jest jednakowa
Są regułami podobnymi do prostych, jednokierunkowych ograniczeń.
Określany przy użyciu operatora =
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
11
ROZSZERZENIA (EXTENSIONS)
Sprawiają, że sygnały rozszerzają klasy
Reguły wycelowane w sygnały poza ich definicją
Definiowane z wykorzystaniem operatora / „:”
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
12
WARUNKI (CONDITIONS)
Określają kiedy reguły połączeń i rozszerzeń mogą być zastosowane.
Odpytują istniejące połączenia i rozszerzenia za pomocą tych samych operatorów (= i ), których używa się do ich stworzenia
Tworzeone przez konstrukcje if otaczające reguły połączeń i rozszerzeń
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
13
CEL: UPROSZCZONY PACMAN
Gracz steruje PacManem za pomocą strzałek na klawiaturz
e Gracz steruje PacManem za pomocą strzałek na klawiaturz
e
Komputer kontroluje
duchy Komputer kontroluje
duchy
dotknięciu Po ducha, PacMan w
prawy górny róg dotknięciu Po
ducha, PacMan w
prawy górny róg
Kulka mocy na
środku ektranu.
Kulka mocy na
środku ektranu.
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
14
RYSUNEK (1/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
15
RYSUNEK (2/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
16
RYSUNEK (3/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
17
RYSUNEK (4/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
18
RYSUNEK - ANIMACJA
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
19
DODATKOWE TECHNIKI
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
20
STANY STAŁE I ZMIENNE
TRAKTOWANE JEDNAKOWO
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
21
DYNAMICZNE DZIEDZICZENIE
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
22
TYPOWANIE ZALEŻNE
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
23
MEDIATORY TYPÓW
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
24
WNIOSKOWANIE TYPÓW
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
25
WNIOSKOWANIE TYPÓW W IDE
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
26
WNIOSKOWANIE TYPÓW W IDE (1/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
27
WNIOSKOWANIE TYPÓW W IDE (2/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
28
WNIOSKOWANIE TYPÓW W IDE (3/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
29
WNIOSKOWANIE TYPÓW W IDE (4/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
30
WNIOSKOWANIE TYPÓW W IDE
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
31
REALIZACJA JĘZYKA
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
32
PRZETWARZANIE KODU
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
33
skanowani e
skanowani e
parsowanie parsowanie
wnioskowa nie typów wnioskowa
nie typów wykonanie
wykonanie
Parsowanie
z pierwszeństwem
Damage and repair
Zmiany w kodzie
Zmiany stanu wywołane sygnałem
Zmiana grafu przepływu
danych
BŁĘDY CZASU WYKONANIA
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
34
niejednoznacznie połączone
sygnaly
niejednoznacznie połączone
sygnaly
niepołączone sygnały prymitywne niepołączone
sygnały prymitywne specyficzne
błędy (np.
dzielenie przez 0) specyficzne
błędy (np.
dzielenie przez 0)
błędy reportowane jako wartości
sygnałów w osobnym oknie
program kontynuuje z wartościami
domyślnymi
IMPLEMENTACJA
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
35
SYGNAŁY
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
36
ROZSZERZENIA
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
37
PACMAN
Dokończenie gry
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
38
PACMAN (1/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
39
PACMAN (2/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
40
PACMAN (3/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
41
PACMAN (4/4)
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
42
PACMAN
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER
43
DZIĘKUJĘ
5 / 2 4 / 2 0 1 0
M ARCI N HAG M AJ ER