2010. február 4.

Tanújjá programozni!

Ezer és egy hanem millió forrásból lehet elkezdeni tanulni. És soha sem késő! Én "öreg fejjel" vágtam bele a lecsóba és szerintem egész jól haladok. Íme az én szubjektív kalauzom.
Először talán azzal kezdem hogy nem árt angolul tudni, vagy egy olyan nyelvet lesajátítani amire lefordítják a kurrens könyveket. (Itt jegyezném meg hogy várom a magyar forrásokat!!!!)
Sokaknak az első nyelv megválasztása a legnehezebb. Erről Peter Norvig öreg róka, kedvenc könyvem szerzője igen érdekesen ír itt (a magyar változatot sajna elvitte a cica). Az én ajánlásom nehézségi sorrendben a következő: Scratch, Python, Ruby, Scheme, Processing.
Scratch. Nagy előnye hogy magyarul is elérhető! Úgy tűnik hogy gyerkőcöknek szánták, de bárki elszórakozhat vele és alkalmas arra hogy a legalapvetőbb dolgokat elsajátíthassa az ember (Boole-algebra, logika, alapvető konstrukciók). Ezek mellet a nyílt forrsákód és megosztás jegyében az elkészült alkotások megoszthatók és szabadon fel is használhatóak. És van egy szerintem nagyszerű könyv is hozzá. Nyilvánvaló hogy ettől senki nem lesz egy hekker (csak a sok hekktől nyáron a Balcsin), de arra jó hogy leküzdje az idegenkedést (ami sokakban az ún. "matek-undor" miatt van). Pár hét Scratch után nyugodtan lehet komolyabb dolgokkal is foglalkozni. Azok akik szeretnék felfedezni a számítástudomány alapjait a Python, Ruby, Scheme hármas valamelyikét (esetleg mindet) ajánlom. Akik inkább művészi hajlamokkal vannak megáldva, válasszák a Processing nyelvet (habár készüljenek fel arra hogy lasabban fognak haladni)
Python.  A "futattható pszeudokód" becenéven emlegetett nyelv momentán két verzióban fut (2.6 és 3.0) de szerintem a kettő között nincs nagy különbség. Hogy melyiket választod tkp mind1. Egy tipp, amit vagy megfogadsz, vagy nem: Ha szeretnél komolyabb dolgokról olvasni (pl kollektív intelligencia, szemantikus web vagy számítógépes nyelvészet), akkor 2.6, ha "csak" programozni szeretnél tanulni akkor az egyik legjobb könyv kezdőknek pont 3.0-val íródott.
2.6-ra a következő két könyv a legjobb szerintem. Klasszikus bevezető könyv a How to Think Like a Computer Scientist mely szabadon hozzáférhető. Egész jó, nekem bejött de talán kicsit uncsi. Messze a legjobb könyv a Hello World! olvasmányos, sok-sok példával, játékot írsz, GUI-t raksz össze és tényleg jót ajánlom. Ez egy remek könyv, sok feladattal és egy komplett "tanuló fejlesztői környezettel". Ha ezek után azt tudod mondani hogy érdekel az elméleti része ennek a programozós bulinak akkor már jó alapjaid vannak. Ha nem akkor nincs baj, tanultál valami érdekeset.
A legbulisabb cucc szerintem David Evans rettenete Introduction to Computing Explorations in Language, Logic, and Machines. Szabadon hozzáférhető és felhasználható. No ezek után jöhet a Structure and ....
Ha szereted a nem éppen tradiconális megközelítéseket, akkor a Head First Labs könyvei be fognak jönni. Kezdő programozóknak a Head First Programming melegen ajánlott, amely python3-at használ.
Ha ezeken túl vagy és van benned bátorság és kitartás, akkor "hard core" cuccok is vannak: Programming Collective Intelligence (ha bejön a webkettő), Programming the Semantic Web (ha a kettő nem elég, kell a webhárom) ill Natural Language Processing with Python (mert a könyv ingyé' szabadon hozzáférhető itt).
Ruby. A Ruby egy nagyon jó kis nyelv. A kicsi nem lekicsinylő, hanem amolyan kedveskedés a részemről, fantasztikus dolgokat lehet vele művelni :D Én leginkább akkor ajánlom ha a webfejlesztés érdekel a későbbiekben, mivel a legjobb web framework (Ruby on Rails - és persze ez egy szubjektív értékelés) rajta alapszik.
Nagyon jó kezdés Cris Pine Learn to Program c. szösszenete. Ha ezzel végeztél, talán a könyv is érdekel. Ha elég pihent aggyal és jó angollal bírsz akkor ajánlom neked why the lucky stiff munkáit. Messze a legjobb könyv _why's Poignant Guide to Ruby. Ha túlélted ls totál elboult az agyad és már te is hiszed hogy egy jó progi egy történetet mesél el, akkor bizonyára kedved támadt GUI-t készíteni. Akor pedig jön a Shoes toolkit, és a Nobody Knows Shoes c. agymenés! Sajna _why eltűnt, de érdekes figura volt és reméljük valamilyen formában még visszatér (persze lehet hogy nem fogjuk tudni...)
Scheme. Ez a nyelv egy kakukktojás a felsorolásban. Viszont jól jön ha a, érdekel a számítástudomyán elméleti háttere b, a funkcionális programozás (mert hallottad pl hogy a haskell milyen cool) c, szeretnél valamit a fősodoron kívül is látni. Annyit elárulok hogy nagyon más mint a többi! Viszont nagyon megéri játszani vele.
Először is nincs olyan hogy Scheme. Jobban mondva a Scheme nyelv specifikációja egy szabvány, s több implementációja létezik. Hogy melyiket használd arra egy tanács van, amelyiket a könyv vagy tutorial ajánlja neked. Idővel majd el tudod dönteni melyik a neked legmegfelelőbb implementáció.
Ha előtte nyomattál a Pythont, Rubyt vagy más elsősorban objemtum orientált nyelvet, akkor tudnod kell hogy kvázi tabula rasa jön. Tegyél úgy mintha újra kezdenéd a tanulást! Nehéz, de élvezetes út következik :D
Szóval akkor vissza dummy módba, és beszerzed a Simply Scheme c. mesterművet. Ha elolvastad és minden feladatot megcsináltál akkor ügyes vagy. De még nem Scheme programozó, mivel a könyv egy segédcsomagot használ és a funkcionális programozás logikáját tanítja. De nyugi, jó alapokkal rendelkezel a következő lépés megtételéhez. A könyv egyetlen hibája hogy a Structure and Interpretation of Computer Programs előszobájának tartja magát. Annak ellenére hogy nagyon jó és szabadon hozzáflrhető könyv, amihez még a youtube-on egy halom jó előadás video is fent van, könnyen beletörik a kezdő bicskája. Én inkább a How To Design Programs könyvet ajánlom. Ez egy remek könyv, sok feladattal és egy komplett "tanuló fejlesztői környezettel". Ha ezek után azt tudod mondani hogy érdekel az elméleti része ennek a programozós bulinak akkor már jó alapjaid vannak. Ha nem akkor nincs baj, tanultál valami érdekeset.
A legbulisabb cucc szerintem David Evans rettenete Introduction to Computing Explorations in Language, Logic, and Machines. Szabadon hozzáférhető és felhasználható. No ezek után jöhet a Structure and ....
Processing. Remek alapozás Java-hoz, interakciók szerelmesei és művészlelkek is sokat tanulhatnak a processing-gel játszva. Hasonlóan a Scratch-hez, vizuális visszajelzés kapsz a munkádról, ennyiben mindenképpen hasznos és jó. Egyéni vélemény, de szerintem nem kezdőknek való. Pontosabban szerintem mindeképpen kell egy kis alap. Pl Python-ból egy kis bevezető, vagy Ruby-ben egy kis gyakorlat. Nem kell gurunak lenni, de szerintem kell hogy legyne egy minimális tapasztalatod programozásból. A legeslegjobb bevezetés Daniel Shiffman könyve Learning Processing (sajna nem szabad könyv). Ha ezzel megvagy, akkor érdekes dolgokat tanulhatsz a Nature of Code c. tantárgy Daniel által írt jegyzeteiből (ebből majd könyv lesz). Alkotásaidat megoszthatod az www.openprocessing.org oldalon, ahol mások munkáit is megtekintheted.




Nincsenek megjegyzések: