A következő címkéjű bejegyzések mutatása: tanulás. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: tanulás. Összes bejegyzés megjelenítése

2012. augusztus 9.

Online kurzusok 1. - hogyan induljunk el?

Több mint nyolcvan levelet kaptunk amiben a mostanában indult különféle ingyenes online kurzusok felől érdeklődtek a kedves olvasók. Mivel a kínálat immár zavarba ejtően széles, megértjük hogy gondot okozhat a megfelelő szintű és minőségű kurzus kiválasztása. Sorozatunk első részében először áttekintjük a kínálatot, majd az általunk legkezdőbarátabbnak ítélt Udacity kurzusaival foglalkozunk bővebben.

2012. június 29.

Számítógépes nyelvészet 101: Programozás

Sorozatunk korábbi részeiben áttekintettük hogy milyen matematikai és információtechnológiai alapismeretekkel illene magunkat felvértezni. Most érkeztünk el oda, amit mindenki triviálisnak tart; egy számítógépes nyelvész programozni szokott. Ellenben itt sem olyan egyszerű a helyzet, mint látni fogjuk.

2012. június 11.

Számítógépes nyelvészet 101: Matematika

Jön a nyár és örömünkre sokan szeretnék szabadidejüket a tudománynak áldozni. Sok levelet kaptunk, mindet sajnos nem tudjuk megválaszolni, viszont észrevettük hogy öt téma köré csoportosíthatjuk olvasóink kérdéseit. Ezeket tovább is gondoltuk egy kicsit és szétnéztünk ismerőseink között kit érdemes megkérdezni a témában hogy segítsünk eligazodni a szellemi kalandoroknak. Első posztunkban a számítógépes nyelvészet tanulmányozásához szükséges matematikai ismeretekről írunk Busa István Ferenc (alias beef) quant segítségével, akinek ezúton is köszönjük a közreműködést.

2011. december 28.

Kispénzű önképző a Stanfordra menne?

A Stanford Engineering Everywhere program már régóta elérhetővé teszi a világ egyik legjobb (sőt, szerintem a legjobb) egyetemének kurzusait (a kínálat megtekinthető itt). Ez a rendszer nagyon hasonlít az MIT híres Open Courseware programjához, az előadások jegyzetei letölthetőek, sok esetben maguk az előadások képanyagai is felkerülnek a netre és mindenki kedvére nézegetheti azokat. Azonban a Stanford idén tovább lépett és rendezettebb formában "kínálta" gépi tanulás,  mesterséges intelligencia és adatbázisok kurzusait. Nem sokára pedig még több órára járhatunk virtuálisan, készíthetünk házikat,stb. - mindezt  ingyen. Ha egy kicsit a zsebünkbe nyúlunk, erről papírunk is lehet.

2011. július 25.

Könyvismertető: The Back of the Napkin - képi gondolkodás kezdőknek

Már elsütöttük párszor a blogon hogy egy kép többet ér ezer szónál, de arról keveset írtunk hogy elkészíteni egy ilyen képet és megérteni nem is olyan magától érthető dolog. A most bemutatásra kerülő kötet ehhez nyújt segítséget, azonban rögtön az elején le kell szögeznem hogy bizonyos megszorításokkal.


  • Dan Roam: The Back of the Napkin: Solving Problems and Selling Ideas with Pictures
  • Portfolio Hardcover, Expanded edition, 2009
  • 304 oldal
  • honlap: http://www.thebackofthenapkin.com/




2010. szeptember 29.

Wordle: a logónk története

Ezúttal bemutatásra kerül a logónk elkészítésének módja. A posztban nem a logó megszületésén lesz a hangsúly, hanem igyekszem rámutatni azokra a jellemző problémákra és akadályokra, amelyek szinte minden alkalommal előkerülnek, amikor az ember egy szógyakorisági táblát kíván saját kezűleg előállítani. Hogy ez esetben nem csak táblát, hanem egy ebből készült grafikát is kapunk eredményül, ez csupán a logó, mint cél eredménye. De természetesen mindenki könnyedén előállíthatja a bemutatott minta, a saját szógyakorisági táblája alapján.

2010. augusztus 29.

Ruby programozási nyelv

