Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Podoski Péter és Zabb László

Hasonló előadás


Az előadások a következő témára: "Podoski Péter és Zabb László"— Előadás másolata:

1 Algoritmusok megjelenítése egy magas szintű programnyelv vizuális nyomkövetőjén keresztül
Podoski Péter és Zabb László Témavezetők: Dr. Fekete István, Veszprémi Anna ELTE IK

2 Bevezetés (motiváció)
„Milyen nyelven és fejlesztői környezetben lehet jól tanítani a programozást?” Lehetőleg ne hagyjuk bealudni a kitalálógépet (az elmét) „Hogyan lehet egyszerűen, de mégis szemléletesen bemutatni a különféle algoritmusokat?” Klasszikus módszer (tábla és kréta) Mindenki írja meg magától a számára megfelelő megjelenítést A mi válaszunk egy saját fejlesztésű algoritmus-megjelenítő segédeszköz, a Psimulex Egyes helyeken az első kérdésre a válasz „triviális: matematika nyelvén és a nagyelőadó nevű környezetben”

3 Algoritmus-vizualizációk ma
Célja főleg oktatási (esetleg kutatási) területre segíti az ismertetést és megértést olykor algoritmusok fejlesztésekor könnyítheti a hibakeresést Nehézség: könnyebb újat írni, mint találni egy megfelelőt Jellemző, hogy egyszerű Java appletekkel valósítják meg a demonstrációt „Milyen eszközzel, milyen nyelven és milyen környezetben is lehet jól tanítani a programozást?” – a Psimulex a mi válaszunk erre A listák ikonjait tegyük sötétebbé és esetleg szögletessé

4 Dijkstra algoritmusa Látványosak elsőre, de később unalmassá válnak

5 Legrövidebb út keresése Ausztráliában

6 Jeliot – program-vizualizáció
Túl alacsonyszintű, inkább általános iskolás célközönség

7 MatrixPro – az egyik legáltalánosabb
Saját algoritmus Java modulként csatolva

8 Egy nagyon ötletes megoldás: az egyik első gráfanimációs program

9 Az igény megfogalmazása
Elvárások egy jó megjelenítővel kapcsolatban: Célközönség számára megfelelő ábrázolás Könnyedén lehessen a vizualizációkat módosítani, bővíteni (pl. Hanoi tornyai) Egyszerű telepítés Épüljön be a tanítási folyamatba Ne igényeljen magas szintű programozói tudást

10 Psimulex - lehetőségek
.NET-ben írt nyílt forráskódú keretrendszer Algoritmusok megfogalmazása C-szerű nyelven Beépített fordítóprogram Algoritmusok futtatása Saját virtuális platform Többprocesszoros, akár hálózati emuláció Algoritmusok megjelenítése a program változóit megjelenítő általános grafikai könyvtár (WPF) Algoritmusok elemzése Műveletigény, memóriaigény

11 Architektúra

12 Saját nyelv Az algoritmusok szempontjából alapvető típusok (skalárisok, konténerek és fák, gráfok) Gyengén típusos imperatív nyelv, C-szerű szintaxissal Típuskonstrukció: rekord Fontosabb vezérlési szerkezetek Felhasználói függvények Több forrásfájl használata Globális változók

13 Saját virtuális platform
Virtuális gép („mini” OS ütemezővel), folyamatok, szálak (futási és hívási veremmel) A virtuális gép processzora futtatja az ún. „Microlex” utasításokat (gépi kódnak megfelelő parancsokat) Az ütemező cserélhető Később virtuális hálózattá bővíthető Miért nem használtunk egy meglévő VM-et? szükségünk van a teljes kontrollra a futó program felett Miért nem pl. CodeDOM?

14 Fordítás gépi kódra Négy lépésben fordítunk, visitor (látogató) tervminta alkalmazásával

15 Parancsobjektumok A „parancs” tervminta alapján készültek
Mindegyik gépi utasítás egy-egy parancsobjektum Az aktuális futási környezeten (szálon) dolgoznak Három fő csoportjuk van: Vezérlés-átadó parancsobjektumok (pl. Call, Jump) Konkrét (főleg aritmetikai) műveleteket végrehajtó parancsobjektumok Változókat, adatszerkezeteket kezelő parancsobjektumok

16 Saját típusrendszer Aránylag gazdag típuskészlet (skalár típusok, gyűjtemények, fák, gráfok) Java-hoz hasonlóan közös őstípus BaseType == Object Reflection-re épül, emiatt könnyen elérhető az egész .NET osztályhierarchia Felhasználói típus a rekord (egyelőre) A komplex típusok egymásba ágyazhatóak Automatikus típuskonverziók

17 Típushierarchia

18 Saját IDE Funkciók „LexLighter” (aktuális utasítás színezése)
„Syntax highlight” Léptetési módszerek (hasonlóan a VS-hez) Korszerű IDE, fülek, több forrásfájl kezelése, testre szabható, ergonomikus Nézetek váltása Az angol kifejezések legyenek idézőjelben

19 Saját vizualizáció Az adatszerkezetek dinamikus, változást követő, interaktív megjelenítése „Montázs” – tetszőleges elrendezhetőség: Hívási verem megjelenítése Egy-egy lényeges adatszerkezet kiemelése Egymásba ágyazhatóság (fa elemei gráfok) Adatszerkezetek szerkeszthetőek futás közben is

20 Például bináris fák egy sorban

21 Szélességi bejárás

22 Egy bináris fa szintfolytonos bejárása a Psimulex-ben
Mindez futás közben Egy bináris fa szintfolytonos bejárása a Psimulex-ben

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37 Felhasználási területek
Oktatás Algoritmusok Programozás Fordítóprogramok (assembly-szerű nyelvek logikája) Kutatás Elméletek tesztelése és bemutatása Fejlesztés Algoritmikus problémák megoldása itt és aztán implementálása Demonstráció Automatikusan létrejön a megjelenítés, csak a programot kell megírni, az inputot megszerkeszteni Ez legyen az elején (2. dia)

38 Távlati tervek Párhuzamos programozási eszközök teljes körű bevezetése
lock, monitor, erőforrások, stb… .NET interoperabilitás növelése Psimulex-ben írt programból C# vagy IL kód generálása .NET Base Class Libraryt-t elérhetővé tenni Integráció a Visual Studio debuggerébe intelligens .NET adatszerkezet reflekció és saját grafikus „debugger visualizer” Internetes portál (pl. versenyekhez) Internetes portál nyitás, ahol pl. algoritmikus problémamegoldó versenyeket lehet indítani, gyorsaság, egyszerűség stb. szempontok szerint pontozva

39 Értékelés Tipikusan túlvállalt projekt: több kezdeti cél ma már csak terv Felhasználóbarátság egyelőre nem jellemző A megjelenítés nem grafikusi vénánkról árulkodik 2. iterációhoz képest stabil rendszermag (200 unit teszt) Könnyű bővíthetőség Sikerélmény 

40 Összefoglaló Felmértük a jelenlegi igényeket és kínálatot az algoritmus megjelenítőkből Elhatároztuk, hogy készítünk egy általános algoritmus megjelenítő rendszert Ebből megvalósult a saját nyelven programozható virtuális gép, egy egyszerű grafikus csomag és egy alapszintű debugger Célok: az eddigi tapasztalatok alapján egy komplett segédeszköz publikálása

41 Köszönjük a figyelmet!


Letölteni ppt "Podoski Péter és Zabb László"

Hasonló előadás


Google Hirdetések