260 likes | 396 Vues
Funkcionális nyelvek az oktatásban. Tömösközi Péter tpeter@ektf.hu. Miről lesz szó?. Mit nevezünk funkcionális nyelvnek? Melyek a funkcionális programozási nyelvek legfontosabb jellemzői? Mire használják ezeket a nyelveket az iparban? A funkcionális nyelvek oktatási jelentősége
E N D
Funkcionális nyelvek az oktatásban Tömösközi Péter tpeter@ektf.hu
Miről lesz szó? Mit nevezünk funkcionális nyelvnek? Melyek a funkcionális programozási nyelvek legfontosabb jellemzői? Mire használják ezeket a nyelveket az iparban? A funkcionális nyelvek oktatási jelentősége A funkcionális nyelvek felhasználhatósága az informatika oktatásának különböző területein
Funkcionális nyelvek jellemzői Egy funkcionális nyelvű program függvények kompozíciójából és egy kezdeti kifejezésből áll A program végrehajtása a kezdeti kifejezés kiértékelése
Kezdeti kifejezések Start = sqrt 5.0; // Clean main = func[1,2,3] -- Haskell squareinc 7 // eredmény: 50 vagy 64 ... függvénydefiníciók helye
Funkcionális nyelvek jellemzői A tisztán funkcionális nyelvekben csak függvények léteznek, melyeknek nincs mellékhatása
Függvény funkcionális nyelven Példa (Clean, Haskell, …) Start = area 5 ... square x = x * x area r = 3.14 * square r
Funkcionális nyelvek jellemzői Nincs destruktív értékadás (i++) Nincs iteráció (csak rekurzió) Cserébe a tail recursive hívások nem töltik meg a vermet
Hagyományos rekurzió Példa fakt 0 = 1 fakt n = n * fakt (n–1) Ez a hagyományos rekurzió, amely előbb-utóbb megtölt(het)i a vermet
Tail recursive hívás Példa fakt n = fakt2 n 1 fakt2 0 x = x fakt2 n x = fakt2 (n-1, n*x)
Funkcionális nyelvek jellemzői Lusta függvénykiértékelés: amikor pl. egy fv.-t paraméterként alkalmazunk, akkor maga a formula kerül be a kifejezésbe szövegszerűen, nem pedig annak az értéke.
Lusta kifejezéskiértékelés Mohó squareinc 7 square (inc 7) square (7 + 1) square 8 8 * 8 64 Lusta squareinc 7 square (inc 7) (inc 7) * (inc 7) (7 + 1) * (7 + 1) 8 * 8 64
Funkcionális nyelvek jellemzői Halmazkifejezések [x*x | x [1,2,3,…], odd x] {x∙x | x N, odd x} A matematikai halmazoknál alkalmazott jelölésrendszernek megfelelő nyelvi elem. Bevezeti a nyelvbe a végtelen fogalmát, ezáltal tudunk végtelen listákat definiálni.
Funkcionális nyelvek jellemzői Részleges függvénykiértékelés (Currying) -függvények (magasabb rendű függvények) apply(F, Data) -> F(Data). hivás: apply(fun(X) -> X + 1, 10)…
Funkcionális nyelvek előnyei Bonyolultnak tűnik, de nagy programozói szabadságot ad Nagy a kifejezőerejük: rövid kóddal bonyolult feladat írható le A nyelvek szintaxisa nagyon közeli a matematikai modellekhez
Miért fontosak ezek a nyelvi elemek? A informatikai számos területen hatékonyabbá tehetik az oktatást kliens–szerver-programok halmazok, listák, fák, gráfok oktatása Elosztott adatbázis-kezelés, nem csak az SQL-t erőltetjük a programozókra, új lehetőségek, pl.:QLC, ETS, Mnesia… Matematika oktatásában programozási ismeretek nélkül felhasználhatók A funkcionális nyelvek ipari felhasználása egyre jelentősebb (pl. Ericsson, telekomm. cégek)
Általános működésű szerver loop()-> receive {Pid, Func, Data} -> Pid ! {result,Func(Data)}, loop(); {Pid, stop} -> Pid ! stop end.
Szerver indítása és használata $ Pid = spawn(mod, loop, [])... $ Pid ! {self(),fun(X)->X+1 end, 10}). >{result, 11} $ send(Pid, {self(), stop})…
A modell alkalmazása Az általános működésű szerver használható Moodle-alkalmazásokban, webes felületeken akár matematikában is (halmazok definiálása/futtatása)… Lehet mobiltelefonon, vagy kis teljesítményű eszközökön nagy erőforrás igényű programokat futtatni. (Kis költségű géptermek, távoli szerver eléréssel)
A modell alkalmazása Kliens–szerver-modell tanítása egyszerű nyelvi elemek bemutatásával, elhanyagolható informatikai előismeretek mellett… Algoritmizálási problémák, valamint matematikai adatszerkezetek tanítása a programozási nyelvi elemek felhasználásával (futtatható matematikai formulák bonyolult és költséges szoftverek nélkül)…
Egy mai általános oktatási portál • szöveg • álló- és mozgókép • animáció (jobb esetben interaktív, paraméterezhető) • keresés az adatbázisban • előny a nyomtatott könyvvel szemben: a tananyag bejárásának szabadsága • az információközlés jellemzően frontális és statikus
Egy mai általános oktatási portál • feladatmegoldás: csak korlátozott eszközök állnak a tanuló rendelkezésére (pl. az egyenletben kicserélhetők az együtthatók, de másik egyenlet felírása nem lehetséges) • a portál kiegészítése – ha egyáltalán lehetséges – hosszadalmas, bonyolult és költséges feladat (készítsünk függvénykiértékelőt PHP-ban, Javaban vagy ActionScriptben…)
Funkcionális nyelvek felhasználása • készíthető olyan platformfüggetlen futtatórendszer, amely bármilyen függvényt végre tud hajtani (paraméterezés függvénnyel, -függvények) • csekély erőforrásigény • a kliensoldalon bármilyen eszköz állhat (mobiltelefon, interaktív tábla stb.) • valódi interakció: a megszerzett tudás azonnal kipróbálható a gyakorlatban
A modell futtató rendszer(-kalkulus alapú) HTTP szerver külső modulok integrálása (szükség esetén) • tudásbázis • matematika • adatbázis-kezelés • hálózatok • stb. kliens eszközök
Előnyök • hozzáférés korlátok nélkül (akár internet nélkül, ha van Bluetooth) • minimális erőforrásigény (szerver is futhat egy telefonon is) • hibatűrés • széles körű felhasználás, hatékonyság– hónapokig tartó kódolás nélkül • a tudásbázis tetszőlegesen bővíthető • ingyenes
Köszönöm a figyelmet! Tömösközi Péter: tpeter@ektf.hu