Hogyan tanulj magadtól programot írni?

Aki programozni akar tanulni, az többnyire még az iskolai tanulmányok előtt nekiesik a számítógépnek. A neten számos tippet találsz arra, hogy hogyan indulhatsz el, pár pontban én is összeszedtem a saját tapasztalataimat.

Code by Michael Himbeault
Code by Michael Himbeault

 

Mielőtt belekezdesz az első kódodba, érdekes játék, ha a mindennapjaidat programként szemléled. Itt egy példa:

  1. Felkelsz
  2. Reggelizel
  3. Fogat mosol
  4. Felöltözöl
  5. Iskolába/Munkába mész
  6. Hazamész
  7. Játszol
  8. Vacsorázol
  9. Lefekszel aludni

Ez egy sima szekvencia, a strukturált programozás egyik eleme.

Igen ám, de egyes dolgokat más-más ideig végzel

  1. Felkelsz
  2. Amíg nem vagy éhes
    1. Játszol
  3. Vacsorázol
  4. Lefekszel aludni

A 2-es pont egy feltételes ciklus.

Igen ám, de nem minden nap csinálod ugyanazt… Például ki megy minden nap dolgozni vagy iskolába?

  1. Felkelsz (+…)
  2. Ha hétköznap van
    1. Iskolába / Munkába mész
  3. Egyébként
    1. Kirándulsz
  4. Hazamész
  5. Játszol (stb)

A 2-es és 3-as pont egy feltételes elágazás két része.

Ezeket az elemeket a programozás során MINDIG használni fogod, akármilyen nyelvet használsz.

A legtöbb manapság elterjedt programozási nyelvnél használni fogsz objektumokat is. Az objektumok egymással hierarchikus kapcsolatban vannak. Az alábbi példával tudnám a felépítésüket szemléltetni:

  • Négy kerekű jármű (alap objektum, négy kereke van, meg egy karosszéria, el tud indulni, meg tud állni, és tud kanyarodni).
    • Szekér (olyan négy kerekű jármű, amit állat tud vonni)
    • Motorizált jármű (kap egy motor objektumot, ami megváltoztatja a karosszéria tulajdonságait, valamint hatással van az elindulás, megállás és kanyarodás funkciókra)
      • Autó (speciális motorizált jármű 5 üléssel)
      • Teherautó (speciális motorizált jármű nagy raktérrel).

Az első objektum (ős vagy szülő) rendelkezik a járművek alapvető tulajdonságaival. Minden további objektum rendelkezik a szülő osztály tulajdonságaival, de azokat valamilyen speciális módon befolyásolja. A dőlt betűs objektumok absztraktak, ami azt jelenti, hogy ún. gyűjtő objektumok. Ilyen tárgyat nem tudsz létrehozni, de programtechnikailag megalkotod, hogy a közös tulajdonságokat később, egy speciális esetnél fel tudd használni.

Vedd figyelembe, hogy a fentiekben nagyon egyszerűen fogalmaztam meg a programozás (azon belül is a kódírás) legfontosabb elemeit. Tanulmányaid során ezek sokat fognak finomodni. Amennyiben Te már több ismerettel rendelkezel a témában, akkor ez a bejegyzés nem neked szól 🙂 Mégis megkérnélek arra, hogy olvasd végig, és ha van egy jó tipped, akkor írd le a kommentek közé! Köszi 🙂

Legyen egy érdekes feladatod

Legyen valami olyan megoldandó feladat, amit meg akarsz csinálni a géppel. Nagyon old-school, de az én első programom egy CD valamint magnó és videó-kazetta adatbázis volt Turbo Pascalban. Akkoriban ilyen nem létezett, nekem viszont már elég szép gyűjteményem volt zenéből és többnyire tévéből felvett filmeket tartalmazó videó kazikból. Gondold végig, hogy mit akarsz a programmal csinálni. Én regisztrálni akartam az új elemeket, módosítani a régieket, és persze keresni mindenféle szempontból (tartalom vagy ID). Ja, és persze listát gyártani, mert akkoriban még nagyban ment a másolgatás. Miután meg volt, hogy mit akarok, sokkal könnyebb volt megoldás orientáltan keresni (internet híjján) a könyvtárban.

