funkcionális nyelvek az oktatásban
DESCRIPTION
Funkcionális nyelvek az oktatásban. Tömösközi Péter [email protected]. 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 - PowerPoint PPT PresentationTRANSCRIPT
Funkcionális nyelvek az oktatásban
Tömösközi Pé[email protected]
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ésMohó
squareinc 7
1. square (inc 7)
2. square (7 + 1)
3. square 8
4. 8 * 8
5. 64
Lusta
squareinc 7
1. square (inc 7)
2. (inc 7) * (inc 7)
3. (7 + 1) * (7 + 1)
4. 8 * 8
5. 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)…
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…)
Egy mai általános oktatási portál
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
Funkcionális nyelvek felhasználása
A modell
HTTP szerverfuttató rendszer (-kalkulus alapú)
tudásbázis• matematika• adatbázis-kezelés• hálózatokstb.
kliens eszközök
külső modulok integrálása
(szükség esetén)
A modell
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
Előnyök
Köszönöm a figyelmet!
Tömösközi Péter: [email protected]