MELYIK PROGRAMOZÁSI NYELVET TANÍTSUK A KÖZOKTATÁSBAN?

írta: Koós Antal, 2016/ápr.

A médiában mostanság szinte napi téma, hogy a közoktatásban a digitális írástudás fejlesztése, az informatika oktatása nem megfelelő. Néhány intézményre azonban ez nem áll, köszönhetően a lelkes és felkészült tanároknak. Az egyedi, jó példák elterjesztésének kiváló módja az évente megrendezett Digitális témahét is, amelynek során számos iskolában a tanulók a digitális eszközök segítségével megtartott órákat élvezhetnek, a tanáraik pedig hasznos oktatási tapasztalatokra tehetnek szert.

A digitális írástudás az informatikai eszközök (hardverek, szoftverek, szolgáltatások) használatának ismeretét jelenti, de ebbe beleérthetjük azt is, amikor ezen eszközök némelyikével újabb "digitális szerszámokat" állítunk elő. Talán nem érdemes matematikai szigorúsággal meghatározni, hogy egy digitális eszközökkel elkészített objektum egy újabb informatikai eszköznek minősül-e vagy sem. Nyilván új eszközt hozunk létre, ha elektronikai alkatrészek összeszerelésével és az interneten megtalálható dokumentációk felhasználásával összeállítunk egy számítógépet. Egy szövegszerkesztővel vagy táblázatkészítővel létrehozott fájl lehet csak statikus dokumentum, de akár új digitális eszköz is, ha az irodai szoftvercsomagban meglévő programozási lehetőséget is kihasználjuk. Például egy táblázatba ágyazott programot egy adott feladathoz megkonstruált célszerszámnak tekinthetünk, amelyet különböző kezdeti paraméterek megadásával alkalmazhatunk konkrét feladványok megoldására.

A közoktatási intézmények többségében a programkészítés oktatása kimerül az irodai szoftvercsomag nyújtotta lehetőségek egy minimális szintű megtanításában (például függvények használata a táblázat- vagy adatbáziskezelőben); és a diákokban sokszor nem is tudatosul, hogy programot kódoltak. Bár az irodai szoftvercsomagok segítségével nagyszerű és látványos alkalmazások is készíthetők, mégis szükség lenne egy nem beágyazott, általánosan felhasználható programnyelv megtanítására.

Az alábbiakban felsoroljuk a tanítandó programozási nyelvre vonatkoztatható didaktikai követelményeket, elsősorban a középiskolai oktatást szem előtt tartva:

A) A programnyelv legyen magas szintű és könnyen elsajátítható, az egyszerű feladatokat tömören lehessen benne kódolni, ugyanakkor legyen alkalmas nagy, összetett problémák megoldására is. A program készítőjének ne kelljen a futtató hardver és az operációs rendszer specifikus elemeivel foglalkoznia, legyen elegendő a feladat logikájára koncentrálnia, a kód- és adatszerkezet felépítésénél ne legyen szükséges az alacsonyabb szintű ún. rendszerhívásokkal bajlódnia (mint memóriafoglalás, "szemétgyűjtés" stb.). A "dolgozzon helyettünk a számítógép" elvet követve, előnyös, ha a nyelv "nem típusos", azaz nem kell előre meghatározni, hogy egy változóba milyen típusú adatok (egész vagy lebegő pontos számok, karakterláncok stb.) fognak kerülni; ez ugyancsak elősegíti a feladat lényegi elemire történő összpontosítást.

B) E programozási nyelv legyen széleskörűen elterjedt, ne csak egy oktatási céllal létrehozott nyelv legyen, hanem valódi gyakorlati alkalmazásokkal bírjon. Olyan nyelv legyen, amely a középiskolai ismereteken túl a felsőoktatásban is használható a modern programozási paradigmák megismertetésére. Bőséges dokumentáció álljon rendelkezésre az interneten, segítve az önálló tanulást. (Nem árt, ha a nyelv "piacérett", azaz munkavállalási lehetőségeket is megnyit az ismerője előtt.)

