1 ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL) [email protected] 5/24/2010MARCIN HAGMAJER 1
2 AGENDA GenezaSuperGlueDodatkowe technikiSzczegóły realizacji i implementacjaPrzykład - PacMan 5/24/2010MARCIN HAGMAJER 2
3 DYNAMICZNE JĘZYKI PROGRAMOWANIA 5/24/2010MARCIN HAGMAJER 3 edycja kompi- lacja debu- gowa- nie Programowanie wysokopoziomowe Dynamiczne typowanie Spadek wydajności Lisp Smalltalk Erling
4 PROGRAMOWANIE NA ŻYWO Natychmiastowe efekty zmian w kodzie Konstrukcje deklaratywne - mniej kodu Dopełnianie kodu i podpowiedzi Często oparte o metody wizualne 5/24/2010MARCIN HAGMAJER 4
5 JĘZYKI WIZUALNE Dla zwykłych użytkownikówKomponenty – model deklaratywnyProblemy z graficzną reprezentacją większych programówPołączenie cech wizualnych z tekstowymiExcel, Forms/3, Fabrik, LabVIEWApple Quartz Composer: graf połączeń dźwiękowych 5/24/2010MARCIN HAGMAJER 5
6 SUPERGLUE Tekstowy, żywy język programowania 5/24/2010MARCIN HAGMAJER 6
7 SUPERGLUE 5/24/2010MARCIN HAGMAJER 7 Sygnały i komponenty Dynamiczne dziedzi- czenie Graf przepływu danych + OOP Dane zmienne w czasie Sygnały dynamicznie dziedziczą po klasach
8 PRZYKŁAD POCZĄTKOWY 5/24/2010MARCIN HAGMAJER 8
9 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/24/2010MARCIN HAGMAJER 9
10 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/24/2010MARCIN HAGMAJER 10
11 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/24/2010MARCIN HAGMAJER 11
12 ROZSZERZENIA (EXTENSIONS) Sprawiają, że sygnały rozszerzają klasy Reguły wycelowane w sygnały poza ich definicją Definiowane z wykorzystaniem operatora / : 5/24/2010MARCIN HAGMAJER 12
13 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/24/2010MARCIN HAGMAJER 13
14 CEL: UPROSZCZONY PACMAN Gracz steruje PacManem za pomocą strzałek na klawiaturze Komputer kontroluje duchy Po dotknięciu ducha, PacMan w prawy górny róg Kulka mocy na środku ektranu. 5/24/2010MARCIN HAGMAJER 14
15 RYSUNEK (1/4) 5/24/2010MARCIN HAGMAJER 15
16 RYSUNEK (2/4) 5/24/2010MARCIN HAGMAJER 16
17 RYSUNEK (3/4) 5/24/2010MARCIN HAGMAJER 17
18 RYSUNEK (4/4) 5/24/2010MARCIN HAGMAJER 18
19 RYSUNEK - ANIMACJA 5/24/2010MARCIN HAGMAJER 19
20 DODATKOWE TECHNIKI 5/24/2010MARCIN HAGMAJER 20
21 STANY STAŁE I ZMIENNE TRAKTOWANE JEDNAKOWO 5/24/2010MARCIN HAGMAJER 21
22 DYNAMICZNE DZIEDZICZENIE 5/24/2010MARCIN HAGMAJER 22
23 TYPOWANIE ZALEŻNE 5/24/2010MARCIN HAGMAJER 23
24 MEDIATORY TYPÓW 5/24/2010MARCIN HAGMAJER 24
25 WNIOSKOWANIE TYPÓW 5/24/2010MARCIN HAGMAJER 25
26 WNIOSKOWANIE TYPÓW W IDE 5/24/2010MARCIN HAGMAJER 26
27 WNIOSKOWANIE TYPÓW W IDE (1/4) 5/24/2010MARCIN HAGMAJER 27
28 WNIOSKOWANIE TYPÓW W IDE (2/4) 5/24/2010MARCIN HAGMAJER 28
29 WNIOSKOWANIE TYPÓW W IDE (3/4) 5/24/2010MARCIN HAGMAJER 29
30 WNIOSKOWANIE TYPÓW W IDE (4/4) 5/24/2010MARCIN HAGMAJER 30
31 WNIOSKOWANIE TYPÓW W IDE 5/24/2010MARCIN HAGMAJER 31
32 REALIZACJA JĘZYKA 5/24/2010MARCIN HAGMAJER 32
33 PRZETWARZANIE KODU 5/24/2010MARCIN HAGMAJER 33 skanowanieparsowanie wnioskowanie typów wykonanie Parsowanie z pierwszeństwem Damage and repair Zmiany w kodzie Zmiany stanu wywołane sygnałem Zmiana grafu przepływu danych
34 BŁĘDY CZASU WYKONANIA 5/24/2010MARCIN HAGMAJER 34 niejednoznacznie połączone sygnaly niepołączone sygnały prymitywne 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
35 IMPLEMENTACJA 5/24/2010MARCIN HAGMAJER 35
36 SYGNAŁY 5/24/2010MARCIN HAGMAJER 36
37 ROZSZERZENIA 5/24/2010MARCIN HAGMAJER 37
38 PACMAN Dokończenie gry 5/24/2010MARCIN HAGMAJER 38
39 PACMAN (1/4) 5/24/2010MARCIN HAGMAJER 39
40 PACMAN (2/4) 5/24/2010MARCIN HAGMAJER 40
41 PACMAN (3/4) 5/24/2010MARCIN HAGMAJER 41
42 PACMAN (4/4) 5/24/2010MARCIN HAGMAJER 42
43 PACMAN 5/24/2010MARCIN HAGMAJER 43
44 DZIĘKUJĘ 5/24/2010MARCIN HAGMAJER 44