160 likes | 314 Views
Új szoftverparadigmák nyelvi támogatása: a jelen oktatása – a holnap technológiája. Porkoláb Zoltán, gsd@inf.elte.hu Kozsik Tamás, kto@inf.elte.hu Zsók Viktória, zsv@inf.elte.hu Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék. A paradigma.
E N D
Új szoftverparadigmák nyelvi támogatása: a jelen oktatása – a holnap technológiája Porkoláb Zoltán, gsd@inf.elte.hu Kozsik Tamás, kto@inf.elte.hu Zsók Viktória, zsv@inf.elte.hu Eötvös Loránd Tudományegyetem, Informatikai KarProgramozási Nyelvek és Fordítóprogramok Tanszék
A paradigma • Az absztrakció fogalma • + általános • - specifikus • A paradigma • útmutató az absztrakciók létrehozására • szabályok és konvenciók halmaza • eszközöket biztosít a fejlesztés támogatására • evolúció
Strukturált programozás • Szekvenciából, elágazásból és ciklusból felépülő (goto mentes) eljárások • Eljárások paraméterátadással és globális változókkal kommunikáltak • Adekvát algoritmusok meghatározása • Magasszintű függvénykönyvtárak • Gyengének bizonyultak az adatstruktúrák kompozíciójában
Az objektumelvű paradigma • Adekvát adatstruktúrák és a rajtuk végzett műveletek, • Enkapszuláció • Osztályok: az azonos adatstruktúrával és műveletekkel rendelkező objektumok programnyelvi leírása • Öröklődés, osztályok hierarchiája
Az objektumelvű paradigma • Generalizáció, specializáció • Erősen típusos programozási nyelvek támogatják • Dinamikus kötés - futási idejű polimorfizmus • Elterjedt az iparban és oktatásban • C++, Java • Az első oktatott nyelv – • procedurális vs. objektumelvű
Objektumelvű paradigma - kritika • Pozitív és negatív változások • Dinamikus kötés és a fordítási idejű típusellenőrzés egyidejű megvalósítása • kovariáns visszatérő érték, kontravariáns paraméter • A kifejezés-probléma • Hatékonysági problémák
Új paradigmák • Aspektusorientált programozás • Generikus programozás • Magasabbrendű funkcionális programozás • Az új paradigmák beépítik a korábbi paradigmák tapasztalatait • Multiparadigma elvű rendszerek
Aspektus-orientált programozás • Motiváció: Rossz modularitás OOP-ban • Szétszórt kódrészletek • Kód utólagos módosítása • Aspektusok – csatolási pontok - szövőgép • Példa: AspectJ + Java
Generatív programozás • Adatszerkezetek – általános algoritmusok • Fordítási idejű típusellenőrzés • Parametrikus polimorfizmus • Algoritmusok - osztályok - funktorok • Példa: C++ Standard Template Library
Funkcionális programozás • Függvények kiértékelése, magasabbrendű függvények • Kompozicionalitás elve, kiértékelési stratégiák • Lambda kalkulus, gráfátíró rendszerek • Magasabb rendű típusok, típusosztályok, egzisztenciálisan kvantált típusok, unique típusok, monádok
OO-AOP együttélés • Alapstruktúra – OOP • Csökkenti a kódismétlést az osztályokban • Javítja a modularitást • Segíti a pozitív és negatív változások követését • + after/before • – around
OO-GP együttélés • Absztrakt adatszerkezetek – osztályok • Funktor-ok • Algoritmusok ábrázolása osztályként • Mixin-ek: • Az öröklési hierarchia megfordítása • Csökkenti az osztályok számát és interfészét • Segíti a negatív változások követését
OO-FP együttélés • Absztrakt adatszerkezetek – osztályok • Enkapszuláció • Altípusosság: • Nominális • Strukturális
GP-FP együttélés • Standard Template Library • Funkcionális programozás • Template metaprogramozás • Funkcionális programozás • Funkcionális programok • Generikus adatszerkezetek és függvények • Parametrikus polimorfizmus
Összefoglalás • Paradigmák evolúciója • Akadémiai kutatások • Ipari követelmények • „gyakorlatias” versus „akadémikus” tárgyak • Új paradigmák megértésére, befogadása • Felkészítés a jelen és a jövő technológiáira
Hivatkozások • James O. Coplien: Multiparadigm Design for C++, Addison-Wesley, 1998 • David Musser, Atul Saini: STL Tutorial and Reference Guide, Addison-Wesley, 1996 • Bjarne Stroustrup: The C++ Language, Addison-Wesley, 2000 • Czarnetzki, Eisenecker: Generative Programming, Addison-Wesley, 2000