2010. március 11.

Logikai programozás nem programozóknak abszolút kezdő szinttől (prolog)

Azok akiknek az alapmotivációja maga a programozás, az informatika szeretete és/vagy a puszta érdeklődés, sokkal könnyebb elsajátítani egy programozási paradigmát. Miért? Nem tudom pontosan, de talán azért mert nekik a kontextus adott, egy új dolog tanulása maga a kontextus. A tanulás pedig már csak ilyen, kontextus függő. De mi legyen azokkal akik máshonnét közelítik meg a dolgot?

Ha ismersz már más paradigmákat (objektum orientált, funkcionális, procedurális meg ki tudja még mi van) akkor is nehéz lehet a logikai programozás, ha nem akkor is. Ez a rossz hír. A jó hogy lehet motivált a tanulási folyamat. A tanulás és a biflázás között az a legnagyobb különbség hogy a puszta "tény bevágás" nincs kontextusban. Történelem órára anno sokat kellett évszámokat, helyeket megjegyezni. Ilyenkor először listát készítettem, kártyát csináltam stb. Hamar rájöttem hogy ezzel nem tudok tuti eredményt elérni. Sokkal fontosabb a folyamatok megértése, ehhez kell a térkép és az évszámok tkp állomások a történetben. A "guru" programozók azért kenik-vágják a sok-sok nyelvet mert egyrészt okosak, másrészt sokat gyakoroltak, harmadrészt van egy sztorijuk amire felfűzik ezt a tudásukat.

A logikai programozás érdekes! Ha érdekel a története a Google a barátod! Megannyi elméleti motiváció ellenére vannak akik szeretnének programozni tanulni, vagy a programozásra mint eszközre tekintenek. Az én utam ebbe a csoportba sorolható. Először az egyetemen kaptam telibe a prolog-ot mesterséges intelligencián (nyelvészeknek, minimális szinten, amolyan olvasunk de nem csináljuk dolog volt ez). Nem ment. Levizsgáztam, kaptam egy ötöst "oszt annyi".  De valami megfogott. Filón már csak a logika érdekelt akkor és ehhez szerettem kapcsolni mindent. Egy kis okoskodással megtaláltam a Learn Prolog Now oldalt. Nem egy hú de eldobom az agyamat oldal. Viszont kezdőknek kiváló! Semmilyen programozási ismeretet nem követel meg az olvasótól. Alapos, szájbarágós és sok feladatot tartalmaz. Egy kis eligazítást is találsz a különféle prolog implementációkról, de én az SWI-Prolog híve vagyok, ha szeretsz azt telepíted :D

Ha megvan az alap, jöhet a móka! Nyelvészek, filozófusok előnyben, de ha csak szimplán érdekel a nyelv, akkor is jó pozícióban vagy. A fenti könyv szerzői jó munkát végeztek és nem hagyták abba. A Natural Language Processing Techniques in Prolog a legalapvetőbb számítógépes nyelvészeti fogalmakat tanítja meg és tovább mélyíti prolog tudásod. Logikai programozás logikai témában! Egyszerre két dolgot tanulhatsz és ez már tényleg érdekes. Ha szereted a logikát és tetszett amit eddig láttál akkor a következő lépés a Computational Semantics c. könyv/oldal (a szerzők majdnem ugyanazok).

Persze ettől még nem leszel "prolog guru", de egész jó alapot ad. És nem bébi problémákon gyakorlatozva, hanem valami hasznosat és érdekeset tanulva sajátítottad el az alapokat. Ha további gyakorlásra van szükséged ez a legjobb, ha nem, akkor jöhetnek a felsőbb stúdiumok! Az én listám a következő (amazon linkek!)
  1. Clocksin - Mellish: Programming in Prolog
  2. Covington - Nute - Vellino: Prolog Programming in Depth
  3. Sterling - Shapiro : The Art of Prolog
  4. Bratko : Prolog Programming for Artificial Intelligence
Az első kettőt érdemes kipróbálni, mindegy melyiket választod kb ugyanazt fedik. A Clocksin - Mellish a tulajdonképpeni standard könyv, amennyire én tudom, a legtöbb helyen ezt használják/ajánlják a tanuló fiataloknak. A második szerintem jobb, inkább van mihez kötni az anyagot. A harmadik nagyobb odafigyelést igényel, de szinte kötelező. Az elméleti oldalt erősíti és ha nem is olvastál mindent a fentiekből, konszolidálja a tudásodat. A negyedik nekem nem jön be, de úgy tűnik rajtam kívül mindenki szereti és érdemes belenézni.

1 megjegyzés:

gricso írta...

Egy-két magyar hivatkozás is található a témában, bár sokkal kevesebb mint angol nyelven. Különösen ajánlom mindenkinek (én is ebből tanultam): Márkus Zsuzsanna - Prologban programozni könnyű című könyvét, illetve a Szeredi Péter Deklaratív programozás című előadássorozatát, jegyzeteit. Mindkettő fellelhető az Interneten.