Így működik az agyunk – programozástanulás tudatosan (2. rész)

Egy nő tornagyakorlatokat végez a laptop előtt.

A programozástanulás során sokan elkövetik azt a hibát, hogy amikor internetről vagy e-book-ból tanulnak, a gyakorlásra szolgáló kódsorokat nem begépelik az IDE-be, hanem bemásolják Ctrl+C – Ctrl+V-vel. Emiatt nem tud végbemenni a tanulási folyamat, vagy erősen akadályozva van, mert nem alakulnak ki azok az idegpályák, amikre szükség van később a programozástanulás során, vagy amikor önállóan kell majd kódot írni.

Ezzel szemben vannak veleszületett viselkedések, melyek genetikailag kódolva vannak a szervezetben, és segítségükkel minden előzetes tapasztalat nélkül teremthetünk kapcsolatot a környezetünkkel. Erről és az úgynevezett izommemóriáról az 1. részben olvashattál már bővebben.

A 2. részben azzal folytatjuk, hogy mi is játszódik le agyunkban a programozás tanulása során, és hogyan lehetünk a kezdetektől hatékonyabbak!

A programozás során sokkal nagyobb szerepe van a nyelvi, mint a logikai képességeknek

Mai modern társadalmunk működésében a számítógépes programozás egyre inkább központi szerepet játszik. Ennek ellenére elenyészően kevés tanulmány foglalkozik a programozási nyelvek elsajátításához szükséges kognitív alapokkal. Vajon mi is kell ahhoz, hogy valakiből jó programozó váljon?

Talán meglepő, de a meglévő kutatások következetlen bizonyítékokat szolgáltatnak a matematikai készségek releváns jelentőségéről. Ennek ellenére a főiskolai környezetben történő programozási órák előfeltételeként rendszeresen magasabb szintű matematikai kurzusokat várnak el.

Azonban a legújabb német kutatások is alátámasztják, hogy a modern programozási nyelvek használatának megtanulása hasonló a természetes nyelvek, mint például a francia vagy a kínai nyelv felnőttkorban történő megtanulásához. A vizsgálatnál MR-berendezések segítségével figyelték meg az egyes agyi régiók aktivitását a különféle programozási feladatok végrehajtása során.

A vizsgálat talán meglepő eredménnyel zárult, hiszen a feladatok végzése során elsősorban az agy bal fele mutatott aktivitást, ahol a beszédértési központ is található, míg a matematikai, logikai megértésért felelősnek tartott agyi régiókban nem figyeltek meg emelkedő aktivitást.

Ez egyébként nem újdonság, hiszen már korábban is történtek ezzel kapcsolatos vizsgálatok, melyek szintén ezen eredményeket támasztották alá.

Az első részben már említést tettem róla, hogy mi minden megy végbe egész szervezetünkben egy új készség elsajátításakor, és mi szükséges ahhoz, hogy jobban működjön a memóriánk és hatékonyabban dolgozzon az agyunk.

Így teheted eredményesebbé a tanulást

Amikor elkezdesz tanulni programozni, sok újdonságot kell az agyadnak befogadni és feldolgozni. Ahogy megszokja az agyad a használt technológiákat, és már nem lesznek idegenek számára a látott kódsorok, annál jobban fogsz tudni a lényegi részre koncentrálni a kódon belül.

Így célszerű már a kezdetektől fogva segíteni az agyunknak abban, hogy minél hamarabb megszokja a kódsorok látványát.

Automatikus formázás

Ebben nagy segítségünkre lehet az automatikus formázás használata a forráskódjainkban. Általában, amikor egy bármilyen komplexitású kódot írunk, annak írása közben nem szükséges figyelnünk a formázásra. Amikor azonban kész vagyunk egy logikai egységgel, nincs benne fordítási idejű hiba és szeretnénk lefuttatni az eddig írottakat, akkor mielőtt ránézünk, automatikusan megnyomjuk a formázást (Eclipse-ben: Ctrl + Shift + F). Ezt a billentyűkombinációt biztos vagyok benne, hogy álmomból felkeltve is tudnám, hiszen a tanfolyam kezdete óta teljesen beleégett már mindannyiunk agyába, vagy inkább ujjaiba. Ezeket az Eclipse gyorsbillentyűket összefoglalóan egy korábbi blogcikkünkben megtalálod.

A produktivitás tekintetében a legnagyobb eredményt tehát az ehhez hasonló gyorsbillentyűkkel tudod elérni, melyek használata az elején talán idegesítő és úgy érzed, csak lassít az amúgy sem túl gyors kódgépelésed során, de hidd el, hogy pár hét és úgy fogod ezeket a billentyű-kombinációkat használni, mintha ezzel a készséggel születtél volna!

A formázás hatására egy jól definiált szabályrendszer alapján az általunk írt kódsorok formát öltenek, és nem csak rendezetté, de jól átláthatóvá is válnak.

Miért is jó ez nekünk kód írása közben?

Ez a forma egyfajta szabványos forma, amire szinte minden fejlesztő figyel, és nem ok nélkül alakult ki ilyenné, amilyen.  Sok különböző fajta zárójel van, amiket használnunk kell, hogy a programunk működjön, ezeket mind helyesen kell nyitnunk és zárnunk. Természetesen az elején azt sem fogod tudni hányféle van, és mikor melyiket használd, melyiknek hol az eleje, a vége, sőt… még a nevüket is keverni fogod, saját tapasztalat, de ebbe is nagyon hamar bele fogsz jönni! 

