SAPIENTIA ERDÉLYI MAGYAR TUDOMÁNYEGYETEM MŰSZAKI ÉS HUMÁNTUDOMÁNYOK KAR MATEMATIKA-INFORMATIKA TANSZÉK
A JÓ ÍRÓK JÓ OLVASÓKIGAZ-E EZ A SZÁMÍTÓGÉPES PROGRAMOZÁS TERÜLETÉN IS?
KÉSZÍTETTE:
PÁLL ENIKŐ-SAROLTA, Informatika II.
TÉMAVEZETŐ TANÁR:
dr. KÁTAI ZOLTÁN
1
TARTALOMJEGYZÉK Tartalomjegyzék............................................................................................2 Bevezetés.......................................................................................................3 Jó olvasók-jó írók.................................................….....................................4 Olvasás-javító technikák...............................................................................6 Kód olvasás...................................................................................................8 Javasolt kód olvasás javító technikák..........................................................12 Hatékony kód olvasás kamatoztatása kód írásban.......................................16 Kísérleti mérések, eredmények....................................................................18 Irodalomjegyzék...........................................................................................23
2
Bevezetés A dolgozat arról szól, hogy a számítógépes programozói készséghez (írás) hogyan járulhat hozzá az, ha a hatékony irodalmi olvasás alapelveit megpróbáljuk kamatoztatni a kódolvasásban. A dolgozatban párhuzamot állítok a szépirodalmi szövegek olvasása és a számítógépes programkód olvasása között. Bemutatom, hogy azt, amit tanulunk és használunk a szépirodalmi szövegek olvasásakor, hogyan tudjuk felhasználni egy programkód olvasásakor. Azt is megláthatjuk, hogy nem csak emberi nyelvek léteznek, hanem programozási nyelvek is, amelyek hasonlóak egymáshoz szerkezetileg, vagy éppen teljesen eltérnek. Pont, mint az emberi nyelvek. Egy kérdőívet is készítettem és feldolgoztam, amelyben olyan személyeket kérdeztem a programkód olvasással kapcsalatos véleményükről, akik tanultak/tanulnak programozni. A kérdőívet kitöltök válaszai pedig ugyancsak alátámasztja a dolgozatban leírtakat.
3
Jó olvasók –jó írok Az olvasás a leírtak által vezetett gondolkodás. Az olvasási folyamat két fő részre osztható. Az első rész a dekódolás, vagyis a vizuális élmény alapján a betűsorok megfejtése, a betűknek a megfelelő beszédhangokkal történő megfeleltetése. A második részben történik a megértés és a jelentés azonosítása. [1] Megkülönböztetünk ismeretszerző olvasást, tanulási célú olvasást, élményszerző olvasást, kereső olvasást, áttekintő olvasást, feladatazonosító olvasást, javító vagy ellenőrző olvasást és korrektúraolvasást. [2] Az értelmes, elemző olvasás (értő olvasás) a mindennapi élet szükségszerűsége. Akkor mondjuk, hogy valaki értelmesen, elemzően, azaz értőn olvas, ha az elolvasott szöveg lényegét kiemelve, lényegtelen jegyeit elvetve vissza tudja adni a szöveg tartalmát. [3]
1. ábra Olvasás [9] 1. ábra Olvasás [9]
Az emberek azt hiszik, hogy a jó olvasó az, aki helyesen, folyékonyan és gyorsan el tud olvasni bármilyen szöveget. De ők elfelejtenek egy nagyon fontos tényezőt: a jó olvasás nem fejeződik be a helyes kiejtésnél és a gyorsaságnál. Jó olvasónak lenni beszéd értést és megfigyelést jelent. Jó olvasó az, aki kapcsolatot keres meglévő tudása
és
a
szöveg
új
információi
között,
meghatározza, hogy melyek a szöveg legfontosabb témái, gondolatai, következtetéseket von le, új gondolatokat fogalmaz meg, összefoglalja, újraalkotja az olvasottakat. [4] Ha valaki jó olvasó nem feltétlenül jelenti azt, hogy jó író is. Az írás egy készség és sokszor a legjobb olvasók is vonakodnak az írástól, mert igazán jól írni nem könnyű. Általában két módja van annak, hogy jobb íróvá váljon valaki: írjon sokat és olvasson sokat. Vajon miért tesz az olvasás jobb íróvá? A legtöbb jó és különösen nagy író gyerekkorától kezdve imádja a könyveket és lelkes olvasó. Így a könyvek észrevétlenül képezik őt, ahogy kirándulnak a képzeletbeli világokba egyre szélesebb látókörre tesz szert és ez egyben egyfajta tapasztalatot is jelent. Megtanítja hogyan kellene írni különböző stílusokban. Egy jó könyv olvasása szórakozást, kikapcsolódást jelent. A jó könyv alatt itt bármi értetődik, ami megragadja a fantáziát, ami arra késztet, hogy tovább olvassunk, ami elmesél
4
nekünk egy jó történetet, ami csodálatos szereplőket és új világokat teremt. De a szórakoztató olvasás mögött a jó író írói szemmel olvas, lehet nem mindig tudatosan, de általában igen. Semmi sem inspirálja jobban az írót mint az, ha mások szavait olvassa. Általában két dolog van, amit az írók tanácsolnak azoknak, akik fejlődni akarnak: több írás és olvasás. De maga csak az írás nem elég. Az olvasás felfed új írói stílusokat, kifejezéseket, formákat és műfajokat. Ezeket viszont gyakorolni is kell. Gyakorlás nélkül semmi sem lesz tökéletes. Az olvasás segít a szükséges szóbőség, szókincs létrejöttéhez, ami könnyebbé teszi az írást és segít abban is, hogy a megfelelő kifejezéseket használjuk a gondolataink átadására. A jó vagy a rossz szövegek olvasása példát mutat, hogy hogyan írhatunk jól, és melyek azok a hibák amelyeket semmiképp ne kövessünk el. A rendszeres olvasás befolyásolhatja az író stílusát, ízlését és ötleteit. Az, hogy a jó olvasókból lesznek az írok egy nagyon logikus kijelentés, hiszen egy író sem kezdett el írni anélkül, hogy előtte ne olvasott volna, ahogy egy művész sem kezd el alkotni, anélkül, hogy előtte ne látott volna egy művészi alkotást. Így nem lett volna ihlet forrásuk, hogy elkezdjék. Ahhoz, hogy valamihez hozzáfogjunk, vagy valami megtetsszen, általában először valahol találkoznunk kell vele.
5
Olvasás-javító technikák Az olvasás egy készség, amit meg lehet tanulni, meg kell tanulni. Része a mindennapi életünknek és fontos része a fejlődésnek, tanulásnak. Könnyű azt hinni, hogy ha egyszer megtanultuk, akkor többet nem kell fejleszteni, gyakorolni ezt a készséget. Ha tudunk olvasni, de nem olvasunk könyveket az olyan, hogy birtokolunk egy teniszütőt, de nem használjuk, csak hagyjuk porosodni a szekrényben, vagy elkészítünk egy szendvicset és aztán meg kidobjuk, mert nem esszük meg. Sokat kell olvasni. Mint bármilyen más készséget, ezt is gyakorolni kell. A legjobb olvasók (és gyakran a legjobb írok is) azokból lesznek, akik nagyon sokat olvasnak. Így egy idő után észreveszik a visszatérő szimbólumokat, témákat. Ugyanakkor figyelmes olvasónak kell lenni, mert egy nagyon hosszú szövegben nagyon könnyen át lehet siklani az apróságokon, amelyek később fontosak lehetnek. Ahhoz, hogy valaki jó olvasóvá válhasson többféle műfajú, stílusú szövegekből ajánlott válogatnia. Ez fölöslegesnek tűnhet, annak, aki tudja, hogy melyik a kedvenc műfaja, de minden műfaj, stílus más. Újdonságot nyújthat: új élményeket, tapasztalatokat, ismereteket, kihívásokat. Akár meghozhatja a kedvet is az újításokra, újdonságok kipróbálására. Az által, hogy olvasunk, javíthatunk nyelvtudásunkon is akár anyanyelvű, akár idegen nyelvű szöveget olvasunk. Ehhez viszont szükséges, hogy azokat a szavakat, kifejezéseket, amelyeket nem értünk keressük meg, nézzünk utána, hogy mi mit jelent. Az olvasás által bővíthetjük a szókincsünket is. Ha valaki egy idegen nyelvet kezd el 2. ábra – ABC [8]
tanulni mindenképp fontos, hogy olvasson, mert csak így tanulhatja meg a nyelv szavait, kifejezéseit és, hogy
mit
kontextusban
milyen
helyzetben,
használjon.
Ez
ugyanúgy érvényes az anyanyelvű szövegekre is. Az olvasónak meg kell szoknia, hogy ne egyből reagáljon arra, amit olvas, hanem egyszer álljon meg és gondolja végig egy kicsit és csak ez
6
után reagáljon. Ez a mai embernek furcsa, nehézkes lehet, hiszen ebben a világban minden rohan, próbálunk mindenre azonnal reagálni, ami jó, de nagyon gyakran nem állunk meg először és gondolkodunk el a sokatmondó, meglepő vagy zavaró részleteken. Az olvasott szöveg tanítása, másokkal való megosztása, megbeszélése, vagy csak egyszerűen a hangos olvasás jó módszer a mélyebb szövegértés elsajátításához. A hangos olvasás egy gyakori módszer az olvasási technikák javítására. Amikor a gyerek elkezd olvasni tanulni előbb hangokat, betűket tanul meg. Ezekből építi fel lassan a szavakat. Ebben a kezdeti időszakban fontos a hangos olvasás, mert ez a vizuális dekódolás folyamata, amely a jel-betű és beszédhang megfeleltetése. Ha ez a rész már be van gyakorolva, akkor lassacskán a szimbólumhoz jelentés is rendelődik. A valódi olvasás akkor következik be amikor a vizuális dekódolás folyamata automatikussá válik és a figyelem a jelentésre koncentrálódik a kezdetektől. [5] A hangos olvasáskor kevesebb hibát vetnek a gyerekek, mint néma olvasáskor, mert ilyenkor kijavíthatják őket. Egy jelentés megkülönböztető szereppel bíró hang, betű megváltoztatja a szó jelentését (pl. serényszerény). Ezt néma olvasáskor nem veszi észre a gyerek és így az értelme az olvasott mondatnak megváltozhat. A gyakorlott olvasó képes a tudatos javításra. Ez egy másik fontos tényező: a gyakorlottság, ami csak a rendszeres olvasással érhető el. Minden nap szükséges foglalkozni vele, egy keveset, ne maradjanak ki nagy időközök, mert sokkal könnyebb olyan dolgokat megjegyezni, amelyek részei a mindennapi életünknek.
7
Kód olvasás Sokan úgy gondolhatják, hogy egy kódot (számítógépes programot) olvasni nagy ördöngösség, hogy teljesen más, mint egy irodalmi szöveget olvasni. Azt szeretném bebizonyítani, hogy azok az alapok és technikák, amelyeket még kisiskolás korunktól elkezdünk tanulni és amelyek segítségével értőn tudunk olvasni, felhasználhatók a programozás területén is. Vegyük sorra: miből is áll egy szöveg? Betűkből, szavakból, kifejezésekből, mondatokból, bekezdésekből, fejezetekből, stb. A szavak a mondatokat alkotnak, a mondatok a bekezdéseket, a bekezdések a fejezeteket, stb. Ugyanakkor egy szöveget nem csak elolvasni kell, hanem meg is kell érteni, tudni kell, hogy mi áll a szavak mögött, milyen értelemmel bír. Vegyük példának a „nő” szót. Ez ha igeként szerepel, akkor „egy élő szervezetet” jelent ami „fejlődik”, „nagyobbodik”: pl. Az ágyásban nőnek a palánták. Ha főnévként szerepel, az „nőnemű felnőtt személyt” jelent: pl. Nemrég egy nő ült be a taxiba. Függ a kontextustól. Ha csak így látjuk leírva, hogy „nő” és semmi más nincs mellette, ebből nincs honnan tudjuk, hogy most melyik értelmére is gondoljunk. De egy kifejezés értelme, függhet egy egész bekezdéstől. Miből áll egy számítógépes program? Karakterekből (betűkből és speciális jelekből), kulcsszavakból (pl. a scanf azt a gondolatot közvetíti, hogy adat-beolvasás a standard inputról, ami rendszerint a billentyűzet). Vannak utasítások (kifejezések, tömör mondatok), pl. a scanf(”%i”, &n) jelentése egy egész szám beolvasása a billentyűzetről az n nevű memória tárolóba. Sőt beszélhetünk összetett utasításokról is (összetett mondatok) pl. for (i=0; i
8
Ha ilyen formában hasonlítjuk az irodalmi szövegekhez, így minden adott. Tudjuk, hogy karakterekből, szimbólumokból állnak. El tudjuk olvasni őket, ha még a jelentése nem is igazán tisztázott. Amikor olvasni tanítják a gyerekeket nem dobják rögtön a mély vízbe őket. Előbb egyszerűbb szövegekkel kezdik, rövid szavakkal, amelyeknek a megértése nem nehéz, majd fokozatosan haladnak előre. Ugyanez érvényes a programozásban is. Egy kezdőnek nem adnak oda egy több száz soros, bonyolult programkódot, hogy elmondja, csak a kód alapján, hogy mit csinál. Előbb egy rövid, pár soros kóddal kell kezdeni, amiben máris benne van pár alapkifejezés, utasítás és ha ezeket már megértette és átlátta, utána lehet fokozatosan előre haladni. Hasonlóság az irodalmi szövegekhez az is, hogy mennyire fontos a szöveg elrendezése. Egy tagolatlan, csúnyán elhelyezett szöveg nem átlátható és nehezen követhető, arról nem is beszélve, hogy az olvasása is kellemetlen. Egy másik hasonlóság, hogy egy jó író találó neveket ad a szereplőinek, olyat, ami máris mesél róla. Egy jó kódban a változók, meg a függvények nevei szintén beszélőek kell legyenek,
amiről
rá
tudunk
jönni,
hogy
mit
is
fednek,
pl.
alkalmazott.getSzuletesiEv.toString(). Ahogy az irodalomban vannak szinonimák - pl. diák nebuló, növendék, iskolás, tanítvány, tanonc, hallgató mind ugyanazt jelenti, de azért van egy kis eltérés a jelentésükben ugyanígy van a programozásban is. Egy dolgot többféleképpen leírhatunk és ez csakis a programozó stílusától függ,
a „kontextustól”, meg persze attól, hogy pontosan mi is a
feladat. Például egy állományból való beolvasást az állomány végéig így is elvégezhetünk ugyanabban a programozási nyelvben:
3. ábra - Az uráli nyelvcsalád fája [6]
for( ; ; ){ scanf("%i", &c); if (feof) break; .... }, és így is: while(!feof(be)){ ... scanf("%i", &c);} meg így is: while ( (scanf("%i", &c)) != EOF) { ..... } 9
Egy másik hasonlóság, hogy több nyelv létezik. Ahogy van angol, román, finn, német, magyar, kínai nyelv, így a programozás terén is van C, Java, C++, Pascal, Java Script, Php, stb. A nyelvek bizonyos nyelvcsaládokhoz tartoznak, nyelvtörténetileg bizonyítottan avagy feltételezhetően egyetlen közös őstől származnak. A nyelvcsaládokon belül ezen kívül meg lehet különböztetni kisebb csoportokat is, amelyekbe az egymáshoz leginkább közel álló nyelveket sorolják a nyelvcsalád más tagjaihoz/csoportjaihoz képest. [10] Minden nyelvnél változások figyelhetők meg, az évszázadok során sokat egyszerűsödtek, de egyben bővültek is, hiszen a világ fejlődésével újabb és újabb szavakra van szükség. Ugyanígy a programozási nyelveket is csoportosítani lehet és megvannak a sajátosságaik, a közös ősük. Az első programozási nyelv a gépi kód volt. Ennek a nyelvnek az utasításait a számítógép képes volt közvetlenül, minden átalakítás nélkül végrehajtani, értelmezni. [11] Ugyanahhoz a nyelvcsaládhoz tartozó nyelvek könnyebben megtanulhatók pl. aki már tud olaszul, az könnyen elsajátíthatja a spanyolt is, mert nagyon hasonlóan épül fel, ha viszont pl. magyarul kéne megtanuljon, az már nehezebben menne, mert a magyar nyelv már másképp épül fel, mint a már említett újlatin nyelvek. Ugyanígy a programozás terén is, az azonos kategóriába tartozó nyelvekben vannak hasonlóságok. Például a Java és a C++ programozási nyelvek. Mindkettő ugyanabba a kategóriába tartozik, így maga a kódolási elvük nagyon hasonló.
4. ábra - A programozási nyelvek [7]
10
Javasolt kód olvasás javító technikák A programozás terén nagyon hasznos a nyelvtudás, főleg az angol nyelvtudás, mivel az utasítások nevei nagyon beszélőek, pl. a C nyelvben scanf - a scan szó vizsgál, letapogat -ot jelent, vagyis „letapogat”, beolvas pl. egy karakterláncot vagy számot, vagy printf –print, ami nyomtat, kinyomtat -ot jelent, vagyis „kinyomtatunk”, kiírunk egy szöveget. Egy másik példa a Java-ban, ahol rengeteg beépített függvény van az „add” függvény, hozzáad, vagyis hozzáadunk egy tárolóhoz egy újabb elemet. Így nyelvtudásunkat, nyelvérzékünket felhasználhatjuk a programozás területén is. Ha egy programkódot olvasunk, ha nem is ismerjük az utasítást, mert több száz előre megírt utasítás, beépített függvény található, ami megkönnyíti a programozónak a kód írását, kis nyelvtudással ki tudjuk következtetni, hogy mit csinál. Minden szöveget másként kell olvasni. Máshogy olvasunk egy számunkra izgalmas regényt és egy matematikai szöveges feladatot. A szövegértés azt jelenti, hogy megértettük a részleteket és azok összefüggéseit, így birtokba vettük a szöveget. [2] A programkódok ugyanúgy szövegek, csak tudni kell olvasni őket és ugyanúgy többféleképpen lehet olvasni őket. Van amikor azért olvassuk, hogy átlássuk mit csinál, mert bele kell illesztenünk új elemeket, van amikor azért, hogy egy elemét felhasználjuk a saját kódunkba, ilyenkor főleg arra a részletre fektetjük a hangsúlyt, hogy az mit csinál és nem tanulmányozzuk az egészet a-tól z-ig, ha nem muszáj. Vannak kulcsszavak, amiket ugyanúgy meg kell találni, mint az irodalmi, hétköznapi szövegekben,
ezzel
segítve
a
megértést.
Ha
ezek
megvannak,
akkor
ezekből
kulcskifejezéseket kell felépíteni, ezzel is egy lépést téve az értelmes olvasás felé, eltávolodva a nyers, felületes olvasástól. Meg kell találni az összefüggéseket. Figyelmesnek kell lenni és nem szabad átsiklani a részleteken, a jelentéktelennek tűnő apróságokon. Ezek később fontosak lehetnek, főleg mikor a végén át kell látni, hogy mi is a lényege az olvasott kódnak. Ezek az apróságok akár értelem módosító szereppel is bírhatnak. Itt van az előbb már felírt példa: for (i=0; i
11
for (i=0; i
%i \n" , szjo); } Majd, ahogy tovább tekintünk még több lényeges dolgot fedezünk fel: int i, szam, n, szjo; printf("Adja meg n-t: "); scanf("%i", &n); for(i=0; i
printf(" %i " , szam); while(szam){ szjo+=szam%10; szam/=10; } printf(" -> %i \n" , szjo);} Végül összeáll teljesen a kép: int i, szam, n, szjo; printf("Adja meg n-t: "); scanf("%i", &n); for(i=0; i %i \n" , szjo); } A kód olvasása és közös elemzése egy olyan módszer, amit tanórákon is használnak. Közösen beszélik meg a diákok a tanárral a helyességét vagy éppen helytelenségét, a helytelenség okait és azt is, hogy lehetne helyes, jobb vagy hatékonyabb az éppen elemzésre került számítógépes kódrészlet. Így a diákok szintén egyfajta tapasztalatot szereznek, mert „belelátnak a többiek fejébe” és a gondolkodásmódjukat is követhetik, ami külön –külön a diákok gondolkodásmódján is javíthat. Irodalom órán is a diákok a tanárral együtt közösen megbeszélik az elolvasott szöveget, elemzik, megpróbálják a lényegtelen elemeit lebontva a lényeget megérteni. Annak, hogy mások „írását” is látjuk nagy hasznát fogjuk venni a későbbiekben is. Mert így hozzászokunk a különböző stílusokhoz és nem fog nagyon nagy gondot okozni más program kódjában való kiigazodás, amire elég gyakran van szükség, tekintve, hogy egy munkahelyen, egy cégnél egy számítógépes programot (szoftvert) többen is írnak és fennáll az a lehetőség, hogy egy másik személy által megírt kódba kell beleilleszteni új elemeket, vagy kell javítani rajta és ahhoz, hogy ez sikerüljön ezt a kódot előbb át kell látni. 13
Szinte biztos, hogy a kód olvasásról nagyon kevés programozónak van pozitív véleménye, mert egy létező kód olvasása és megértése az egyik legunalmasabb dolognak tekinthető, ugyanakkor az egyik leghasznosabbnak is. De ez nem gond egészen addig, amíg nem gátol meg abban, hogy létező kódokat olvassunk, mert ha meggátol, akkor az egyik legfontosabb és leghasznosabb gyakorlási módszertől eshetünk el. Idegen kódok olvasásának a megértésében még segítenek a magyarázatok is, amiket a programozó írogat a kódjába. Ez a lábléc egy irodalmi szövegben. Egy programkód olvasása, főleg egy kezdő, gyakorlatlan szemnek nem egyszerű, ide tényleg szükséges az értő olvasás és a rengeteg gyakorlás. De a nehézség ellenére tényleg az egyik legfontosabb tanulási módszer. Egy programozónak még a saját kódjában is nehéz lehet kiigazodni, ha azt nem látja el magyarázatokkal írás közben. A jó magyarázatok pedig nem azt írják le, hogy mit csinál egy bizonyos rész, hanem hogy mért így csinálja. Lehet, hogy akkor, amikor íródik a kód minden tiszta és világos, de pár hónap múlva biztos nem lesz az.
14
Hatékony kód olvasás kamatoztatása a kód írásban Ha valaki író akar lenni, akkor előbb elolvas több száz regényt és csak utána fog tudni írni egy jó művet. Ugyanígy, ha egy jó programkódot akarunk írni, előbb jó párat látnunk kell. Hasonlítási alap nélkül honnan tudjuk, hogy az amit írtunk jó–e vagy csak egyszerűen milyen kell legyen egy jó kód? Egy olvasó számára, főleg ha tudását írásra is használja, nagyon építő jellegű lehet más írók szövegeinek az olvasása. Ugyanez érvényes a programozás terén is. Az csak egy része a programozási nyelvek tanításának, hogy megtanítják, hogy mi mit jelent, hogy használjuk, meg magunk próbálunk meg előbb egyszerűbb, majd egyre összetettebb kódokat írni. Egy másik része a különböző kódok olvasása. Azzal,
hogy
különböző
kódokat
„olvasunk”,
sokat
tanulhatunk.
Minden
programozónak más és más stílusa van, ahogy az irodalomban is, minden író más és más stílusban ír. Ezáltal nem csak egy megoldási módszert fogunk ismerni, hanem rájövünk, hogy ez így is meg így is lehetséges és lehet, hogy hatékonyabb is. Látunk jó vagy rossz megoldásokat, amelyeket fel tudunk használni később, vagy éppen megtanuljuk, hogy mit ne használjunk, mert hibás lesz. Ehhez társul még az a fontos rész, hogy amit már láttunk és megértettünk megpróbáljuk leírni, mert így még kisebb az esélye, hogy átsiklunk valami apróságon. Egy lényeges hasonlóság a programkód és az irodalmi szöveg írása között, hogy nem feltétlenül kell feltalálni a spanyolviaszt, egyszerűen tudni kell használni azt ami adott. Egy író mikor elkezd írni, nem teljesen új szavakat talál ki és használ, hanem a meglévőket alakítja, formálja, használja úgy, hogy a legmegfelelőbben tudja átadni a gondolatait. Ugyanígy a programozás terén sem kell minden egyes alkalommal teljesen új utasításokat, programrészeket írni, „kitalálni”, mert használhatjuk a meglévőket alakítva, formálva az adott szükségletekre, ezekből építhetjük fel a programkódot és a meglévő kódokat átalakítva beépíthetik a sajátunkba. Azzal, hogy látjuk mások kódjait megtanuljuk azt is, hogy hogyan helyezzük el a programkódot, ahhoz, hogy könnyebben átlátható legyen. Azzal, hogy utánanézünk különböző kódoknak és akár felhasználjuk a saját programunkban is, egyrészt az újdonságokat is megtanuljuk, másrészt a programozás egyike az olyan szakmáknak, ahol folyamatosan tanulni kell és folyamatosan fejlődni, mert mindig változtatnak és újítanak rajta. Muszáj lépést tartani a fejlődéssel.
15
Mielőtt egy író elkezd írni, előbb végiggondolja, hogy miről is szeretne írni, esetleg feljegyzi vázlatosan az éppen eszébe jutó gondolatokat. A fejében lassan kialakul maga a történet, amelyet már csak le kell írni. Amikor végül nekiáll az írásnak, akkor először úgy írja le a gondolatait, ahogy eszébe jutnak, hogy ezek a gondolatok ne felejtődjenek el. Később ez még nagy valószínűséggel párszor át lesz javítva. Esetleg kiegészítve, hogy jól érthető legyen és megfelelően következzenek a gondolatok. Erre azért lehet szükség, mert az írás folyamán lehet olyan gondolatok jutottak eszébe, amelyekhez szükséges a korábban megírt részek kiegészítése, hogy érthető legyen a történetvezetés. Egy programozó mielőtt elkezd programozni, előbb szintén végiggondolja a feladatot, megpróbálja megérteni, hogy mit is kell csinálnia. Esetleg lejegyzi, felvázolja, hogy később ezt fel tudja használni. Lassan kialakul a fejében egy elképzelés, ami a tényleges megvalósítás folyamán még változhat. Mikor ténylegesen nekiáll megvalósítani, akkor első körben leírja azokat a változókat, meg függvény neveket, amelyek első elképzelésre, a tervezési szakaszban eszébe jutottak. De ezek még sok változáson fognak átesni. Menet közben lehet rájönni, hogy mire lesz szükségünk még. A megvalósítás során olyan helyzetekbe ütközhetünk, amik a korábban leírt dolgok megváltoztatását igényelhetik. Így a kód is rengeteg javításon, átszerkesztésen fog átesni amíg végleges formáját el nem nyeri. Ha előbb kicsit belenézünk más hasonló jellegű programkódba, jól átbogarásszuk őket, akkor nagyobb eséllyel vétünk kevesebb hibát az írás során, mert lesz egy kiindulási pontunk és könnyebben át tudjuk látni az alapokat és könnyebben el lehet indulni így. Ez megint egy hasznos tulajdonsága a kódolvasásnak. Ha egyszer hatékonyan megtanultunk kódot olvasni, az nem feltétlenül jelenti azt is, hogy egyből jó programozók is leszünk. Ehhez nagyon-nagyon sokat (és még annál is többet) kell gyakorolni. Ebből nyugodtan lehetne kérdezni azt is, hogy mennyi az a sok? Vagy, hogy mennyit kell olvassunk, ahhoz, hogy amit olvastunk a kódolásban is fel tudjuk használni? Erre megint az a válasz, hogy sokat. Ez személyenként váltózik. Van akinek egy bizonyos dolog elsajátítása nagyon kevés időt vesz igénybe és egykettőre megtanulja, de van akinek ez hosszabb ideig tart. Ebben az esetben, ahogy az irodalomban is, nem az időn van a lényeg, hanem a minőségen és a mennyiségen. Minél több, minél jobb szöveget/kódot kell olvasni, hogy legyen egy mércénk, hogy tudjuk mi a jó és megpróbáljuk ezt a mércét mi is megütni, de ez csak szorgalommal és kitartással érhető el.
16
Kísérleti mérések, eredmények Egy kérdőívet küldtem ki és kértem meg, hogy töltsék ki olyan személyek, akik tanultak vagy jelenleg is tanulnak programozni. A kérdőívben a következő kérdéseket tettem fel: 1. Mikor tanult programozni? 2. Órán elemeztek-e vagy olvastak-e együtt egy tanár által felírt programkódot? 3. Milyen gyakran tették ezt? 4. Mennyire találja hasznosnak, hogy egyetemen közösen megbeszéljenek felírt kódokat? 5. Miért találja/nem találja hasznosnak? 6. Ön szerint hogyan lehet valakiből jó programozó? 7. Mennyire szeret ön kódot olvasni? 8. Szokta-e ön az előzőleg megírt kódjait újraolvasni, mielőtt egy új munkának kezd neki, tudva, hogy olyan problémákba ütközhet, amelyre már talált megoldást? 9. Ön szerint mennyire járul hozzá egy programozó életében a kódolvasás ahhoz, hogy egy saját kódolvasási stílust fejlesszen ki? 10. Szokott ön programozó fórumokat, blogokat olvasni? 11. Általában mennyire találja hasznosnak már programozók kódjainak olvasását? 12. Szokott-e ön azért kódokat olvasni, hogy lássa mások hogyan gondolkodnak? 13. Milyen gyakran használja fel ön mások kódjait a saját programjaiba? A válaszadók nagy százaléka férfi volt: Nő 23 -26% Férfi 65 -74%
és a 19-23 éves korosztályhoz tartozott: 14-18 éves 1 -1% 19-23 éves 74 -84% 24-28 éves 13 -15% 29 -33 éves 0 -0%
17
Arra a kérdésre, hogy mikor tanult programozni? A legtöbben az egyetemet jelölték be és a 9-12. osztályt (ebben az esetben több választási lehetőség is megengedett volt). 5-8. osztály 3 -2% 9-12. osztály 64 -45% Egyetem 70 -49% Egyéb 5 -4%
A következő kérdésben arra voltam kíváncsi, hogy olvastak-e együtt egy tanár által felírt programkódot. Igen 84 -95% Nem 4 -5%
A következő kérdésemből kiderült, hogy a legtöbben hetente gyakorolták ezt. Minden órán 20 -23% Hetente 53 -60% Havonta 6 -7% Ritkán 7 -8% Soha 2 -2% Arra a kérdésre, hogy: „Mennyire találják hasznosnak, hogy iskolában, egyetemen közösen megbeszéljék a felírt kódokat” a legtöbb válasz a „nagyon” volt. Nagyon 47 -53% Eléggé 38 -43% Nem igazán 1 -1% Egyáltalán 2 -2%
Miért találja/nem találja hasznosnak? Erre a kérdésre a válaszok nagyjából egybe hangzanak. A válaszadók úgy gondolják, hogy azért hasznos, mert ezáltal jobban megérthető/tanulható egy programozási nyelv, segít megérteni a program logikáját, a kódok működését, lehet tanulni a tapasztaltabbaktól és egy jó minta is egyben. Azért is hasznosnak találják, mert gyakori, hogy más munkáját kell tovább fejleszteni és akkor sokat számít, hogy mennyire tudjuk értelmezni a kódot. A következő kérdésre is szinte mind egybehangzanak a válaszok! Úgy véli általában
18
mindenki, hogy valakiből úgy lehet jó programozó, ha rendszeresen és sokat gyakorol. Egy másik fontos tényező, hogy nem szabad feladni, hogy tudj lépést tartani és tudd használni az újdonságokat és persze szeretni is kell, amit csinálunk. Ezek után arra voltam kíváncsi, hogy ki mennyire szeret kódot olvasni? 1 6 -7% 2 13 -15% 3 42 -49% 4 21 -24% 5 4 -5%
A válaszok alapján nagyjából közepes szinten szeretik a kódolvasást. Szokta-e ön az előzőleg megírt kódjait újraolvasni, mielőtt egy új munkának kezd neki, tudva, hogy olyan problémákba ütközhet, amelyre már talált megoldást? Erre a kérdésre a legtöbb válasz néha volt. Igen 31 -36% Néha 47 -55% Nem 8 -9%
A legtöbben úgy gondolják, hogy a programozó életében eléggé hozzá járul a kódolvasás ahhoz, hogy egy saját stílust fejlesszen ki? Nagyon 16 -19% Eléggé 59 -69% Kevésbé 10 -12% Egyáltalán 1 -1%
A válaszadók általában szoktak programozó fórumokat, blogokat olvasni. Igen 38 -44% Általában igen 15 -17% Nagyon ritkán 25 -29% Nem 8 -9%
Ugyanúgy mint az előző kérdésnél, általában hasznosnak találják más programozók kódjainak olvasását.
19
Nagyon 31 -36% Eléggé 45 -52% Nem igazán 8 -9% Egyáltalán 2 -2%
Szokott-e ön azért kódokat olvasni, hogy lássa mások hogyan gondolkodnak? Erre a a kérdésre néha volt a leggyakoribb válasz. Igen 31 -36% Néha 42 -49% Nem 13 -15%
A legutolsó kérdésben pedig arról érdeklődtem, hogy ki mennyire gyakran használja fel mások kódjait a saját programjaiban? 1 1 -1% 2 16 -19% 3 34 -40% 4 32 -37% 5 3 -3%
A kérdőívet kitöltök nagy része pozitív véleménnyel van kódolvasásról, ami szintén a dolgozatban leírtakat támasztja alá. A különböző programkódok olvasása jó hatással van a programozók stílusára és fejlődésére. Nagyon gyakran felhasználják mások kódjait, mert így könnyebb, hiszen olyan problémákra találhatnak megoldást, amire valószínűleg másképp nem jöttek volna rá, vagy csak nagyon lassan.
Csak kitartással, türelemmel és rengeteg belefektetett munkával
érhetjük el, hogy valamiben jó eredményeket tudjunk felmutatni. Ez alapján, ha valaki jó programozóvá akar válni, vagy csak egyszerűen az az álma, hogy ő egy jó író legyen, akkor azért tennie is kell. Fejlesztenie kell magát és mivel az olvasás és az írás kéz a kézben jár, így a jó íróvá válás (bármilyen téren) automatikusan maga után vonja azt is, hogy előbb jobb olvasóvá váljunk. Azért kezdjük azzal tanulmányainkat, hogy megtanulunk olvasni és vele párhuzamosan írni is, mert ez a tudás végig fog kísérni és segíteni fog életünk során, e nélkül a társadalomban igencsak el lennénk vesztődve. Ha egyszer ezt megtanultuk, akkor azt is 20
tanuljuk meg, hogy hogyan formálhatjuk ezt a mi saját igényeinkre: ha egyszer tudunk hatékonyan olvasni egy irodalmi szöveget, akkor ezt a tudást felhasználhatjuk arra is, hogy hatékonyan programkódokat is megtanuljunk olvasni, csak az elveket kell átültetni. Úgy gondolom, hogy az iskolában, egyetemen nagyobb hangsúlyt kellene fektessenek a tanárok a kód olvasásra és a fontosságának hangsúlyozására és gyakorlására. A diákok csak így érezhetik a fontosságát és láthatják be, hogy milyen sokat tanulhatnak belőle, hiszen új módszerekkel ismerkedhetnek meg és többféle megoldási lehetőséget értenek meg, amit a későbbiekben használhatnak. A dolgozat megírásával az volt a célom, hogy rávilágítsak, hogy olyan tevékenységek, mint pl. az olvasás mennyire fontos tényező a tanulás során, a fejlődésben és bármilyen szakterületen hasznát vesszük. Azt szerettem volna bemutatni, hogy a szépirodalmi szövegek olvasásakor használt technikák felhasználhatóak más területen is (mint pl. a programozás) és nagyon is hasznosak.
21
Irodalomjegyzék: [1] Gósy Mária. A szövegértő olvasás. 2008 . http://www.anyanyelvpedagogia.hu/cikkek.php?id=25 [2] Szövegértő olvasás. http://hu.wikipedia.org/wiki/Sz%C3%B6veg%C3%A9rt %C5%91_olvas%C3%A1s [3] Dr. Ceglédi István. Kompetencialapú matematikaoktatás- Értő olvasásra való képesség. 2011. http://www.tankonyvtar.hu/hu/tartalom/tamop425/0038_matematika_Cegledi2/ch01s3html [4] Dr. Antal Sándor. Szövegértés és szövegértő olvasás. 2010. http://extensii.ubbcluj.ro/odorheiusec/tanulutmutat-tav/4%20felev/Szovert%20TAV %202010.pdf [5] A hangos olvasás fontossága. 2014. http://akupaktanacs.wordpress.com/2014/02/16/hangos-olvasas-fontossaga/ [6] 3. ábra. Az uráli nyelvcsalád fája. http://szelence.fw.hu/tananyag/nyelvtan/nyelvunkelete.html [7] 4. ábra. A programozási nyelvek http://kvbkr.blogspot.ro/2008/08/history-and-evolutionof-programming.html [8] 2. ábra .ABC. http://tanulokartya.hu/magyarabcnagybetuk [9] 1. ábra. Olvasás. http://www.outsidethebeltway.com/reading_the_bill_is_a_waste_of_time/read/ [10] Nyelvcsalád. http://hu.wikipedia.org/wiki/Nyelvcsal%C3%A1d [11] Szabó Mária. Programozás - Strúktúrált programozás a gyakorlatban. http://www.kepzesevolucioja.hu/dmdocuments/4ap/7_1155_018_100915.pdf
22