Zoli Ruby programozásról szóló posztján felbuzdulva magam is megosztanám a magyar nyelven elérhető Ruby programozásban segítő és ingyenesen elérhető tananyagok listáját. A Ruby-ról, és a Ruby alapokon nyugvó Rails-ről lesz szó. – De már most itt az elején figyelmeztetnék mindenkit, hogy mielőtt engednénk a kísértésnek, hogy magával ragadjon a Rails csodálatos világa: ne legyünk restek, hogy alaposan ki- és megismerjük a Ruby nyelvet, mert saját tapasztalatból is tudom, hogy minden Rails-el ismerkedni vágyó bicskája ott törik bele, hogy a gyönyörű építmény alapjait nagyon felületesen futotta át.

2010. augusztus 21.

Kreatív Ruby programozás kezdőknek

Augusztus 19-én a világ, de legalábbis a Ruby-t ismerő része, ünnepelt. A kiváló hacker why the lucky stiff pont egy éve tűnt el a virtuális világból, ám hagyatékát soha nem fogjuk elfelejteni, és hála a lelkes közösségnek, elherdálni sem. Hogy ki is volt _why, arról a neten sokat olvashatsz, a lényeg hogy kiválló pedagógiai érzékkel rendelkezett és sokat tett azért hogy a programozás csodás világa könnyen hozzáférhetővé váljon a fiatalok (és lelkes idősebbek) számára.

Ha szeretnél megismerkedni egy szép, teljesen objektum-orientált szkriptnyelvvel a Ruby remek választás. Könnyű tanulhatósága és megbízhatósága miatt (is) napjainkban nagyon népszerű a webprogramozók körében és az egyik legelterjedtebb framework a Ruby alapú Ruby on Rails. Persze a könnyű tanulhatóság relatív, kinek? Ezt ismerte fel _why. Míg régen a C64-esek világában amikor nagylemezt és magnókazettás beolvasót használtak az emberek és a BASIC és társai voltak a menő nyelvek (és hazánkban a Süni magazinban két oldalas játékprogramok kódjait olvashattad) még egyszerű volt programozni. Nyilván azért is mert nem hatvanhatezer nyelv közül kellet választani, hanem azt használtad ami éppen adott volt, meg nem hatszáz oldal útmutatót adtak a neten a nyelvhez hanem kb tíz oldalon elfért minden. Szépen kipróbálhattad hogy ha ezt csinálod, ezt és ezt az eredményt kapod és ennyi. Most meg törheted a fejedet hogy akkor itt ez van, de akkor egy hibakezelési blokkot is iderakok ami ugye dob egy ilyen hibát vagy mi a szösz és akkor nekem String kell, de nem olyan sima mert az "immutable", hanem amit tudok dinamikusan változtatni és akkor a legvégén még kell egy statikus változó és őőőőőőő.....

Egy kezdőnek nem ez kell! A másik irányzat "lebutított" nyelvekkel próbálkozott. Azok akik ismerik a Java-t gondolják végig hogy az egyszerű inputot milyen körülményes elérni! Sokan pedagógiai célból csomagokat alkottak hogy leegyszerűsítsék ezt és csak a programozás "logikáját" tanítsák. De így nem egy "élő" és "igazi" nyelvet tanul meg az ember. _why nagy ötlete éppen az hogy egy jó nyelvet kiválasztva, annak egy töredékére koncentrálva és a megfelelő eszközöket megalkotva olyan tudást adhatunk a kezdők kezébe amivel már tudnak haladni. Ha nem kell egy évig azon rágódni hogy milyen típus kezelés is megy végbe akkor a programban, hogyan tanulhatom meg egy IDE használatát, a GUI programozás nem jelent egy szinte teljesen új nyelvet, ha a webprogramozás és az MVC keret tényleg csak egy megközelítési mód és nem megint egy új probléma, akkor a tanuló képes tényleg alkotni, felfedezni. Ha van visszacsatolás, ha képes a tanuló pozitív élményként megélni a programozás folyamatát, akkor gyorsabban fog haladni, bátrabban fedezi fel a számára ismeretlen területeket és sokkal magabiztosabb és kreatívabb lesz.

