„Deklaratív programozás - Kedvcsináló” változatai közötti eltérés

A VIK Wikiből
Új oldal, tartalma: „{{GlobalTemplate|Infoalap|DeklaPoKedvCsinalo}} ==Attis== Hat ez egy erdekes targy. Ketten tartjak felvaltva: Hanak Peter es Szeredi Peter. Hanak SML-t, Szeredi Prolo…”
 
 
(5 közbenső módosítás, amit 5 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{GlobalTemplate|Infoalap|DeklaPoKedvCsinalo}}
{{Vissza|Deklaratív_programozás}}


 
==Mikor válasszam ezt?==
==Attis==
 
Hat ez egy erdekes targy. Ketten tartjak felvaltva: Hanak Peter es
Szeredi Peter. Hanak SML-t, Szeredi Prologot oktat. Igencsak a Malora epit, a
Prolog eleve a Programming in Logic, vagyis programozas logikaban roviditese.
De az SML is hasonlo. Van egy elektronikus tanarseged nevezetu progi a neten
(http://dp.iit.bme.hu/ets), ahova fel kell majd iratkoznotok, itt kell ZH-ra
jelentkezni (igen a ZH-ra is jelentkezni kell), meg itt kaptok licencet
targy honlapjan letoltheto progikhoz (http://dp.iit.bme.hu). Ja es lehet
gyakorolni is a feladatokat is az ets-en, amit rogton ki is javit a
program.
 
Van belole kiszhazi, meg nagyhazi, de egyik sem kotelezo, legalabbis ugy
emlekszem. Ja meg lehet versenyezni is, akinek ennyi nem eleg, van egy
letraverseny, ami arrol szol, hogy egy adott problemat ki milyen gyors
programmal tud megoldani. Azt hiszem:) Konyvet csak toluk tudsz venni(30
eves tecnikaval nyomott es kotott sajat kiadasu konyvek, azt hiszem az
SML-ben van irva, hogy az az egyetlen magyar jegyzet hozza), vagy az
eloadasfolakat letolteni. A vizsga szobeli, miutan megirtad a beugrot.
 
-- [[PallosPeter|Peti]] - 2006.01.15.
 
==BSc infók==
2009/2010 ősz:
Prolog és Erlang nyelvet tanultunk. Először mindkét nyelvből az alapokat, majd a félév második felében a nehezebb, összetettem problémákat vettük.
A gyakorlatok kötelezőek, habár 2 kihagyható.
 
Régi: A tárgy ebben a félévben indult ebben a formában utoljára. A követelményrendszervben nagy változásokra nem kell számítani, illetve a lemaradó ötéveseknek is automatikusan megfelel az új tárgy a réginek. A legnagyobb változás az lesz, hogy SML helyett az Erlang nyelvet kezdik el tanítani, mert azt szélesebb körben használják (ld. [http://www.ejabberd.im/ ejabberd], egy Erlang nyelven írt [http://www.jabber.org/ Jabber] szerver).
 
===Mikor válasszam ezt?===


NE akkor, ha nulla munkával akarsz kreditet szerezni :) A tárgyban két nehézség van: az egyik az imperatív gondolkodásmódról átállni a deklaratívra, a másik pedig a félévközi feladatok.
NE akkor, ha nulla munkával akarsz kreditet szerezni :) A tárgyban két nehézség van: az egyik az imperatív gondolkodásmódról átállni a deklaratívra, a másik pedig a félévközi feladatok.
39. sor: 9. sor:
-- [[PalfalviJozsef|afro]] - 2009.11.03.
-- [[PalfalviJozsef|afro]] - 2009.11.03.


A szorgalmi időszakban 3-3 kisháziból legalább a felét meg kell csinálni (plusszpontokért érdemes a többit is), és a végéig egy nagyházit össze kell dobni. Ezekhez segítséget nyújtanak a heti gyakorlatok, illetve az előadók is bármikor fogadnak hallgatókat konzultálni.
Ha fejlesztőként szeretnél dolgozni, akkor kifejezetten ajánlom a tárgyat, megtanít a deklaratív gondolkozásra, ami számtalan nyelvben előjöhet (pl. C++ template metaprogramozás). Ezen kívül interjúkon szeretnek rákérdezni rekurzív megoldásokra, ha érted a működését, sokkal könnyebben fogsz tudni kezelni pl. egy bináris fát.
 
Megtanítják, hogy hogyan lehet hatékony rekurziót írni (tehát nyilván nem igaz az, hogy a rekurzió mindig használhatatlan).
A deklaratív gondolkodást a két nyelv két oldalról közelíti meg. A Prolog (PL) arról szól, amiről az MI. Klózokat fogalmazunk meg, majd megadunk egy célt, a program meg automatikusan kitalálja, hogy a klózok használata során hogyan jut el a célig. Ilyen rendszerben pl. egy sudoku megoldó program megírása csak pár sor, mert klózokkal megmondod, hogy minden sorban, oszlopban és cellában csak 1..9-ig lehetnek számok, a többit pedig a compiler megoldja (ez volt az idei nagyházi). Az Erlang ezzel szemben arról szól, hogy nagyrészt csak függvényekkel, és függvény argumentumokkal operálunk, változókkal kevésbé, így a legtöbb algoritmusban a rekurzió az úr :)
 
