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

A VIK Wikiből
Harapeti (vitalap | szerkesztései)
vissza-link beillesztése
 
(3 közbenső módosítás, amit 3 másik szerkesztő végzett, nincs mutatva)
9. sor: 9. sor:
-- [[PalfalviJozsef|afro]] - 2009.11.03.
-- [[PalfalviJozsef|afro]] - 2009.11.03.


==BSc infók==
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 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.
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.


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


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". :)
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.
-- [[PalfalviJozsef|afro]] - 2009.11.03.
-- [[SzellmannRéka|Ráhel]] - 2020.01.02
 
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.
 
-- [[SzarnyasGabor|SzárnyasGábor]] - 2012.06.20.


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