C) Mivel az informatika szakmai nyelve az angol, ezért a választandó programozási nyelv kulcsszavainak, elemeinek, alapfüggvényeinek, stb.-nek is angol elnevezéssel kell bírniuk: nem megengedhető ezek magyarítása. Ez nem okozhat gondot, hiszen angolul ma már minden középiskolás tanul. (Természetesen a programozó adhat magyar nevet egy-egy általa létrehozott változónak, eljárásnak stb.-nek.)

D) A nyelv kezelje "természetes módon" a nemzetközi kódkészletet (Unicode) a karakterláncok tartalmára és az objektumok elnevezésére vonatkozóan. Tehát a változók nevei a magyar helyesírás szabályai szerint is megadhatók legyenek! Az informatika nyelve ugyan az angol, de bizonyos esetekben érdemes "magyarul" programozni (például a kezdő programozók oktatásánál, kiváltképp az általános iskolában; vagy egy magyar irodalmi mű elemzésénél stb.).

E) Legyen a nyelv multiplatformos, azaz minden elterjedt asztali operációs rendszeren (Linux, Windows, OS X) lehessen használni.

F) Legyen benne lehetőség grafikus alkalmazások készítésére is.

G) Legyen ingyenes és nyílt forrású közösségi alkotás, ami egyrészt előnyösen befolyásolja a programnyelv fejlesztésének és javításának minőségét, másrészt biztosíték a programnyelv és az azt feldolgozó szoftver (fordító, értelmező) teljes megismerhetőségére. Didaktikailag fontos szempont, hogy amint az oktatói munka a tudás megosztását jelenti, úgy a közösségi fejlesztések célja is ugyanez.

A fentieknek megfelelő, általam javasolt programnyelv a Python 3.

Guido van Rossum holland programozó hozta létre, de ma már egy nemzetközi közösség fejleszti a non-profit "Python Software Foundation" nevű alapítvány koordinálásával. Az alapismeretek akár az általános iskolában is oktathatók, és a középszintű tudás elsajátítása nem nehéz még egy nem informatikus "civil" számára sem. Elterjedten használják egyetemeken, kutatóintézetekben is. A nyelvnek részét képezi az ún. alapkönyvtár, ami sok-sok függvényt, eljárást tartalmaz, de ha ez nem lenne elég, akkor a világhálón több mint ötvenezer modul (bennük számtalan függvénnyel) áll a rendelkezésünkre különféle típusú feladatok elvégzésére.

A grafikus programozást illetően az alapkönyvtár tartalmaz egy teknőcös modult (Logo), ami az általános iskolásoknak megfelelő lehet; a komolyabb grafikus felületek (GUI-k) elkészítéséhez azonban már haladó szintű tudás szükségeltetik.

Nem tartom hiányosságnak, hogy a kezdő szintű programozás oktatását nem valamilyen grafikus felületű keretrendszerrel végezzük, és hogy az elkészítendő programok kimenete csak szöveges megjelenítésű (bár meg lehet "fűszerezni" az Unicode tábla egzotikus karaktereivel). A tisztán szöveges mód használata miatt a diákok figyelmét nem fogja a "grafika színes kavalkádja" elvonni: azt lekötni és a fantáziájuk beindítását elérni az oktató feladata lesz, amihez érdekes problémákat kell felvetni és izgalmasan tálalni.

A Python 3 oktatásának fő segédeszköze valamely egyszerű szerkesztőprogram (azaz nem egy irodai programcsomag alkotórésze), amelyből minden operációs rendszerre több ingyenes is található.

A Python 3 korábbi verzióját, a Python 2-t is még elterjedten használják, de ennek megtanulása már nagyon nem ajánlott, egyrészt mert nem teljesíti a fent felsorolt követelmények mindegyikét, másrészt nagyon sok fejlett nyelvi elem hiányzik belőle (amelyek a 3-as verzióban megvannak), harmadrészt a fejlesztését befagyasztották, bár még egy rövid ideig kisebb hibajavításokat elvégeznek rajta.

(A szerző és a forrás megadásával a cikk átvehető, közölhető.)