Válaszd ki a programnyelvet

Van az úgy, hogy egy feladatot az egyik programnyelvvel egyszerűbb, a másikkal bonyolultabb megoldani. Ha mobilra akarsz valamit csinálni, akkor eleve kevesebb lehetőség közül kell választanod. Ha PC-re, akkor függ az oprendszertől is, hogy melyik nyelvet preferálod. Szerintem beszélgess el a közeledben levő programozni tudókkal, hogy ők mit ajánlanak. Kifejezetten hasznos, ha van valaki, akitől tudsz kérdezni, ha megakadsz 🙂

Manapság sokan javasolják első nyelvnek a C-t és a JAVA-t. Tényleg remekül meg lehet velük tanulni az alapokat, de arra már nem javasolnám, ha pl. játékot vagy valamilyen komplexebb grafikus megjelenítést igénylő feladatot akarnál lekódolni vele, mert ahhoz mélyebb tudást igényel. Hosszú távon mindenképp foglalkozz velük, sokat tanulhatsz ezekből a nyelvekből. Ha egy egyszerűbb feladatot választasz, akkor akár valamilyen gyerekeknek szánt programnyelvet is választhatsz. Ezekkel inkább a gép igényelte logikus gondolkozást tanulod meg – objektumok/csomagok, egyik lépés a másik után, ismétlődő lépések, feltételek – ezek viszont olyan alapok, amiket bárhol alkalmazhatsz.

Kis lépésekben

Bontsd fel a feladatodat kis lépésekre. Pl. nekem az első kis lépés az aprócska menüm volt, a második pedig a különböző képernyők (felvétel, keresés, eredmény megjelenítés, módosítás). Aztán jött az adatbázis, de addigra már vérszemet kaptam 🙂

Ingyenes webes gyakorló oldalak

Tele van a net jobbnál jobb gyakorló oldalakkal. Ilyen például a Code Academy, a Code.org, de a Khan Academy-nek is van kódolással foglalkozó kurzusa.

Hackelj bele más kódjába

Ha már ismered az alapokat, akkor ez egy remek lépés egy új programnyelvet megérteni, amennyiben az a másik jó kódot ír. Ha még nem tudsz programozni, akkor érdekes kihívás megkeresni és módosítani a megfelelő részt. Őszintén szólva nem tartom hatékony tanulási folyamatnak, mivel nem vagy képben azzal kapcsolatban, hogy milyen minőségű kódot készít a másik, vagy hogy egyáltalán, mire keress rá a forráskódban ahhoz, hogy módosítani tudd. Még egy kisebb, rosszul dokumentált forrás kódnál is hamar tele lesz a hócipőd, ha az egészet vissza kell fejtened, hogy megértsd a logikáját. Úgy képzeld el, hogy kapsz szanszkritül egy könyvet, hozzá egy szótárt, és nem csak el kell olvasnod a könyvet, hanem egy nem szó szerint idézett részt meg kell benne keresned, majd megfelelő stílusban módosítani, mindezt úgy, hogy még a szanszkrit nyelvtant se ismered.

Felejtsd el, és tanuld meg rendesen

avagy nem kell feltalálnod újra a kereket

Magunk között mondva a fenti módszerekkel meg tudod tanulni egy programnyelv alapjait, valamint sikerélményekre tehetsz szert. Viszont ha komolyabb feladatokra akarsz vállalkozni, akkor jobban jársz, ha foglalkozol módszertani, tervezési, tesztelési témákkal is. Ezekre azonban sokkal kevesebb weboldal van, mint arra, hogy “hogyan írjam meg X programnyelvben azt, hogy…”. Ha hatékonyan akarsz programot írni, akkor mindenképp érdemes egy jó minőségű tanfolyamra vagy iskolába beiratkozni. Jó hozzá, ha van “előéleted” és tudod, hogy mit jelent a ciklus, vagy a szekvencia, és nem ijedsz meg, ha forráskódot látsz, akár számodra eddig ismeretlen nyelven. A pénz, amit erre áldozol, többszörösen meg fog térülni, ha gyorsabb, tisztább és javítható kódot írsz, mint ha ugyanerre hosszú évek kemény munkájával magadtól kell rájönnöd.