Eszközök
Egy kezdők számára készített programozási környezet, ami nem csak a programok szerkesztését könnyíti meg, hanem futtatni is lehet benne az elkészült művet.
A legegyszerűbb és szerintem legintuitívabb GUI amit valaha készítettek. Elég egy kis Ruby tudás, és remek grafikus felülettel ellátott programokat készíthetünk vele. A HacketyHack rendszerbe integrálták a készítők, de önállóan is használható.
A Ruby on Rails kistestvére. Kevesebb mint 4kB a forráskódja mégis használható oldalakat programozhatunk vele. Az MVC filozófiát követi, mégis mellőz minden  olyan elemet ami csak túlbonyolítja a dolgokat egy kezdő számára. A Heroku ingyenes tárhelyet is biztosít Camping appjeink számára, feltöltés előtt érdemes elolvasni ezt a kis tutorialt.

Olvasnivaló
Ne egy hagyományos könyvet várj! Nem ez egy posztmodern alkotás, ami (sajnos) nem emészthető mindenkinek. Semmi gond! Ha nem érted, nyugodtan használhatsz más forrást. Gondolom a címéből kiderül hogy a Ruby nyelvbe vezeti be olvasóját.
A Poignant Guide stílusában, a Shoes használatába nyújt bevezetést. (A link egy pdf verzióra mutat).

Összegzés
_why hagyatéka rendkívül szerteágazó (pl a Poignant Guide-hoz még zenei CD-t is készített!). Kétségkívül szoftverei nagyobb hatást értek el (nem csak pedagógiai fejlesztései, hanem a Ruby gems-ei is!), stílusa azonban sokak számára érthetetlen. Ezen nem kell csodálkozni és szerintem felesleges vitatkozni, akinek nem tetszik, az olvassa Chris Pine Learn to Program könyvét, vagy annak netes verzióját. A legfontosabb ami ránk maradt a hozzáállás. A programozás világát sokan azért szerették meg mert nyílt, demokratikus és meritokratikus egyben. Bárki elkezdheti a tanulást viszonylag kis befektetéssel, a neten formálódó közösségek nyíltak és segítőkészek és mindenkit érdemei szerint ismernek el. Azon lehet vitatkozni hogy tényleg veszélyben vannak-e ezek az alapértékek, de nem árt ha megjegyezzük bizony ezek egy nyílt és demokratikus társadalom jellemzői is. A programozással nem csak szakmát tanulhat az ember, hanem kreatív módon kifejezheti magát, megtanul másokkal együttműködni és elviselni a kritikát.

A számítógépes nyelvészet és digitális bölcsészet iránt érdeklődők számára mindenképp hasznos tapasztalat a Ruby elsajátítása, különösen az objektum orientált paradigma alapjainak megismerése. Sajnos azonban a közösség a nyelvészeti munkákhoz használatos könyvtárak és csomagok fejlesztésében nem jeleskedik és kezdőknek nagyon nehéz maguknak megírni ezeket, ezért ajánlatos az alapok elsajátítása után az nltk-ra átnyergelni.

2010. április 20.

Nyelvészet - csak röviden!

Hivatalosan is van egy darab olvasóm! Habár nem az általam megcélzott csoportból (bölcsészek),  egy programozó hallgató írt nekem. Az illető arra kért, tudnék-e valamit ajánlani neki, aki nem tanult nyelvészetet, de mest.int. órán bejött neki a természetes nyelvi feldolgozás, és szeretne valami 'lájtosat'. Nos, rossz hír hogy nincs királyi út a nyelvészethez, de megpróbáltam összeszedni pár jó cuccot amivel ellehetnek az érdeklődők.

Ismeretterjesztő könyvek
Először is különbséget kell tennünk az ismeretterjesztő és a bevezető jellegű tudományos munkák között. Szeretem az ismeretterjesztést, fontosnak is tartom, de ötleteken, alapvető fogalmakon nem tud többet adni. A legjobb ha Pinker A nyelvi ösztön c. könyvével kezded. Ha bejön, akkor a szerző Hogyan működik az elme könyve is érdekes lehet számodra.

Én anno láttam egy raklapnyi könyvet amit ajánlottak bevezetés a nyelvtudományba címen. Szerintem egy fabatkát sem ér a legtöbbje. Ha érdekel a nyelvészet története, egy csendes délutánon kapd elő Rober Henri Robins A nyelvészet rövid története c. könyvét. Általános bevezetést a nyelvészetbe magyarul nem fogsz találni, legalábbis szerintem. Szóval vagy olvasol egy-egy szakterületről hosszabban (ezekből szerintem tök jók találhatók viszont), vagy olvasol angolul.

