Mit tehetsz programozóként, programozástanulóként ha elakadtál egy probléma megoldásában?
Itt most arra a szituációra gondolok, hogy elkezdtél tanulni egy programozási nyelvet, környezetet, és valamit nem sikerül megoldani: a te logikád szerint helyes, de a gép mégsem azt csinálja, amit szeretnél tőle. Vagy kiír valami hibaüzenetet, amit esetleg nem is értesz.
Jobb esetben megkérdezed a mentorodat, de mentor sem mindig áll rendelkezésre (a való életben sem), szóval nem árt, ha van valami a tarsolyodban önállóan megoldandó helyzetekre is.
- Google. Írd be a keresőbe, hogy éppen mit szeretnél megtenni vagy mi a hibaüzenet, felsorolva a környezeteket is, pl. „java array arrayindexoutofboundsexception” vagy „reactjs touch drag and drop” esetleg „spring data jpa dao” vagy ilyesmi. Saját tapasztalat, hogy mostanában 2-3 szó is elmegy a környezet megadására, viszont fontos, hiszen nélküle esetleg egy másik környezet megoldását találod meg.
(Ide tartozik, hogy ha egyszerű kérdést teszel fel, akkor LMGTFY választ kapsz, ami a „Let me Google that for you” rövidítése. Van rá weboldal is: LMGTFY. - Ha már működik a program, és a hiba forrásának helyét keresed:
- Tesztkiírásokat tenni a programba, amikor kiírsz valamilyen információt a programról (pl. egy változó értékét) a konzolra (képernyő vagy böngésző console-ja). Az előnye, hogy minden környezetben használható, és gyorsan előállnak az információk, viszont azok köre szűkebb.
- Lépésenkénti futtatás. A legtöbb programozási környezet támogatja azt, hogy a programodat lépésről lépésre, soronként hajtsd végre, és minden sor után megállj, megnézni a változók, kifejezések értékét. Az információk köre széles, de a lépésenkénti haladás miatt nem túl gyors.
- Oszd meg és uralkodj!. Ez már egy haladó technika, a mérnöki problémamegoldás (egyik) kvintesszenciája. A lényegét hadd mutassam be mondjuk egy házimozi-rendszeren: Tegyük fel, hogy van egy lejátszónk, erősítőnk, hangfalunk, valamint kábelek a lejátszó és erősítő, illetve az erősítő és a hangfal között, és azt tapasztaljuk, hogy bár kép van, hang nincs. Hol lehet a hiba? Valójában bárhol: lehet, hogy a film, amit lejátszanánk, nem tartalmaz hangsávot, a kábelek valamelyike megsérült, az erősítőben romlott el valami, esetleg a hangfal ment tönkre… vagy valamelyik eszköz nincs bekapcsolva.
Elsőként nézzük meg, hogy az erősítőnél (vagy inkább az erősítő előtti kábel végénél) van-e hang, ami kb. a rendszer felénél van. Ha van hang, akkor tudjuk, hogy a vizsgált pontig minden rendben, a hiba utána, azaz az erősítő, erősítő utáni kábel vagy a hangszóróban keresendő. Ha nincs hang ott sem, akkor az első felében valami gond biztos van (ezzel nem zártuk ki, hogy az erősítő utáni részben gond van-e).
Menjünk tovább azzal az esettel, hogy az erősítőnél nincs hang. A következő lépés, hogy ezt a részt is megfelezzük: nézzük meg, hogy a lejátszó ad-e ki hangot (mondjuk egy fejhallgatóval). Ha itt sincs, akkor tovább kell haladni visszafelé, ha van, akkor a lejátszó utáni kábelben (vagy az erősítőben – attól függ, hol néztük) keresendő a gond.
A kérdéses komponenseket mindig megpróbáljuk elfelezni és megnézni, hogy középen mi a helyzet.
- Ha nem működik a program, nem tudod összerakni, mi a helyzet:
- Elmész tusolni, alszol rá egyet. Ilyenkor a tudatos elme kikapcsol, és hagyja, hogy a tudatalatti elme megoldja a dolgokat. Ilyenkor jönnek álmunkban a felismerések (Friedrich August Kekulé is így járt a benzol molekula szerkezete kapcsán) vagy esetlen fürdés közben tör ránk a felismerés (az Arkhimédésznek tulajdonított – ám vélhetően hamis – sztori szerint a fürdőben jött rá, hogy II. Hierón által rendelt koszorúban hogy lehet megmérni az arany mennyiségét). Egyszóval kapcsoljunk ki!
- Rubber duck debugging.
Fogj egy gumikacsát. Tedd fel a gépedre, és mintha élő ember lenne, mondd el neki a problémádat. Mire végzel, lehet, hogy megvan a megoldás is. Hogy miért? Az ember hajlamos ugyanazokat a gondolati köröket befutni újra és újra. Ha viszont valaki másnak kell elmondani, akkor az elejéről kezdjük és lépésről lépésre építjük fel, ami közben a gondolkodásunk is új utakra téved. Működik házastárssal, baráttal is!
Tanulj nálunk Java programozást!
Ha nem tudsz még programozni…
Ha tudsz programozni, de más nyelven…
Ha elavult már a tudásod…
akkor nézd meg gyors és rugalmas módszerünket: StudiCore Online Java.