• Nie Znaleziono Wyników

ŻYWE JĘZYKI PROGRAMOWANIA

N/A
N/A
Protected

Academic year: 2021

Share "ŻYWE JĘZYKI PROGRAMOWANIA"

Copied!
44
0
0

Pełen tekst

(1)

Ż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

(2)

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

(3)

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

(4)

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

(5)

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

(6)

SUPERGLUE

Tekstowy, żywy język programowania

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

6

(7)

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

(8)

PRZYKŁAD POCZĄTKOWY

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

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 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

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 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

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 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

11

(12)

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

(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 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

13

(14)

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

(15)

RYSUNEK (1/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

15

(16)

RYSUNEK (2/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

16

(17)

RYSUNEK (3/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

17

(18)

RYSUNEK (4/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

18

(19)

RYSUNEK - ANIMACJA

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

19

(20)

DODATKOWE TECHNIKI

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

20

(21)

STANY STAŁE I ZMIENNE

TRAKTOWANE JEDNAKOWO

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

21

(22)

DYNAMICZNE DZIEDZICZENIE

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

22

(23)

TYPOWANIE ZALEŻNE

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

23

(24)

MEDIATORY TYPÓW

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

24

(25)

WNIOSKOWANIE TYPÓW

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

25

(26)

WNIOSKOWANIE TYPÓW W IDE

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

26

(27)

WNIOSKOWANIE TYPÓW W IDE (1/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

27

(28)

WNIOSKOWANIE TYPÓW W IDE (2/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

28

(29)

WNIOSKOWANIE TYPÓW W IDE (3/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

29

(30)

WNIOSKOWANIE TYPÓW W IDE (4/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

30

(31)

WNIOSKOWANIE TYPÓW W IDE

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

31

(32)

REALIZACJA JĘZYKA

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

32

(33)

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

(34)

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

(35)

IMPLEMENTACJA

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

35

(36)

SYGNAŁY

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

36

(37)

ROZSZERZENIA

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

37

(38)

PACMAN

Dokończenie gry

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

38

(39)

PACMAN (1/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

39

(40)

PACMAN (2/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

40

(41)

PACMAN (3/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

41

(42)

PACMAN (4/4)

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

42

(43)

PACMAN

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

43

(44)

DZIĘKUJĘ

5 / 2 4 / 2 0 1 0

M ARCI N HAG M AJ ER

44

Cytaty

Powiązane dokumenty

We funkcji main stworzyć tablicę obiektów typu Triangle, utworzyć obiekt klasy Triangles,. wywołać z niego metody wyszukiwania trójkąta o maksymalnym obwodzie, oraz sprawdzania

Ochrona danych poprzez argumenty typu static. Przeładowanie operatora

• automatyka przemysłowa: PLC Ladder (Siemens, Allen-Bradley, Mitsubishi Electric, Beckhoff) , SCA- DA, DCS −→ Industrial IoT (Python, Java, C/C++ z protokołami komunikacji),

• robotyka: C/C++, Python, Java, C#/.NET, Matlab, asembler, HDLs (FPGA), Lisp, języki programowania robotów – RAPID (ABB) , KRL (Kuka) , Karel (Fanuc) , AS (Kawasaki) ,

Zagadnienia: generacje języków progamowania, kod maszynowy, asem- bler, drzewo genealogiczne języków wysokiego poziomu, języki:?. imperatywne, aplikatywne, deklaratywne,

Zagadnienia: generacje języków progamowania, kod maszynowy, asem- bler, drzewo genealogiczne języków wysokiego poziomu, języki:D. imperatywne, aplikatywne, deklaratywne,

Kompilator – program przetwarzający kod źródłowy na kod wynikowy (kod pośredni w języku maszynowym, który jest zrozumiały dla komputera).. Interpretator –

Typ definiuje zakres lub zbiór dopuszczalnych wartości zmiennych, stałych i funkcji, zbiór dopuszczalnych operacji wykonywanych na tych wartościach