fbpx

Így működik az agyunk

Így működik az agyunk kód írása közben

– avagy programozástanulás tudatosan –

2. rész

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ód sorokat 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. Így 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 a veleszületett viselkedés genetikailag kódolva van a szervezetben, és segítségével minden előzetes tapasztalat nélkül teremthetünk kapcsolatot a környezetünkkel.

Erről és az úgynevezett izommemróriáról az 1. részben olvashattál már bővebben, ha lemaradtál róla, ide kattintva megnézheted: Így működik az agyunk – programozás tanulás tudatosan 1. rész

Kíváncsi vagy a folytatásra?

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!

Gondoltad volna, hogy 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?

Kód írása kávézóban.
Modern társadalmunkban a programozás központi szerepet játszik

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 igényelnek.

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.

A programozási feladatok elvégzése során az agy beszédértési központja aktivizálódott

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.

Most pedig nézzük meg azt, hogy hogyan is tehetjük eredményesebbé a programozás tanulásunkat!

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.

Hogyan segíthetjük?

Ebben nagy segítségünkre lehet az automatikus formázás használata a forráskódjainkban. Mindig, amikor írunk egy bármilyen komplexitású kódot, 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 (Ctrl + Shift + F Eclipse-ben). 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 meg is találod: Eclipse gyorsbillentyűk

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.

Kód írására billentyűzetet használhatunk.
A gyorsbillentyűk használatával jelentősen növelhető a produktivitás

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.  A sok különböző fajta zárójel, amit írnunk kell a programunkba, hogy az működjön, azt 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 szembe tűnőbb és lényeges.

Kód formázás előtt és után

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.

Kivétel a webes logfileban

Jól látható a kivétel, hisz ezek nem a sor elején kezdődnek, hanem kicsit bekezdve. A nagy üres rész a sor elején elárulja a kivétel helyét.

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, mi szerint 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 gondolkodá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

Kód írása több  nyelven is lehetséges. Az első nyelv kiválasztása döntő fontosságú.
Első programozási nyelvünk meghatározó későbbi gondolkodásunkra

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)
  • 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)

* rövidtávú emlékezet

Ha szívesen olvasnál részletesen a kutatásról, ide kattintva megteheted: Understanding Understanding of Source Code with fMRI

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 azt ő maguk írták a kódot, vagy valaki máshoz tartozik.

Tudjuk azt is, hogy a programozók gyakran több időt töltenek a kód rögzítésére és a refaktorosítá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 sokak számára elsajátítható. Ha pedig a kezdetektől fogva trenírozod agyad a kódolvasásra, kódírásra, annál gyorsabban és könnyebben fogsz átlendülni a kezdeti nehézségeken és nagyobb ütemben fog végbemenni a fejlődésed. 😉