A kód indentálása viszont nagyban segít nekünk átlátni azt, hogy melyik kódrészlet tartozik egybe. Az agyunk vizuális adatfeldolgozással foglalkozó része ugyanis nagyon jól tudja azonosítani az indentált kódsorokat. Ha ránézünk a kódra, akkor rögtön egyértelmű egy idő után számunkra, hogy mi az, ami a cikluson belül van és mi az, ami kívül.

Ez ezen az egyszerű példán is jól látható. Mindkét fotón helyes a kód, és hiba nélkül, tökéletesen lefut. De sokkal szebb és átláthatóbb a formázás után, ami nyilván bonyolultabb és hosszabb kódsorok esetén még inkább szembetűnőbb és lényeges.

Két kódrészlet.

Log Fájlok

Hasonló a helyzet a webes alkalmazásoknál, amik éjjel-nappal futnak és egy log fájlt gyártanak működésük során (naplófájlt), hogy meg lehessen később is nézni, hogy mikor mit tett a program, és volt-e hiba.

Mivel a Java-ban a kivételek megjelenése a log fájlban nagyon jellegzetes, így még egy relatíve nagy naplófájlban is egy idő után nagyon hatékonyan ki tudjuk keresni – mi emberek is – a számunkra fontos kivételt tartalmazó részeket, mert ezek vizuálisan jelentősen más mintázatot rajzolnak ki: nem a sor elején kezdődnek, hanem kicsit bekezdve.

A kód írása közben az IDE-nek a gyorsbillentyűi is hasonló alapon tanulhatók. Érdemes megtanulnunk őket, és tudni, hogy hova nyúljunk később adott szituációban. Például ha egy osztályt nem ismer fel a fordító, mert importálni kell egy másik package-ből, akkor a Ctrl+Shift+O-t kell megnyomnunk.

Ezt egy idő után az ember már reflexszerűen nyomja meg, nem kell rajta gondolkozni. Kialakul egyfajta izommemória ezzel kapcsolatban is.

Izommemória?

Biztosan Te is hallottad már azt a hasonlatot, miszerint az agyunk olyan, mint egy izom. Tehát ahhoz, hogy „éles” maradjon, gyakorolnia kell. A programozás pedig kiváló mentális testmozgásnak számít agyunk trenírozására.

Nem kétséges, hogy egy programozási nyelv kialakítása formálja az agyunk működését. Attól függően pedig, milyen programnyelvvel kezdjük a tanulást, meghatározó lehet további gondolkodásunkra is.

Edsger Dijkstra, a történelem egyik legbefolyásosabb számítógépes kutatója így vélekedett erről:

„Az általunk használt eszközök hatással vannak gondolkodási szokásainkra, és így gondolkodási képességeinkre. A Java programozók és a Python programozók két különféle állatfaj, akik két teljesen eltérő módon közelítik meg a kódolást.” 

Más szavakkal, az első programozási nyelv paradigmái és idiómái befolyásolják, sőt diktálják, hogyan gondolkodunk az adatstruktúrákról, algoritmusokról stb.

Hogy még egy idézettel éljek: „Ha a kalapács az egyetlen szerszámod, mindent szögnek nézel.” (Abraham Maslow). Hasonlóképpen, ha megtanulod, hogyan kell kódolni egy bizonyos nyelven, akkor eleinte nagy kísértésnek tűnik minden más nyelvnél ennek megfelelően gondolkodni.

Ha épp azon dilemmázol, milyen programozási nyelvet válassz, ez a blogcikkünk a segítségedre lehet: Programozási nyelv választása

Egy 2014-es vizsgálatban fMRI (funkcionális mágneses rezonanciavizsgálat) segítségével figyelték meg az agyi aktivitást, miközben a kutatásban részt vett programozók a megadott kódrészleteket próbálták megérteni. A kísérlet során megállapították, hogy az agy öt különálló területe is bevonódott a forráskód megértésébe, és a feladatok megoldása során az agy azon részeit használták fel, amelyek általában kapcsolódnak a nyelvfeldolgozáshoz, a memóriához és a figyelemhez.

Az agy ezen öt része aktivizálódott a kódsorok megfejtése közben, zárójelben pedig azt láthatjátok, hogy mely területekért felelősek:

  • BA 6: Middle frontal gyrus (figyelem, nyelv, munkamemória azaz rövid távú emlékezet)
  • BA 21: Middle temporal gyrus (szemantikus emlékezet)
  • BA 40: Inferior parietal lobule (munkamemória)
  • BA 44: Inferior frontal gyrus (munkamemória)
  • BA 47: Inferior frontal gyrus (nyelv, munkamemória)

A bizonyítékok nem azt sugallják, hogy a programozási nyelvek hasonlóak az idegen nyelvekhez, csak azt, hogy hasonló agyi régiókra vonatkoznak. A vizsgálati alanyok a kutatás során nem kódokat írtak – amelyek valószínűleg különböző agyi területeket érintenének – hanem már meglévő kódsorok megértése volt a feladatuk.

De ne gondold, hogy így értelmetlen volt ez a kutatás! A programozók ugyanis rendszeresen felülvizsgálják a forráskód részleteit, függetlenül attól, hogy ők maguk írták a kódot, vagy valaki mástól ered. Tudjuk azt is, hogy a programozók gyakran több időt fordítanak a kód rögzítésére és a refaktorálásra, mint a semmiből történő új kód írására.

A programozási készségek elsajátítása tehát nem könnyű feladat, de megfelelő gyakorlással és kitartással sokan képesek rá. Ha pedig a kezdetektől fogva trenírozod agyad a kódolvasásra, kódírásra és a tanulásra annál gyorsabban és könnyebben fogsz átlendülni a kezdeti nehézségeken, és nagyobb ütemben fogsz fejlődni!

Szerző: Koterla Klarissza