1 / 26

Funkcionális nyelvek az oktatásban

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

Download Presentation

Funkcionális nyelvek az oktatásban

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. Funkcionális nyelvek az oktatásban Tömösközi Péter tpeter@ektf.hu

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

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

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

  5. Funkcionális nyelvek jellemzői A tisztán funkcionális nyelvekben csak függvények léteznek, melyeknek nincs mellékhatása

  6. Függvény funkcionális nyelven Példa (Clean, Haskell, …) Start = area 5 ... square x = x * x area r = 3.14 * square r

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

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

  9. Tail recursive hívás Példa fakt n = fakt2 n 1 fakt2 0 x = x fakt2 n x = fakt2 (n-1, n*x)

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

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

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

  13. 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)…

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

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

  16. Általános működésű szerver loop()-> receive {Pid, Func, Data} -> Pid ! {result,Func(Data)}, loop(); {Pid, stop} -> Pid ! stop end.

  17. 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})…

  18. 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)

  19. 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)…

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

  21. 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…)

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

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

  24. A modell

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

  26. Köszönöm a figyelmet! Tömösközi Péter: tpeter@ektf.hu

More Related