Ez majdnem teljesen igaz is, kivéve azt, hogy egy átlagos kisházi 60-100 sor között mozog (nyelvenként, kommentezve), a nagyházi pedig ennek többszöröse. Aki azt írta, hogy "pár sor", az adhatna "pár forintot". :)
-- [[PalfalviJozsef|afro]] - 2009.11.03.
 
A Deklaratív programozás a Beszédinformációs rendszerek és Rendszermodellezés mellett a három elágazó tárgy egyike. A tárgy a Cékla nevű nyelvvel kezdődik (a CÉ++ nyelv deKLAratív része), ebből 1 kis házi van, majd Prologgal és Erlanggal folytatódik (3-3 kisházi, ugyanazokat a feladatokat kell implementálni mindkét nyelven). A Prologot Szeredi Péter (CS), az Erlangot Kápolnai Richárd (IIT) oktatja. Az aláíráshoz minimum 3 kis házi feladat (legalább 1 Prolog és 1 Erlang) teljesítése és a zh megírása szükséges. A zh könnyű, de beszámít a vizsgába, úgyhogy érdemes jól megírni. Vizsgajegyet nagy házi feladat készítésével és szóbeli vizsgával lehet szerezni. A szóbeli vizsga 6 részes: mindkét nyelvből van elméleti, gyakorlati és "mit ír ki" jellegű feladat. A vizsga így elég hosszú (nem ritka 3-4 órás vagy hosszabb), de jó hangulatban zajlik, a vizsgáztatók kifejezetten segítőkészek és jóindulatúak. Utóbbi egyébként az egész tárgy során érzékelhető: maximálisan korrekten és megértően álltak a hallgatókhoz minden kérdésben.


Ahogy többen írták, a tárgy kifejezetten munkás, bár nagyon emberfüggő, hogy kinek mennyire áll rá a gondolkodásmódja. A tárgy kifejezetten hasznos tudást ad: egy új programozási paradigmát tanít, elvégzése után bármilyen programnyelven jóval könnyebb lesz rekurzív függvények írása.
Igaz, hogy a két nyelv elég régi, viszont ha a működést megérted, akkor a szintaktika nagyon könnyű, szerintem jól használhatóak a szemlélethez. Prologhoz csináltak egy futtatást modellező programot és a [https://swish.swi-prolog.org/ SWISH]-en végig lehet debuggolni, amit írtál. Erlang-ból nekem nem sikerült működésre bírnom egy értelmes környezetet sem, nem tudom, hogy ott lehetne-e debuggolni. Jó hír viszont, hogy a két nyelv gyakorlatilag mechanikusan átfordítható egymásba, én így csináltam a kis házikat Erlangból (azaz kitalálsz az egyikre egy megoldást a másikhoz csak a szintaktikát kell átírni).
Az oktatók nagyon cukik és segítőkészek, látszik rajtuk, hogy tényleg az a céljuk, hogy megértsd a dolgokat. Korrekten pontozzák a zh-kat is, de azért kell készülni ahhoz, hogy átmenj.


-- [[SzarnyasGabor|SzárnyasGábor]] - 2012.06.20.
A nagy házi kifejezetten nehéz, ha a megajánlott jegyre mennél, akkor több héttel a beadás előtt legalább el kell kezdeni (sokkal nehezebb, mint a kis házik, nem lehet belőlük összerakni).
Nekem mindegyik Prolog (és a Cékla) kis házi egy-egy napot vett kb. el a hétvégéből + 1 nap volt, mire rájöttem, hogy hogyan írom át Erlangba. Egyébként én személy szerint nagyon élveztem ezeket írni, mert egy logikai problémára kell megtalálni a megoldást, nem olyan, mint mondjuk egy JAVA házi, hogy van egy béna feladat, de igazából az egész a szintaktikáról és az OO elvekről szól.


Nem nehéz teljesíteni a tárgyat, de tényleg sok munkát kell beletenni. Viszont legalább tanulsz egy olyan dolgot, amit hasznosítani tudsz a későbbiekben. Minél több szemléletet ismersz, annál jobb fejlesztőnek számítasz, és annál könnyebb lesz új nyelveket megtanulni.
-- [[SzellmannRéka|Ráhel]] - 2020.01.02


[[Category:Infoalap]]
[[Category:Infoalap]]

A lap jelenlegi, 2021. január 2., 16:20-kori változata


Mikor válasszam ezt?

NE akkor, ha nulla munkával akarsz kreditet szerezni :) A tárgyban két nehézség van: az egyik az imperatív gondolkodásmódról átállni a deklaratívra, a másik pedig a félévközi feladatok. Tehát aki azt hiszi, hogy nulla munkával jár a 6 kisházi, nagyházi, ZH, és vizsga megírása, az nagyon téved. Alapvetően, ha nem vagy jártas a deklaratív gondolkodásban, akkor elég sok időt rá kell szánni, hogy begyakorold. A kisházik erre nagyon alkalmasak, de így házinként 3-4-5 órát is el lehet pepecselni, és ha nem valamilyen exponenciális lépsészámú algoritmust akarsz megírni, akkor még többet is. Aki emlékszik az MI-re és a PDDL-re, az előnnyel indul, de az ottani házi az kb. az első kisházi felének a megoldásával azonos komplexitású. Ezzel nem azt akarom mondani, hogy nehéz a tárgy, mert alapvetően nem az, de IDŐIGÉNYES, sokat kell fölötte ülni! -- afro - 2009.11.03.