Ingyenes anyag
Ha van némi előképzettséged a formális definíciók terén, logikusan gondolkodol és megy az alapvető matek, vagy bátor vagy és nem zavar ha lassan haladsz, akkor Marcus Kracht jegyzeteit ajánlom, itt letöltheted.

Angol általános bevezetők
A legolvasmányosabb, mégis alapos és átfogó könyv Meyer Introducing English Linguistics-e. Érdekessége hogy fentről indít, a legnagyobb nyelvi egységből (az angol nyelv mint világnyelv, nyelvváltozatok stb) és halad a fonetika/fonológia felé (minden más bevezető a hangtól indít és a globalizációnál fejezi be a sztorit).

Ha valami formálisabbat szeretnél, akkor Akmajian et all. Linguistics-e a legjobb választás. Ez már tankönyv! Tehát feladatok vannak és példák benne. MIT Press, tehát a bevezető is kemény! Viszont ad egy átfogó képet arról mit is csinál egy nyelvész és biztos rátalálsz egy-két dologra ami érdekelhet és kapcsolódik a te területedhez.

Ha még mindig szeretnél bevezetődni, akkor egy igazi hard core cucc Radford et. all Linguistics. Ez már komoly könyv, nem lehet csak úgy átfutni, vagy olvasni lefekvés előtt. Csak akkor ajánlom ha elköteleződtél!

Összegezve

Először tájékozódj, erre jók az ismeretterjesztő könyvek. Ismerd meg magad. Ha úgy érzed erős háttérrel rendelkezel, akkor vágj bele egy nehezebb könyvbe, legfeljebb ha nem megy átválthatsz egy könnyebbre. A legbiztonságosabb választás az Akmajian kötet, de mindhárom könyv jó. Ha nagyon idegen a téma haladj sorban.








2010. április 9.

Statisztikai túlélőkészlet

Az a helyzet hogy tudomány matek nélkül nincs. Aki mást mond, hazudik, vagy valami nagyon nem kurrens képe van a tudományról. Jó hír hogy nem kell Neumann-ná válni, emelt szintű érettségit sem kell tenned, de a minimum hogy egy kis statisztikát, valószínűségszámítást és logikát magadra szedsz. (A saját véleményem az, hogy nem kell matematikussá lenned, de annyi kell hogy tudd mire guglizz rá, hol keressed a választ és tudd alkalmazni a saját problémádra amit találtál).

A címben statisztikát említettem, tartom is ehhez magamat. Nem meglepő hogy próbálom összekapcsolni valahogy egy kis programozással, szerintem a legjobb az ingyenes, nyílt forráskódú R statisztikai programozási nyelv. Töltsd le, telepítsd fel (minden op. rendszerre van verzió), és ismerkedj vele.

Ha megvan az eszköz, akkor kellene valamit kezdeni vele. Ha nem tudsz programozni, akkor itt állj meg! Keress rá (akár ezen a blogon) és sajátítsd el a programozás alapjait (nyugi, nem kell sok). Emlékszel milyen volt matek órán, amikor nem értetted mi van és hogy mi az a sok kriszk-kraszk a táblán? Remegett a gyomrod hogy nehogy neked kelljen felelni? Felejtsd el! Nekem is sok bajom volt, és én is kényszerből kezdtem ilyenekkel foglalkozni. Nincs jegy, nincs dolgozat, nincsenek életidegen példák! Ennek ára van, jó könyveket kell venni. (Mert ugye betartod a szerzői jogokat és nem torrentezel/emulezol le könyveket?)

A legjobb választás a Head First Labs Head First Statistics könyve. A sorozat nagy népszerűségnek örvend mivel a tanuláselmélet és a megismeréstudomány eredményeit felhasználva élvezetes stílusban, életszerű példákkal tanít. Nem a legolcsóbb, de azon ritka könyvek egyike amelyek tényleg megérik az árukat. Az alapokat biztosan el tudod sajátítani, több most nem is kell. Ha szorgalmas vagy és/vagy időd engedi, akkor a Head First Data Analysis könyvet is ajánlom figyelmedbe. Ez az alap, erre már lehet építeni. Ha jobban szereted a itt egy példa, ez alapján oldd meg a következő feladatokat típusú megközelítést (és jobban dereng a matek középsuliból), akkor a Probability Demystified és a Statistics Demystified könyveket ajánlom. (Mind a három/négy könyv túl sok viszont, olvass ismertetőket, lapozz bele az amazonon, vagy a GoogleBooks-on és döntsd el melyik a te irányod!) Ha magyarul szeretnél olvasni a témában, akkor a Bolyai sorozat Valószínűségszámítás kötete jó választás, a Statisztika kötet jobb híján megteszi.

