Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
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
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!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.