Digitális áramkör szimulációja reaktív programozási technikákkal
![]() óraadó
Szoba: IE335 |
A kiírás adatai
A reaktív programozást legjobban talán úgy tudjuk megfogni, hogy léteznek eseményforrásaink (például egérmozgás, billentyűzet, stb.). Ezeket tulajdonképpen úgy is el lehet képzelni, mintha lenne egy tömbünk (FIFO-nk), amiből folyamatosan olvashatjuk ki a megtörtént eseményeket. Ezek mellett pedig vannak függvényeink, amelyeket ráeresztve erre a tömbre különféle műveleteket hajthatunk végre. (Kedvenc példakódom: https://raw.githubusercontent.com/ReactiveX/RxPY/master/examples/timefli...)
A logikai szimuláció "klasszikus" megvalósítása egy egyszálú, az eseményeket és időzítési eredményeket egy táblázatban tároló architektúra volt. Ez szélességében (több processzorra) nehezen skálázódik.
A téma kulcsgondolata az a felismerés, hogy tulajdonképpen egy logikai kapu kimenete tekinthető eseményforrásnak, maga a kapu funkcionalitása pedig egy, a bemenő eseményforrásokon végrehajtott művelet. Tehát maga az Rx a HDL nyelvekből megismert adatfolyam típusú szoftverarchitektúrát valósítja meg.
A téma keretében megismerheted: .NET, C# vagy Python, Reactive programming, LINQ, Rx. Ha nem riadtál el, akkor: actor model, TLM hardvertervezés, functional programming.
A feladatod a következő lenne (B.Sc. két-három féléve):
- Belevetni magad az egyik legismertebb reactive programkönyvtárba, az Rx-be: http://www.introtorx.com/, https://msdn.microsoft.com/en-us/data/gg577609
- Rövid példakódokkal, egyszerű feladatokkal megismerni, elsajátítani a reactive programozást (vigyázat, szemléletformáló! Ha egyszer találkoztál vele, onnantól megváltozik a programozási stílusod :-))
- Egyszerű logikai kapuk (ÉS, VAGY, stb.) Rx alapú megvalósítása, tesztelése
- Szinkron sorrendi hálózatok megvalósítása
Később, ha még nem merült ki az érdeklődésed (M.Sc.):
- Időzítéses szimuláció Rx segítségével
- Egy másik reactive koncepció, az actor model megismerése (Akka, illetve Erlang üzenetmodelje)
- Tranzakció szintű szimuláció megvalósítása az actor model alkalmazásával
- Kevert szintű szimuláció actor model és Rx használatával
Tehát az talán látszik, hogy a téma nagy. Mit nyersz vele:
- Friss és hasznos programozási technikákat ismerhetsz meg (sokak szerint ez lesz a jövő)
- Valami komolyabb témával foglalkozhatsz (van, akinek ez előny :-))
- Ha olyan szintű a munka, cikk születhet belőle (ez nekem is jó :-))
- Egy életre megváltozik a programozói szemléleted. Jó irányba.
- Megismerkedhetsz Eric Meijer előadói stílusával (az Rx egyik atyja, hatalmas arc, hippi-programozó-matematikus): https://en.wikipedia.org/wiki/Erik_Meijer_%28computer_scientist%29 https://www.youtube.com/watch?v=WKore-AkisY