Nos, ha átrágtad magad a bevezetőkön és feltelepítetted az R-t, itt az ideje összekötni a kettőt. Nem annyira ismert, de szerintem a legjobb könyv ami összeköti a statisztika tanítását az R elsajátításával Verzani Using R for Introductory Statistics könyve. Alapos és jó, persze a HF sorozathoz képest kicsit száraz, de aki kalandot akar, olvasson Rejtőt. Ha nem akarsz beleugrani egy könyv vásárlásba, szerencséd van! A CMU Open Learning Initiative ingyenesen elérhető anyagokat tartalmaz, és pont van statisztika kurzus R-rel náluk.

Ha végeztél, gratula! Ami ezek után jön már bonyolultabb lesz, de élvezetesebb is. A következő bejegyzés megpróbál eligazítani hogy fantasztikus statisztikai tudásodat a nyelvtudomány területén is hasznosítsd.

2010. március 25.

Funkcionális programozás nem-programozóknak (könyvek és honlapok)

A logikai programozás után most a funkcionális paradigma elsajátítására buzdítok mindenkit. Habár nehéz, mindenképpen megéri, különösen a logika iránt érdeklődőknek.

Ha érdekel pontosan mi is az a funkcionális programozás, a wikipedia szócikke remekül összefoglalja miről is szól ez a paradigma. Érdemes megtanulni, az újdonság miatt és nem mellesleg azért is mert egyre több hirdetésben keresnek hozzáértő embereket (legutóbb az Ericsson hirdetését láttam).

Nagyon sok nyelv forog most a köztudatban, pl. Erlang Scala Clojure LISP. Mindegyik nagyon jó, csak nem könnyítik meg a kezdő dolgát. A Haskell egyszerű szintaxisa és remek támogatása ideális a kezdő számára (és persze akár ipari felhasználásra is). Persze az előbb említett nyelvek is szépek és jók, csak szerintem kutya nehezek egy kezdőnek és nincs még sok könyv/oldal ahol megfelelően tálalt információt találhatsz.Két implementációt érdemes figyelembe venni, GHC és Hugs.

Én a GHC-t ajánlom (azon belül is inkább a Haskell Platformot), mivel tkp az az "industry standard". A Hugs viszont pont oktatási célokra készült és a legtöbb könyv/tutorial őt használja. A döntés rajtad áll,  mindegy melyiket választod, az elején nem befolyásolja a munkádat. Dönts, telepíts, és csapj bele a lecsóba!

Említettem a Haskell nagyon jól dokumentált, sok anyagot találhatsz a neten. Érdemes kutakodni és akár az IRC csatornára is felmenni néha. Sajnos egy idő után az ember kinövi az ingyenes anyagokat és a pénztárcájába kell nyúlnia (ha nem akar szerzői jogokat sérteni), de nem szabad abba a hibába esni hogy mindent el akarsz olvasni és mindent be akarsz szerezni. Válaszd ki hogy mi felel meg a te érdeklődésednek és habitusodnak. Ha érdekel egy könyv a Google Books segítségével lapozz bele (vagy az Amazon-on). Többet ér ha egy könyvet végig dolgozol, mintha ötön végigfutsz!

Ingyenesen elérhető anyagok.
Learn You a Haskell for Great Good!
Nem árt egy kis programozási ismeret mielőtt elkezded, de tutira szeretni fogod. Alapos és nem túl lapos összefoglalás.
Real World Haskell
A könyv! Elsőnek nehéz, talán másodiknak is, de jó referencia. Különösen az első négy-öt fejezet ajnálott.
Computational Semantics with Functional Programming
Filoszok és nyelvészek számára kötelező. Programozási ismereteket nem tételez fel az olvasójától, viszont alapvető logikai (nem józan paraszti észre gondolok itt, hanem pl a Ruzsa könyvre) ismereteket viszont igen!
The Haskell School of Music
A cím önmagáért beszél. Paul Hudak a Haskell egyik alkotója nagyon sokat tett a nyelvért és annak oktatásáért. Egyik mániája a multimédia programozás (Lentebb híres könyve). Szerintem nem könnyű olvasmány, viszont érdekes és sokat tanulhatsz belőle.