Ha fejlesztőként szeretnél dolgozni, akkor kifejezetten ajánlom a tárgyat, megtanít a deklaratív gondolkozásra, ami számtalan nyelvben előjöhet (pl. C++ template metaprogramozás). Ezen kívül interjúkon szeretnek rákérdezni rekurzív megoldásokra, ha érted a működését, sokkal könnyebben fogsz tudni kezelni pl. egy bináris fát. Megtanítják, hogy hogyan lehet hatékony rekurziót írni (tehát nyilván nem igaz az, hogy a rekurzió mindig használhatatlan).

Igaz, hogy a két nyelv elég régi, viszont ha a működést megérted, akkor a szintaktika nagyon könnyű, szerintem jól használhatóak a szemlélethez. Prologhoz csináltak egy futtatást modellező programot és a SWISH-en végig lehet debuggolni, amit írtál. Erlang-ból nekem nem sikerült működésre bírnom egy értelmes környezetet sem, nem tudom, hogy ott lehetne-e debuggolni. Jó hír viszont, hogy a két nyelv gyakorlatilag mechanikusan átfordítható egymásba, én így csináltam a kis házikat Erlangból (azaz kitalálsz az egyikre egy megoldást a másikhoz csak a szintaktikát kell átírni). Az oktatók nagyon cukik és segítőkészek, látszik rajtuk, hogy tényleg az a céljuk, hogy megértsd a dolgokat. Korrekten pontozzák a zh-kat is, de azért kell készülni ahhoz, hogy átmenj.

A nagy házi kifejezetten nehéz, ha a megajánlott jegyre mennél, akkor több héttel a beadás előtt legalább el kell kezdeni (sokkal nehezebb, mint a kis házik, nem lehet belőlük összerakni). Nekem mindegyik Prolog (és a Cékla) kis házi egy-egy napot vett kb. el a hétvégéből + 1 nap volt, mire rájöttem, hogy hogyan írom át Erlangba. Egyébként én személy szerint nagyon élveztem ezeket írni, mert egy logikai problémára kell megtalálni a megoldást, nem olyan, mint mondjuk egy JAVA házi, hogy van egy béna feladat, de igazából az egész a szintaktikáról és az OO elvekről szól.

Nem nehéz teljesíteni a tárgyat, de tényleg sok munkát kell beletenni. Viszont legalább tanulsz egy olyan dolgot, amit hasznosítani tudsz a későbbiekben. Minél több szemléletet ismersz, annál jobb fejlesztőnek számítasz, és annál könnyebb lesz új nyelveket megtanulni. -- Ráhel - 2020.01.02