51. évfolyam, 2005. 2. szám
Archívum

A programozás oktatása
a könyvtárosképzésben,
avagy most jön a Java?

ISZÁLY György Barna

A miértre vonatkozó kérdés hibás.
Sokkal inkább azt kellene kérdeznünk:
miért ne?

George Bernard Shaw

 

 

 

Mai világunkban a könyvtár elképzelhetetlen számítógépek nélkül. Számítógépek tárolják a könyvtári nyilvántartásokat, segítségükkel vagyunk képesek gyorsan és hatékonyan megtalálni a dokumentumokat az állományokban. Az elektronikus levelezés segítségével egyszerűbbé és gyorsabbá vált a  könyvtárközi kölcsönzés, az internet segítségével pedig a tájékoztatás.

A  Debreceni Egyetem Komptergrafikai és Könyvtárinformatikai  tanszékén a  könyvtárosok új  generációjának képzésében kezdettől fogva nagy hangsúlyt fordítottunk az informatikai tantárgyak tanítására. A képzésnek szerves tantárgyi része  a programozás, amit a hallgatók két félévig tanulnak és valamelyik magas szintű programozási nyelvvel ismerkednek meg.

Ma már a könyvtárosok többségének nem okoz gondot a felhasználói programok hatékony kezelése, de azt már kevesebben tudják, hogy milyen folyamatok zajlanak a számítógépben a programok futása alatt, vagy hogy milyen úton-módon lehet ilyen programokat készíteni. Felmerülhet persze a kérdés, hogy kell-e egyáltalán ezt egy könyvtárosnak tudnia?

Könnyen azt válaszolnánk, hogy nem, hiszen a könyvtárosok nem szorulnak rá,  hogy programokat írjanak, mert arra ott vannak a programozók! De valóban így van ez?

Ha jobban megvizsgáljuk a kérdést, rá fogunk jönni, hogy nem egészen. Mai világunkban a könyvtár jövője attól is függ, hogy mennyire tudja kihasználni az internet nyújtotta lehetőségeket. Ehhez viszont a könyvtárosoknak ismerniük kell a weblapszerkesztés technikáját és képesnek kell lenniük a webes felületek programozására is. Ez már a modern kor kihívása, hiszen ahhoz, hogy a könyvtár megtartsa a kultúrában elfoglalt  pozícióját, jelen kell lennie a technikai legújabb területein is. Ugyanakkor  a könyvtárak a jelenlegi finanszírozási rendszer mellett egyre kevésbé képesek megfizetni a programozók munkáját, így lassan rákényszerülnek arra, hogy a kisebb problémákat, egyszerűbb programozási feladatokat saját maguk oldják meg. Természetesen a nagy rendszerprogramok írásánál elkerülhetetlen a profi programozók segítsége, de ebben az esetben is hasznosak lehetnek a programozási ismeretek, mert a könyvtárosok képesek lesznek hatékony, partneri segítséget nyújtani a rendszerek fejlesztésében.

Tehát a programozási ismeretekre szükség van a könyvtárosok képzésében. Most már csak az a kérdés, hogy mit oktassunk a leendő könyvtárosoknak? Milyen programozási nyelvvel érdemes megismertetni őket?

Több programozási nyelv közül választhatunk, ami a probléma forrását is jelenti, mert nehéz eldönteni, melyik is az ideális. Írásomban ehhez a döntéshez próbálok  segítséget nyújtani, felhasználva programozási ismereteimet és több éves oktatói tapasztalatomat.

Mivel a magas színtű programozási nyelvek utasításai állnak legközelebb az emberi nyelvhez és gondolkozásunkhoz, ezért ezek oktatását tartom a legcélravezetőbbnek. Ezek közül azokat érdemes vizsgálat alá venni, amelyeket a mai számítógépes platformok is támogatnak, és amelyeket ma is széles körben használnak.

Tapasztalataim szerint három olyan magas színtű programozási nyelvet oktatnak jelenleg a felsőoktatásban, melyekkel érdemes foglalkozni.1 Ezek: a Pascal, a C és a mai időkben egyre népszerűbb Java. Nézzük meg  ezen programozási nyelvek jellemzőit, előnyeit, hátrányait és az oktatásban való felhasználhatóságukat.

Pascal

Az egyik legrégebbi és legismertebb programozási nyelv a Pascal. Mivel parancsszavai az angol nyelv szavaival egyeznek meg, ezért már minimális angol nyelvtudással is jól lehet vele boldogulni. Szintakszisa gyorsan és könnyen elsajátítható, és nagy előnye, hogy viszonylag gyorsan lehet vele látványos sikereket elérni, ami a hallgatókat motiválja. Minden tekintetben alkalmas a programozás alapfogalmainak - mint például a változó, a vezérlési szerkezetek, a ciklusok, az egyszerű és összetett adattípusok, a függvények és eljárások - elsajátítására.