Hasznos könyvek

The Haskell Road to Logic, Maths and Programming
Nagyon hasonlít a CS with FP-re, a szerzők között is van átfedés. Célja az alapvető logikai érvelés (és a funkcionális programozás alapjainak) megismertetése. Alapvető logikai ismeretekkel bátran belevághat minden filosz és nyelvész meg egyéb bölcsész.
The Haskell Shcool of Expressions
Hudak híres könyve. Kicsit régi, ezért mindenképpen vess egy pillantást a könyv oldalára a neten. A szoftvert nem volt egyszerű telepítenem, de nem lehetetlen (és te biztos ügyesebb vagy nálam). Multimédia programozás felől közelít, de nem könnyű olvasmány ez sem. Nem tételez fel sokat az olvasóról, csak annyit hogy figyelmesen olvas és gondolkodik. Ez bizony sok! Nem szájba rág, hanem gondolkodtat, ami sok könyvről nem mondható el.

Algorithms: A Functional Programming Approach
Nem éppen kezdőknek való olvasmány, viszont ha megvannak az alapok, bátran belevághatsz. Szerintem sokkal érthetőbb a funkcionális paradigma segítségével tanulni ezt a témát mint ezt bonyolítani még objektum orientált cuccokkal...

2010. március 12.

Lehet játék a tanulás - legalábbis a programozás alapjainak elsajátítása

A programozás - legalábbis az én véleményem szerint - ma már nem egy valami különös, távoli szakma, hanem egy lassan de biztosan egy eszköz. Egyre több szakma magas színvonalú művelése követeli meg hogy alapszinten tudjon a szakember programozni. A kezdő lépések megtételében segíthet az Lifelong Kindergarten :: MIT Media Lab által 8-16 évesek számára kifejlesztett Scratch programozási környezet idősebbeknek is.

Ha nincs időd olvasni, akkor röviden: Magyar nyelven is elérhető, ingyenes/szabad szoftver Windows, Mac, Linux rendszerekre. Tutoriálok az oldalon. Könnyű, semmilyen tapasztalatot nem igényel.

Hosszabban pedig elmondom miért tartom jó ötletnek a Scratch-et. Emberközelivé teszi a programozás alapjait és egyben szórakoztató. Olyan mintha megtanulnál elmesélni egy történetet. Vannak szereplők (itt sprite-nak hívják), háttér (a tér amiben a sztori játszódik). A szereplők érintkeznek egymással, ill. a környezetükkel (vagy akár a felhasználóval), ehhez amolyan kapcsolókat kell összebarkácsolni. Ennyi!

Miért nagy szám ez? A közgazdászok, pszichológusok, szociológusok és nyelvészek is egyre jobban támaszkodnak matematikai modellekre, használnak statisztikai csomagokat (SAS, STATA, SPSS, R, Python + SciPy stb) illetve készítenek (vagy jó lenne ha készítenének) vizuális modelleket. Ezek kezelés ha nem is profi progmatos végzettséget követel meg egy minimális programozási ismeretet feltételez. Ha valaki magyar szakon szeretne R-rel kvantitatív lexikográfiai elemzést végezni és azt szép ábrákkal prezentálni egy előadáson vagy egy cikkben, a legjobb ha az R statisztikai nyelvet veszi igénybe. Igen, de aki magyar szakos, annak valószínűleg nem olyan nyilvánvaló hogyan kell programozni. A Scratch viszont meggyorsítja a tanulást! Ha egy HTML - CSS vonalon mozgó Adobe fan szeretne flasht programozni, és gyönyörű grafikákat készíteni, nem kerülheti el az ActionScript-et, vagy akár a Processing-et. Ha nem tud/akar belecsapni a lecsóba, akkor természetes egy olyan dolgot megtanulni ami könnyű és rávezet a következő lépésre.

