1 / 39

Algoritmusok megjelenítése egy magas szintű programnyelv vizuális nyomkövetőjén keresztül

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. Bevezető. Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket

tehya
Download Presentation

Algoritmusok megjelenítése egy magas szintű programnyelv vizuális nyomkövetőjén keresztül

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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ő • Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket • Felmértük a manapság ismert eszközök előnyeit és hiányosságait • Kidolgoztunk egy saját megjelenítő rendszert, amiben az algoritmusok vizualizációjához szükséges eszközök széles palettája elérhető

  3. Algoritmus-vizualizációk ma • Célja • főleg oktatási területre • könnyebb ismertetés és megértés • olykor algoritmusok fejlesztésekor is segíthet a hibakeresésben • Nehézségek: könnyebb újat írni, mint találni egy megfelelőt • Jellemző, hogy egyszerű Java appletekkelvalósítják meg a demonstrációt

  4. Dijkstra algoritmusa

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

  6. Jeliot – program-vizualizáció

  7. MatrixPro – az egyik legáltalánosabb

  8. 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

  9. 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

  10. Architektúra

  11. 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

  12. Saját virtuális platform • Virtuális gép („mini” OS ütemezővel), folyamatok, szálak • A virtuális gép processzora futtatja az ún. „Microlex” utasításokat (gépi kódnak megfelelő parancsobjektumokat) • Az egyes szálaknak futási és hívási vermük van • Az ütemező cserélhető • Később virtuális hálózattá bővíthető

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

  14. 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

  15. 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

  16. Típushierarchia

  17. Saját IDE • Funkciók • „LexLighter” (aktuális utasítás színezése) • „Syntaxhighlight” • 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

  18. Saját vizualizáció • Dinamikus, változást követő, interaktív adatszerkezetek 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

  19. Például bináris fák egy sorban

  20. Szélességi bejárás

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

  22. Felhasználási területek • Oktatás • Algoritmusok • Programozás • Fordítóprogramok (assembly-szerű nyelvek filozófiá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.

  23. Távlati tervek • Párhuzamos programozási eszközök (lock, monitor, erőforrások) teljeskörű bevezetése • .NET interoperabilitásnövelése (a megírt Psimulex nyelvű programból C# vagy IL kódot generálhassunk) • Integráció a Visual Studiodebuggerébe: intelligens .NET adatszerkezet reflekcióés saját grafikus modul • Internetes portál (pl. versenyekhez) • Oktatási és fejlesztési segédeszközzé válás

  24. Ö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

  25. Köszönjük a figyelmet!

More Related