A Pascal programok felépítése kötött, de ebből adódóan jól áttekinthető, mint ahogy ezt a következő oldalon található példán láthatjuk is. A deklarációs részben kell definiálnunk azokat a programozási objektumokat - konstansokat, változókat, típusokat, eljárásokat és függvényeket -, amelyeket a programban fel szeretnénk használni, a végrehajtási részben szereplő utasítások pedig a program futtatása során fognak végrehajtódni.

Komolyabb nehézséget a hallgatók számára talán csak a memóriakezelés jelenthet, melynek használata bizonyos esetekben igen körülményes2 .  Problémás lehet még a megírható programok és az egyszerre kezelt memória méretének egységes 64 Kbájtos korlátozása.3 Legnagyobb hátránya azonban az, hogy bár mind a Unix/Linux, mind a Windows operációs rendszerhez készült Pascal fordító, mégsem igazán elterjedt a használatuk. 4

Összefoglalva tehát, a Pascal programnyelv jól alkalmazható a programozás kezdő lépéseinek elsajátítására, s nagy előnye, hogy integrált fejlesztői környezettel is rendelkezik, és szinte bármilyen konfigurációjú PC-n kielégítően működik. Hátránya azonban, hogy a bonyolultabb, Pascal nyelven írt programok az alapvetően szöveges felületkezelésből adódóan ma már nem igazán használhatóak fel és webes felhasználásuk sem támogatott.

C nyelv

Időrendben és bonyolultságban a következő nyelv, amelyiket érdemes megvizsgálnunk a C programozási nyelv. Hasonlóan a Pascal nyelvhez, parancsszavai egyszerű angol szavaknak felelnek meg. Szintaktikáját tekintve azonban a programok már jóval nehezebben értelmezhetőek, mivel a sok egyszerűsítés és összevonás miatt nehéz követni a programok felépítését. A programozás elsajátítására ez a nyelv is alkalmas, és az alapszintű programok írása itt is kiválóan megtanítható, de a C filozófiája igazából a memóriakezelésben és az ezzel járó mutatók 5 használatánál jelentkezik.

Mint azt a következő ábrán láthatjuk is, a C program struktúrája sokkal szabadabb felépítésű, mint a Pascal nyelvé, bár itt is minden programozási eszközt deklarálni kell. Fontos kikötés továbbá az, hogy egy "main" nevű függvényt kötelezően deklarálni kell, mert ez képezi a főprogramot. Az ebben található utasítások fognak végrehajtódni a program futása során.

A C programozási nyelv oktatásának alapvető nehézsége abból adódik, hogy a mutatók használatának - vagyis a memóriakezelésnek - elsajátítása nélkülözhetetlen a programok írásához, mivel a C nyelvben a problémák jelentős részét csak így érdemes megoldani. Ez viszont mélyebb számítógépes ismereteket, és a mutatók tökéletes megértését és pontos használatát igényli.

Összefoglalva tehát, a C nyelv segítségével is el lehet sajátítani az alapokat, de a bonyolultabb szintaktika miatt - főleg azoknál, akiknek ez az első programozási nyelv, amivel találkoznak - ez több nehézséget okoz. Előnye azonban, hogy ez a programozási nyelv is rendelkezik integrált fejlesztői környezettel, és bármilyen PC-n használható. Nagy előnye még, hogy a Unix/Linux operációs rendszer támogatja, így mind a PC-s, mind a nagygépes rendszerekben igen jól használható a későbbiekben is.

A Pascal és a C a struktúrált programozási nyelvek családjába tartoznak, ezért nem meglepő, hogy számos hasonlóságot fedezhetünk fel bennük. Bár ezen nyelvekben való programok írásánál más-más programozási filozófiát érdemes szem előtt tartani, ettől függetlenül mindkettő alkalmas a programozás alapjainak elsajátítására.

A hasonlóságot, és a különbséget rögtön észre is vehetjük a következő két példaprogram segítségével.

Mindkét program ugyanazt a feladatot látja el: mindaddig olvas be a billentyűzetről karaktereket és írja ki azokat a képernyőre, ameddig egy "i" betűt nem kap bemenetként a klaviatúráról. Mint ebből a két egyszerű programból is jól látszik, a C nyelv sokkal tömörebb programkóddal tudja megvalósítani ezt, mint a Pascal nyelv. Ennek előnye, hogy kisebb forráskódot kell leírnunk, viszont hátránya, hogy emiatt sok esetben jóval nehezebb értelmezni az így kapott kódot6 .

Java

A harmadik programozási nyelv, melyet vizsgálat alá veszünk, kicsit eltér az előbb tárgyaltaktól, ugyanis a Java  az objektumorientált programozási nyelvek világába vezet el minket. A három, oktatásban is jól használható  programozási nyelv közül ez tekinthető a   legbonyolultabbnak.