Akkor hogyan is lehet elkezdeni? Nos a Scratch oldala rengeteg tutorialt tartalmaz. A "Projects" fül alatt pedig szabadon böngészheted mások alkotásait. Le is töltheted, megnézheted mások milyen megoldásokat alkalmaztak. A legjobb ha regisztrálsz és te is megosztod másokkal műveidet. Ha akarsz egy jó könyvet, akkor Bagder: Scratch 1.4: Beginner's Guide könyve a legjobb. Élvezetes, projekt alapú megközelítést használ és nem is olyan hosszú.

Pár napot megér a dolog. Az én első művem a Monty Hall probléma vizualizációja volt, hogy játékosan tesztelhessem tényleg tendenciózusan hibáznak az emberek ebben a helyzetben. Előkerestem, feltöltöttem, beágyaztam (Habár nem javítgattam rajta, kicsit gagyi angollal van, de megmutatni hogy két nap alatt mire lehet jutni megfelel.)  Röviden a problémáról itt a wikipedián, és itt a kísérletről.

Learn more about this project

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.

2010. március 6.

Algoritmikus fejvadászat - ha nem vigyázol, rád találnak! Tippek kezdőknek (egy kezdőtől)

Nem tudom itthon mennyire elterjedt hogy nem éppen mesés tudással jelentkeznek emberek programozó állásokra, minden esetre viszonylag régi probléma ez a Lajtától nyugatra ahogy arról egy blog bejegyzés (2007-ből) és annak finomított változata (2010-ből) tanúskodik. A megoldás? Egyrészt az interjú technikák és az előzetes szűrés finomítása. Másrészt a "social coding" elemzése.

Tim O'Reilly-t követve a Twitter-en találtam rá egy érdekes blog postra. A szerző átköltözött Berlinbe és egy projekthez keresett embereket. Szokták mondani hogy egy állás megszerzéséhez bizony ismerősök is kellenek/kellhetnek. Nos gondolom igaz ez fordítva, ha valaki keres egy munkavállalót, jó szétnézni az ismerősök között. De mi van ha nincsenek még nagyon ismerősök? Ha valaki tud programozni, erre is van már megoldás: irány a gitHub! Ha nem ismered az oldalt, a lényege hogy ingyenes repokat (tárolókat) hozhatsz létre projektjeid részére, egyedül azzal a megkötéssel hogy annak tartalma nyilvános. Ehhez értened kell egy kicsit a git verziókövető rendszerhez is (de ez menni fog, ezzel a könyvvel). Nos, szerzőn ötlete az hogy ha valakit sokan követnek, sokan töltik le projektjeit, aktív az oldalon stb, akkor nyilván nem egy rossz programozó. Nem mellékes az sem hogy meg lehet nézni mit kódolt össze az illető. Ha bővebben érdekel a sztori, a legjobb ha elolvasod Charles Arthur, a Guardian tech-kolumnistájának, blog bejegyzését.

Mi ebből a tanulság? Nos ha te is egy olyan önbizalom hiányos kezdő vagy mint én, akkor itt az ideje összeszedni magadat (magunkat). Tanulni kell, programozni kell, akkor is ha unod, a könyöködön jön ki és legszívesebben olvasnál valami nagyon kúúl dolgot (pl Programming the Semantic Web, nálam ez lenne az). Viszont a jó hír hogy tanulás közeben simán nyithatsz egy github accountot. Feltöltheted a saját projektjeidet. Még nincsenek? Sebaj! Tanuld meg használni! Ezzel elsajátítod a git alapjait. Szerintem nem gáz ha "Hello world!" és hasonló bébi dolgok vannak a repodban. Keress érdekes projekteket. Klónozd git-tel, olvasd a forráskódot, próbáld meg módosítani. Ne add fel! Menni fog előbb-utóbb (én is ezt mondom magamnak). Ha nyomod a rails-t, itt az ideje hogy a heroku-n is megmutasd mit csináltál eddig. Nem kell szégyenkezni. Ha nem állítod magadról hogy te programozó vagy, hanem csak azt hogy szeretsz programozni tanulni, vagy csak szeretnél majd programozó lenni, egy ici-pici kis progi is megteszi. Minden jel arra utal, hogy az alapok elsajátítása fontos, ha ezt meg tudod mutatni, nyert ügyed van.

