funkcionális nyelvek az oktatásban

26
Funkcionális nyelvek az oktatásban Tömösközi Péter [email protected]

Upload: addison-hyde

Post on 30-Dec-2015

68 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Funkcionális nyelvek az oktatásban

Funkcionális nyelvek az oktatásban

Tömösközi Pé[email protected]

Page 2: Funkcionális nyelvek az oktatásban

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

Page 3: Funkcionális nyelvek az oktatásban

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

Page 4: Funkcionális nyelvek az oktatásban

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

Page 5: Funkcionális nyelvek az oktatásban

Funkcionális nyelvek jellemzői A tisztán funkcionális nyelvekben csak

függvények léteznek, melyeknek nincs mellékhatása

Page 6: Funkcionális nyelvek az oktatásban

Függvény funkcionális nyelven

Példa (Clean, Haskell, …)

Start = area 5

...

square x = x * x

area r = 3.14 * square r

Page 7: Funkcionális nyelvek az oktatásban

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

Page 8: Funkcionális nyelvek az oktatásban

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

Page 9: Funkcionális nyelvek az oktatásban

Tail recursive hívás

Példa

fakt n = fakt2 n 1

fakt2 0 x = x

fakt2 n x = fakt2 (n-1, n*x)

Page 10: Funkcionális nyelvek az oktatásban

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.

Page 11: Funkcionális nyelvek az oktatásban

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

Page 12: Funkcionális nyelvek az oktatásban

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.

Page 13: Funkcionális nyelvek az oktatásban

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

Page 14: Funkcionális nyelvek az oktatásban

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

Page 15: Funkcionális nyelvek az oktatásban

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)

Page 16: Funkcionális nyelvek az oktatásban

Általános működésű szerver

loop()->

receive

{Pid, Func, Data} ->

Pid ! {result,Func(Data)},

loop();

{Pid, stop} -> Pid ! stop

end.

Page 17: Funkcionális nyelvek az oktatásban

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

Page 18: Funkcionális nyelvek az oktatásban

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)

Page 19: Funkcionális nyelvek az oktatásban

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

Page 20: Funkcionális nyelvek az oktatásban

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

Page 21: Funkcionális nyelvek az oktatásban

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

Page 22: Funkcionális nyelvek az oktatásban

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

Page 23: Funkcionális nyelvek az oktatásban

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)

Page 24: Funkcionális nyelvek az oktatásban

A modell

Page 25: Funkcionális nyelvek az oktatásban

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

Page 26: Funkcionális nyelvek az oktatásban

Köszönöm a figyelmet!

Tömösközi Péter: [email protected]