Több programozási nyelv tanulása párhuzamosan?
Az élet néha úgy hozza, hogy az ember két programozási nyelvet kell, hogy egyszerre tanuljon. Lehetséges, hogy egy oktatási intézmény tematikája jött ki így, de az is lehet, hogy egy állásra szeretnénk minél hatékonyabban felkészülni. Tipikus több programozási nyelvet igénylő terület a webfejlesztés. ahol szükség lehet egy frontendnyelv (Javascript/Typescript és persze HTML/CSS) egy backendnyelv (Java, C#, Python, PHP…) egyidejű megismerésére.
Hátrányok
Első hallásra a legtöbb embernek nem is tűnik észszerű döntésnek a párhuzamos tanulás. Rögtön felmerülhet, hogy nem keveredik-e a két nyelv egymással? Nos, ennek valóban megvan a veszélye, ezt nem érdemes elhallgatni, ahogy annak is megvan, ha valaki (emberi) idegen nyelvet tanul kezdőként párhuzamosan. Az is fontos körülmény, hogy két nyelvet tanulni párhuzamosan mégiscsak több energia.
Előnyök
Ugyanakkor oktatóként végiggondolva számos előnye is van a parallel tanulásnak.
Itt tegyünk mindjárt egy kis kitérőt: ha programozást tanul az ember, akkor legalább három, egymástól jól elkülöníthető dolgot tanul:
- a nyelv szintakszisát (~ idegennyelv nyelvtana, szavai)
- a nyelv kifejezőkészségét (mit és hogyan lehet elmondani az adott nyelven, erre egyik kedvenc analógiám az angol “unsee” kifejezés, “I can never unsee this”, amit akkor használunk, ha valami megrázó dolgot látunk, és nem tudjuk többet elfelejteni. Az angol nyelvben van unsee, unhear, mint ige, ki tudja fejezni ezt a jelenséget. Magyarul csak körülírni tudom).
- “algoritmizálást” / a program felépítését a meglévő eszközökkel, összetevőkből egy adott cél elérése érdekében. Ilyen lehet pl. egy autóval való szabályos elindulás. Összetevők azok, amiket az autó vezetőülésében tenni tudunk: mobiltelefon matatása, a kesztyűtartóból egy kulcs kivétele, kuplung benyomása, kulcs elfordítása… Látszik, hogy a célhoz nem szükséges minden végezhető tevékenység. A lépéssorozat meg valami ilyesmi: biztonsági öv becsatolása, kuplung benyomása, kulcs elfordítása, autó sebességbe rakása, irányjelző kirakása, körülnézés, kuplung felengedése…
Ha valaki egy programozási nyelvet tanul, akkor e három rész teljesen összefolyik, és csak egy második nyelv tanulásánál fog majd valamennyire elválni a tudásában a három rész.
Ha pedig párhuzamosan tanulunk több nyelvet, akkor ez a három dolog sokkal élesebben elkülönül egymástól: a nyelv szintakszisa természetesen azonnal látható, tapasztalható. A kifejezőkészség (akár önkéntelen) összehasonlítással látható, a nyelvfüggetlen algoritmizálás pedig egy adott program mindkét nyelven való elkészítése által fejlődik. Az eredmény pedig sokkal stabilabb tudás lesz.
Ha valaki tanult több idegen nyelvet életében, akkor tudja, hogy a második elsajátítása már kevesebb időt. energiát igényel, hiszen az első tanulása közben bizonyos alapokat megszerzett. (Ha mondjuk német után olaszt kezd el tanulni valaki, akkor azon, hogy a szavaknak van neme, nem fog meglepődni, vagy ha angol anyanyelvűként tanul német után olaszt valaki, akkor azon sem lepődik meg, hogy az igéket ragozni kell). A parallel tanulás esetében talán az egymás után tanulásnál még gyorsabban is el lehet sajátítani a két különböző nyelvet. De annál itt is tuti gyorsabb, mint ha első nyelvként tanulná az ember mindkettőt.
A programozási nyelvekről pedig azt kell tudni, hogy meglehetősen hasonlóak egymásra. Van néhány nagyobb nyelvcsalád (procedurális, deklaratív, objektumorientált,… – hogy a leggyakrabban használtakat említsem), amik tagjai nagyon közel állnak egymáshoz. És egy-egy nyelvcsaládon belüli két nyelvről azt mondanám, hogy olyanok, mint mondjuk a lengyel és a szlovák: ha az egyiket ismeri az ember, akkor jellemzően megérti a másikat is.
A végére hagytam a saját kaptafánkat, az oktatást. Ha két programozási nyelvet tanulsz, akkor a tudást valószínűleg két különböző oktatótól fogod megszerezni. Két különböző szakember különböző módon oktat, lehet, hogy az egyiknek az egyik témához adott magyarázata lesz érthetőbb, a másiknak a másik témához. Neked viszont meglesz az az előnyöd, hogy két szemszögből fogod hallani ugyanazt, ami mélyebb, jobb megértést tud biztosítani az adott témakörhöz.
Hogyan tanulj két programozási nyelvet párhuzamosan?
Álljanak itt a tanácsaim a parallel tanulás esetére:
- Ha lehetséges, haladj pontosan párhuzamosan az anyaggal a két nyelvben: ha az egyikben megnézel egy fogalmat, témakört, akkor vedd hozzá a másikat is. Hogy van az egyikben és a másikban ugyanaz? Van-e a két esetben különbség a kifejezőkészségben? Tudsz-e az egyikben valami többet kifejezni, mint a másikban? Mik ezek?
- Létezik-e olyan témakör az egyikben, ami a másikban nincs? (Egy bizonyos programrészt ismétlő utasításból – a ciklusból – Pythonban kétféle van, C-ben, C++-ban, C#-ban, Javában, Javascriptben, Typescriptben, PHP-ban pedig 3). Ezeket jegyezd meg alaposan (“kifejezőkészség”)
- Ha találtál valamire az egyik nyelvben egy megoldást, ami a másikban nincs meg, akkor azt hogyan tudod a szűkebb nyelvben reprodukálni?
Itt hadd ajánljam figyelmedbe a Java tanfolyamunkat, amelyről nagyon sokan nyilatkoztak úgy, hogy “ebből végre megértettem” a Javát. Mi van, ha pont ezzel a tanfolyammal fogsz magadnak órákat vagy napokat megspórolni, mert valamilyen fogalmat nekünk úgy sikerül elmagyarázni, amiből egyből megérted, és nem kell órákat “kotlani” fölötte, hanem “bumm, megérted” és már mehetsz is a következő lépésre.
Töltsd ki Jó programozó lennél? tesztünket is!
Sok sikert az alapos tudás megszerzéséhez!