Sok nagyon jó közösségi oldal foglalkozik programozással. Én kettőt emelnék ki. Az első a stackoverflow. Aki tanul, az tud kérdezni! Sokkal inkább kérdéssel kezdődik. Itt rengeteg kérdés találsz, és még több választ. A legjobb ha tudsz olyat kérdezni ami felkelti a többiek érdeklődését. A jó kérdés pontokat ér, növekszik az elismertséged és tanulsz, ha nem adod fel, egy szép napon talán te is válaszolni fogsz egy szende kezdő kérdésére. A javablackbelt tkp egy kvíz oldal. Nem csak Java-ról, hanem jvm-en futó nyelvekről és ruby-ről is. Öveket kapsz, teszteket töltesz ki, és kérdést szerkeszthetsz te is. (Hasonló oldalak találhatók más nyelvekre is egy kis Google használat árán).

Előbb-utóbb jól jöhet neked, ha csatlakozol egy nyílt forráskódú projekthez. Ehhez kell egy kis alaptudás, (habár a Firefox estén ez sem nem kötelező) de hamar bele lehet jönni. Jó kódot olvashatsz, sokat tanulhatsz. Kezdetben nyilván bug report, bug tracking és társai jöhetnek szóba, de szerintem ez nem gáz, valahol mindent el kell kezdeni.

Ha nem két perc alatt akarsz mester lenni, bele kell vágnod. Ezek mellett segíthet egy blog ahol megosztod velünk tapasztalataidat (nem kell irigykedni, egyrészt amit te már meg tudsz írni az a te tudásod, előttünk jársz benne, másrészt neked is érdeket hogy értelmes kollégáid legyünk.), twitter-en kövess érdekes embereket, próbálj meg érdekes dolgokat megosztani (előbb-utóbb lesznek követőid). Viszont egy dolgot jegyezz meg, semmi nem pótolhatja a rendszeres gyakorlást! Az online láthatóság felelősséggel jár, ismered meg önmagad, a tudásodat, ne félj, tanulj és élvezd.

2010. január 27.

Hogyan szerezzünk egy kis gyakorlatot?

Mindenki azt ajánlja a pályakezdőknek hogy még tanulmányaik alatt szerezzenek gyakrolatot. Nem tudom ki hogy van vele, de szerintem egy rendesen tanuló nappalis diáknak ez nehéz. Viszont van egy jó hír; a szabad szoftverek világában saját idődet beosztva, a saját tempódban szerezhetsz egy kis gyakorlatot.
Persze ez sem könnyű. A legegyszerűbb rákeresni a minket érdeklő témára és megnézni mivel foglalkozik a közösség. Persze ez nem olyan könnyű. OK, vannak nálam sokkal okosabbak, akiknek rögtön megy a bekapcsolódás. Én egyrészt magamtól készülök a vizsgáimra, másrészt parázok a melókereséstől mert biza nem kell hosszú kódot írni/olvasni a felkészülés során. És hát nem nagyon életszagú még a Software engineering 1, 2 sem.
Szóval elő a guglival! Valami nem stimmel... Akkor hogyan kapcsolódhatok be? Mit is csinálhat egy "magamfajta" aki túl van már a "Hello world"-ön, de még nem sikerült egy igazi alkalmazást összehozni? ekkor találtam rá a GnomeLove-ra. Egy hely ahol megtudhatom mit tehetek, hogyan és kezdőknek is van ám feladat!
Ettől vérszemet kaptam! Ok, nézzük mi érdekel! Nyelvészetet tanultam, irány az nltk oldala és van Contribute rész. Persze nem értem még teljesen, de van fogalmam az issue-track-ben foglaltakról. Könyvjelzőbe vele!
Jó, jó, ettől még nem leszek nagy hekker. Persze, de most nem is ez a lényeg! Látom végre hogy milyen problémák merülhetnek fel egy projektben. Láttam végre egy jó hosszú kódot és megpróbáltam megfejteni. Egyet megoldottam, sajnos nem elég szépen, de tanultam a hivatalos bug fix megoldása és a sajátom különbségéből.
Konklúzió. Nem tudok még programozni. Habár kb értem miről van szó, még sokat kell tanulnom. Mindenkit arra buzdítok próbálkozzon és tanuljon!