Szintaktikáját tekintve, szinte teljesen megegyezik a C nyelv alapfelépítésével7 , ami kiegészül az objektumorientáltság szükséges eszközeivel. Ez a nyelv is lehetőséget nyújt a programozás alapfogalmainak elsajátítására, hiszen rendelkezik minden olyan eszközzel, ami ehhez szükséges, de igazi jelentősége nem ebben rejlik. Bár alapszinten a szöveges képernyőkezelést is képes megvalósítani, de főként grafikus alkalmazások fejlesztése lehetséges vele, így igazi látványos sikereket csak nehezebben, több ismeret megszerzése után lehet vele elérni, mint a másik két nyelv segítségével. Nehézséget okozhat továbbá az objektumorientált programozás fogalmainak - mint az osztály, a példány, példányosítás, öröklődés, stb. - elsajátítása és készségszerű használata is.

Mint azt a következő ábrán láthatjuk, a Java program szerkezeti felépítése bonyolultabb az előző két nyelvhez viszonyítva, ami a nyelv objektumorientáltságából adódik.

Ezek alapján feltételezhető, hogy a korábban már C és Pascal nyelven megírt példaprogramot csak valamivel bonyolultabban lehet megvalósítani Java nyelven, a korábbi kettőhöz képest. Nézzük meg tehát, hogy néz ki a Java nyelvű forráskódunk:

Bár első látásra nem tűnik fel, de ennek az egyszerű programnak a megírásához - eltérően az előző két programozási nyelvtől - a Java nyelvben már bonyolultabb programozási eszközök alkalmazása is szükséges. Itt a billentyűzetről való beolvasáshoz már egy úgynevezett csatorna - System.in - szükséges, ami a Java-ban maga után vonja a beolvasási műveletekre alkalmazott kivételkezelést (IOException) is.

A Java programozási nyelv segítségével is elsajátíthatók a programozás alapjai, de kétségkívül ez a nyelv okozza a legnagyobb nehézséget a hallgatóknak. Ez leginkább az objektumorientált filozófia megértéséből és alkalmazásából adódik. A kezdeti nehézségek leküzdésében nagy segítséget nyújtanak a különböző integrált fejlesztő rendszerek8 , melyek sok szintaktikai és alapvető szemantikai hiba kiszűrését teszik lehetővé. A Java programozási nyelv platformfüggetlen9 , ezért mind a Unix/Linux, mind pedig a Windows operációs rendszer támogatja. A legnagyobb előnye azonban felhasználhatósága sokrétűségében rejlik, ugyanis a grafikus felületek programozása mellett lehetőséget nyújt webes felületek programozására is a Java Appletek segítségével. Szintén előnyt jelenthet az, hogy a JavaScript10 szintaktikája nagyon hasonló a Java nyelv szintaktikájához, így segítséget nyújthat annak alkalmazásában is.

Most akkor melyiket válasszuk?

A programnyelvek rövid bemutatása, ill. előnyeik, hátrányaik felvillantása után, jogosan várja el tőlem a tisztelt olvasó, hogy állást foglaljak valamelyik nyelv mellett. Ez azonban nem is olyan egyszerű feladat, hiszen mindegyik nyelv más és más tulajdonságokkal és lehetőségekkel bír.

Talán a legjobban oktatható a Pascal, de a leghatékonyabb programokat C-ben lehet írni, míg a Java a grafikus felületek és a webes alkalmazások miatt csábító. Hogy melyik az igazi, azt mindenkinek magának kell eldöntenie.

Mi, a Debreceni Egyetem Komputergrafikai és Könyvtárinformatikai tanszékén úgy döntöttünk, hogy megpróbáljuk a nehezebb utat, és a Java nyelv rejtelmeivel ismertetjük meg informatikus könyvtáros hallgatóinkat. Korábban a Pascal nyelvet oktattuk, mivel ez lehetőséget nyújtott nekik a programozási alapismeretek viszonylag könnyű és gyors elsajátítására, de örökös problémaként jelentkezett az a tagadhatatlan tény, hogy az így elsajátított tudást a hallgatók később a munkájuk során nem igazán tudták felhasználni. Ez a probléma a Java nyelv oktatására való áttéréssel megszűnt, hiszen ezt a programozási nyelvet minden platform támogatja, és így a hallgatók képesek lesznek hasznosítani tudásukat a mindennapi munkájukban is, bár kétségtelen, hogy ezért a tudásért sokkal komolyabban meg kell majd küzdeniük.

