Podoski Péter és Zabb László

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Projekt vezetés és kontroll – Mi történik a gépházban?
Hatékonyságvizsgálat, dokumentálás
Piacképes programozói tudás a középiskolában
Iratkezelő rendszer fejlesztése WPF alapokon
Podoski Péter és Zabb László Témavezetők: Dr. Fekete István, Veszprémi Anna ELTE IK.
3. A programozás eszközei, programozás-technikai alapismeretek
A webes tesztelés jövője
Microsoft fejlesztőeszközök a szakképzésben Farkas Bálint Visual Studio 2008.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Programozási ismeretek oktatása: kód vagy algoritmus
JavaScript.
Weben publikált térképek a földrajzi kutatásokban Ádám Eszter Geográfus MSc hallgató.
Programozási alapismeretek
Bevezetés a Java programozásba
Virtuális méréstechnika
Kincses Zoltán, Mingesz Róbert, Vadai Gergely
Mérés és adatgyűjtés laboratóriumi gyakorlat Makan Gergely, Mingesz Róbert, Nagy Tamás 2. óra szeptember 9., 10. v
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
Persa György Témavezető: Szabó Csanád Pázmány Péter Katolikus Egyetem Információs Technológiai Kar 1.
Az Office Business Application (OBA) alkalmazásmodell Az üzleti probléma: központosított, mégis rugalmas feladatkövetés A lehetséges megoldások nagyvállalati.
Is:energy kereskedelmi folyamatainak automatizációja Office System felhasználásával Turcsán Ferenc, sales és marketing igazgató, is:energy Hungary Kft.
Célkeresztben az érettségi! A legjobb és leghatékonyabb eszközt akarjuk Kevesebb hibalehetőség, barátságos hibaüzenetek Kiváló fejlesztőeszköz Gyorsan.
PIC processzor és környezete
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
Vizuális és web programozás II.
Objektum Vezérelt Szoftverek Analízise Ferenc Rudolf és Beszédes Árpád Szegedi Tudományegyetem FrontEndART.
CommunityCloud Private Cloud Public Cloud Hybrid Clouds Megvalósítás módja Szolgáltatás modell Alapvető jellemzők Közös jellemzők Software as a Service.
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
A PHP (PHP: Hypertext Preprocessor) nyílt forráskódú, számítógépes szkriptnyelv, legfőbb felhasználási területe a dinamikus weboldalak készítése. Emiatt.
Számítógépes üzemmódok
Web Application for Resource Planning
Podoski Péter és Zabb László. 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.
Adatszerkezetek 1. előadás
Önálló labor munka Csillag Kristóf 2005/2006. őszi félév Téma: „Argument Mapping (és hasonló) technológiákon alapuló döntéstámogató rendszerek vizsgálata”
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Programozási nyelvek.
PHP oktatási tapasztalatok
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Visual Basic 2008 Express Edition
Műszer vezérlő - kezelő program GPI-745A teszterhez.
Programozás. Programozási nyelvek: Gépi nyelv A számítástechnika őskorában egyedüli lehetőség volt a gép bitsorozattal való programozása. Minden processzor.
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Podoski Péter és Zabb László. 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.
Miért jó nekünk kutatóknak a felhő?
Programozás, programtervezés
Gráfok ábrázolása teljesen láncoltan
Útkeresések.
Készítette: Kokrák Mihály Konzulens: Smid László
DLL használata és készítése Feladat
Algoritmusok és adatszerkezetek
.NET FRAMEWORK Röviden Krizsán Zoltán 1.0. Tulajdonságok I Rövidebb fejlesztés 20 támogatott nyelv (nyílt specifikáció) 20 támogatott nyelv (nyílt specifikáció)
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
GeoGebra Dinamikus matematika mindenkinek
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Vizuális programozás Előadó: Csapó Gábor.
Informatikai gyakorlatok 11. évfolyam
Analogical and Neural Computing Laboratory, Hungarian Academy of Sciences, Budapest 1 MATLAB u Hatékony, interaktív, tudományos és műszaki számítások,
SZOFTVER TESZTKÉRDÉSEK TÖMEGES IMPORTÁLÁSÁRA ILIAS E-LEARNING KERETRENDSZERBE Kovács Magda-díj 2015/16. Kimmel Gábor Mérnökinformatikus szak MI2013N.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
Adatstruktúrák Algoritmusok Objektumok
Programozási nyelvek Programozási alapismeretek
Lente Tamás Méliusz Juhász Péter Könyvtár
Beépített függvények használata programozáskor
Java Code Coverage Library
DRUPAL Előadja: Nagy Nikoletta :05.
Előadás másolata:

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é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”

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é

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

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

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

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

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

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

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

Architektúra

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

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?

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

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

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

Típushierarchia

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

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

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

Szélességi bejárás

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

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)

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

É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 

Ö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

Köszönjük a figyelmet!