Döntésünk meghozatalában szerepet játszott a Java nyelv sokrétű felhasználási lehetősége. A fő hangsúlyt arra fektetjük, hogy a hallgatók a tanulmányaik elvégzése után képesek legyenek alapvető webes Java Applet alkalmazások írására, megteremtve így annak a lehetőségét, hogy a weblapszerkesztés tantárggyal kiegészítve, profi weboldalak kerülhessenek ki a kezeik közül . Tesszük ezt abból a megfontolásból, mert szerintünk a könyvtárak jövője attól is függ, hogy mennyire tudják kihasználni a számítástechnika és a hálózatok, legfőbbképpen az internet nyújtotta lehetőségeket. Emellett kitérünk az önálló, grafikus felületen futó alkalmazások készítésének lehetőségeire is,  a teljesség igénye nélkül.

Kísérleti jelleggel tavalyelőtt a nappali tagozat második évfolyamában már bevezettük  a Java nyelv oktatását, bár akkor még a Pascal nyelvvel párhuzamosan sajátították el a hallgatók a Java alapjait. Nem csoda hát, ha nehéz, azonban igen tanulságos évet zárhattunk a múlt év májusában. A jó eredményeken felbátorodva tavaly már kizárólag a Java nyelv oktatásával foglalkoztunk mind a nappali, mind pedig a levelező tagozaton.

Ez alatt a két év alatt tapasztalhattuk, hogy bár elméleti szinten nem okozott nagyobb problémát a hallgatóknak az objektumorientált programozási filozófia és a Java nyelv elemeinek elsajátítása, de az elmélet gyakorlati megvalósításában már jelentkeztek apróbb fennakadások, amiket végül is sikerült kiküszöbölni, így mindkét év végén mind az oktatók, mind pedig a hallgatók sikerélménnyel zárhatták az évet.

Úgy gondoljuk, hogy döntésünk, a Java nyelv oktatására való áttérésre, helyesnek bizonyult. Bár a Java nyelv oktatása jóval nagyobb kihívást jelent, kétségtelen, hogy így olyan tudást adhatunk növendékeik kezébe, amelyet későbbi munkájukban eredményesen hasznosítani tudnak. Munkánk során sok új tapasztalatra tettünk szert melyeket felhasználva igyekszünk oktatási tematikánkat továbbra is úgy fejleszteni, hogy hallgatóink mindig a kor elvárásainak megfelelő hasznos tudással hagyhassák el az egyetemet.

Irodalom

[1] ANGSTER Erzsébet: Objektumorientált tervezés és programozás - Java Martonvásár, 2002.
[2] BENKO Tiborné et.al.: Programozzunk Turbo Pascal nyelven! Bp., ComputerBooks, 1993.
[3] BENKO Tiborné et.al.: Programozzunk C nyelven! Bp., ComputerBooks, 1994.
[4] BODA István - JUHÁSZ István: Könyvtár-informaikai képzés a Kossuth Lajos Tudományegyetemen. In: Könyvtári figyelő,  7.  (43.) évf., 1997. 1 sz.  33-39. p.
[5] VÉGH Csaba, JUHÁSZ István: Java - start! Debrecen, Logos, 1999.

Jegyzetek

1. Számtalan magasszintű programozási nyelv létezik, mint például Fortran, Cobol, Ada, stb. de ezek legtöbbjét ma már nem, vagy csak igen szűk körben oktatják.
2. A korlátozott óraszám mellett nem is jut ezen részek ismertetésére idő.
3. Általában - a ritka kivételektől eltekintve - a hallgatók többsége nem szokta kihasználni ezeknek a méretbeli lehetőségeknek még a töredék részét sem.
4. A Pascal nyelven alapvetően a DOS operációs rendszeren futtatható programok fejleszthetőek. A Unix/Linux operációs rendszer alapvetően a C nyelvre épül, ezért azt támogatja. A Windows a grafikus felületkezelést támogatja, ami csak nehézkesen megoldható Pascalban, ezért hozták később létre a Delphi programozási nyelvet, amely a Pascal nyelvből kifejlődött objektumorientált nyelv.
5. A mutató olyan programozási objektum, amely egy másik programozási objektum memóriában elfoglalt helyének a címét tárolja.
6. Érdekességképpen jegyzem meg, hogy általában a forráskódból generált futtatható kód is jóval tömörebb szokott lenni a C nyelv esetében.
7. A Java nyelv a C++ nyelv leegyszerűsített változata.
8. Az egyik legismertebb talán a Java nyelven írt JavaBeans, amely a Java honlapjáról ingyenesen letölthető.
9. A fordítóprogram egy gépfüggetlen bájtkódot generál - class file -, amelyet a gép a Java Virtual Machine (JVM) segítségével futás közben értelmez.
10. A JavaScript alapvetően webes felületek programozására szolgál. A Netscape fejlesztette ki, de ma már minden böngésző képes értelmezni ezt a nyelvet. Fontos megjegyezni itt, hogy a JavaScript nem azonos a Java-val.

Országos Széchényi Könyvtár
Észrevételek