Bevezető
Egy kollégám kérdezte a minap, hogy ismerek-e valakit, aki a fiát Pythonban tudná korrepetálni. Mivel én csak amolyan “hétvégi” Python programozó vagyok, ezért egy pillanatra elgondolkodtam, kit tudnék ajánlani. De akkor nagyon hamar bevillant, hogy valójában erről (is) írtam az előző bejegyzésemet: hogy mi mindenre lehet használni a ChatGPT-t és a többi hasonló újkeletű mesterséges intelligencia (MI) eszközt. Aki még nem olvasta a bejegyzésemet, de van rá kb. fél órája, érdemes lehet átfutni, mert néhány elméleti okfejtésen / okoskodáson kívül van benne pár konkrét példa is, milyen fejlettek is már manapság ezek az MI-k és mire alkalmasak…
Mindjárt rátérek eredeti felvetésre, hogy hogyan tanuljunk meg Pythonban vagy bármilyen más programozási nyelven programozni… De előtte egy nagyon rövid kitekintés: egyes metrikák szerint a Python az egyik legnépszerűbb programozási nyelv (a létrehozott kódok alapján, és a munkaerőpiaci kereslet alapján is):

Mi lehet ennek az oka? Több is van:
- A Python egy nagyon egyszerűen elsajátítható, ugyanakkor sokrétű programozási nyelv
- Mivel nagyon népszerű, ezért könnyű a neten leírásokat és segítséget találni hozzá, bár nemsokára be fogom bizonyítani, hogy 2023-ban már nem ez a legjobb módszer, hogy megtanuljunk benne programozni
- Szintén a népszerűség egyik hozománya, hogy nagyon sok problémára már létezik ún. függvénykönyvtár (library, Pythonban package-nek hívják), amivel sok bonyolultabb dolog megoldása válik jóval egyszerűbbé (~ ne találjuk fel újra a kereket).
- Végezetül a tudósok és kutatók körében is nagyon népszerű programozási nyelv, sok data scientist (“adattudós”) is ezt használja a kutatásai során… Így ha ezen a területen szeretnénk később elindulni, már csak ezért is érdemes lehet megtanulni
Miért tanuljunk egyáltalán programozni?
Felmerülhet, hogy miért tanuljunk programozni? Bár ha még mindig olvasod a cikket, akkor van rá esély, hogy valamennyire érdeklődsz a téma iránt. Ennél a kérdésnél pedig – némileg talán rendhagyó módon – a ChatGPT segítségét kértem, hogy hozzon 3 példát:
- Problémamegoldó képesség fejlesztése: A programozás során gyakran találkozunk különböző problémákkal és kihívásokkal, amelyek megoldása logikai gondolkodást és kreativitást igényel. A programozás megtanulása fejleszti ezeket a képességeket, amelyek más területeken is hasznosak lehetnek.
- Jobb karrierlehetőségek: A technológiai iparágban egyre nagyobb az igény a programozókra és a szoftverfejlesztőkre. A programozás megtanulása növelheti az esélyeit a magasabb fizetésű és előrelépési lehetőségeket kínáló állások megszerzésére.
- Önálló projektek létrehozása: Ha megtanulunk programozni, képesek leszünk saját ötleteinket és projekteket megvalósítani. Ez lehetővé teszi, hogy személyre szabott eszközöket és alkalmazásokat hozzunk létre, amelyek megkönnyítik a mindennapi életet vagy segítenek másoknak.
Itt visszavenném a szót: az én esetemben mindhárom teljesül, de talán a legszemélyesebb az utolsó pont. Számomra a programozás egy olyan hobbi, amiben ki tudom élni a kreativitásomat, és néha másoknak is hasznos lehet, amit létrehozok…
Programozás tanulása mesterséges intelligencia segítségével
Kicsit hosszabbra nyúlt a bevezető, de jöjjön a lényeg: mit ajánlottam a kollégámnak, egész pontosan a gyermekének. Röviden azt, hogy ne féljen használni a ChatGPT-t. Főleg, hogy teljesen ingyenes, ugyanakkor szinte hihetetlen, mennyire hatékony tud lenni ilyen oktatásban (is), ha megfelelően “kérjük”. Minden bizonnyal ez a fajta technológia (vagy erre épülő szolgáltatás) lesz a tanulás jövője. Olyan, mintha lenne egy személyes oktatónk, akitől bármikor és bármennyiszer kérdezhetünk anélkül, hogy a végére már türelmetlen kezdene lenni. Akárhányszor visszakérdezünk, hogy magyarázza el máshogy, megteszi. És nem kell szégyellnünk, ha úgy gondoljuk, valamit már meg kellett volna értenünk korábban, nem fog minket szapulni, hogy milyen értetlenek vagyunk. Hacsak… Ha csak nem kérjük meg erre külön:

Mi is az a ChatGPT?
Az utóbbi hónapok egyik legnagyobb informatikai slágere a ChatGPT, ami nagyon távolról nézve egy egyszerű chatbot. Valójában azonban annál sokkal több, és sokkal nagyobb a jelentősége. A nagy nyelvi modellek (LLM, large language model), mint például a ChatGPT, a mélytanuló algoritmusok és a mesterséges intelligencia területén elért fejlesztések eredményeként jöttek létre. A nagy nyelvi modellek (LLM, large language model), mint például a ChatGPT, a mélytanuló algoritmusok és a mesterséges intelligencia területén elért fejlesztések eredményeként jöttek létre. Ezeket a modelleket több lépésben hozzák létre: előtanítás és finomhangolás. Az előtanítás során a modell nagy mennyiségű szöveges adaton tanul, amelyet az internetről illetve más forrásokból (tankönyvek, dokumentációk, stb.) gyűjtenek össze. A modell célja, hogy megtanulja a nyelv mintáit, szintaxisát és szemantikáját. Hatalmas adathalmazokon és nagy számítási kapacitáson alapulnak, amelyek lehetővé teszik számukra, hogy meglepően pontosak és koherensek legyenek a szöveg generálásában és értelmezésében.
Hogyan vágjunk bele?
Az első dolog, hogy elhessegetjük az esetleges ellenérzéseinket, miszerint egy géppel fogunk diskurálni, nem egy hús-vér szakértő ül a másik oldalon. A második lépés pedig már talán egyszerűbb: nyissuk meg a ChatGPT-t (valamint regisztráljunk, ha még nem tettük meg): https://chat.openai.com/.
A következő részben tippeket fogok adni, hogy milyen kérdések / kérések lehetnek, amit kipróbálhatunk. De ezek csak ötletek, nyugodtan kísérletezzünk mi magunk is, és végig nyugodtan úgy “beszélgessünk” a ChatGPT-vel, mintha egy valódi oktató lenne.
Általános tippek
- Előfordulhat, hogy valamit “félreért” az MI, ilyen esetben próbáljuk meg kicsit részletesebben és/vagy más szavakkal kifejezve feltenni a kérdést.
- Ha valamit mi nem értünk, akkor kérdezzünk rá újra, kérjük meg, hogy magyarázza el úgy, hogy egy gyerek is megértse… Vagy pl. magyarázza el egy szemléletes példával. A lehetőségek szinte végtelenek, ne féljünk új dolgokat kipróbálni.
- Van, hogy néha hosszú választ ad a rendszer, amit nem ír ki teljesen. Ilyenkor a nyomjuk meg a válasz alján található “Continue Generating” gombot.
- Az összes hasonló MI-nek, mint a ChatGPT, van egy maximális “memóriája”, amire vissza tud “emlékezni”. Bár van lehetőségünk a ChatGPT oldalán folytatni egy korábbi beszélgetést, de ha jóval korábbi dolgokra próbálnánk visszautalni, vagy rákérdezni, akkor előfordulhat, hogy olyan válasz érkezik, ami alapján kiderül, hogy az MI már nem “emlékszik”…
- Ezek a nyelvi modellek nem determinisztikusak, azaz ha többször is feltesszük akár pontosan ugyanazt a kérdést, nem mindig ugyanazt a választ fogjuk kapni. Ebből is látszik, hogy ezek az MI-k többek annál, mint egy egyszerű kereső vagy autocomplete motor… Bár öntudatuk nincsen, de valóban “intelligensek” vagy legalábbis annak látszanak. Érvelésben és logikai fejtegetésben is igen fejlettek.
- És végezetül a legeslegfontosabb tanács: soha ne higgyünk 100%-ban az MI által generált válaszokban. Ez talán meglepő tanács lehet, főleg annak fényében, hogy pont egy olyan terület tanulásárra használnánk az MI-t, amihez nem értünk. De ezeknek a modelleknek a működési elvéből fakad az a tény, hogy sokszor nagyon hihetően tudnak írni valamit, ami tényszerűleg nem igaz. Ez nem “szándékos” megtévesztés, hanem az a rendszer felépítésének “mellékhatása”. Különösen legyünk körültekintően a válaszokat illetően, ha az MI által adott válasz alapján szeretnénk döntéseket hozni. Erre – jelenleg még – nagyon korlátozottan képesek… Persze a véleményüket kikérhetjük, de erre tekintsünk úgy, mintha egy idegentől kérdeznénk valamit.
Kezdeti lépések
Mivel kezdjük a beszélgetést? Ahogy írtam is korábban, ezekkel az MI-kel nem alacsony szintű programozással, vagy utasításokkal, hanem egyszerű szabadszavas “beszélgetéssel” lehet kommunikálni. Így lehet az első kérés a következő:
Viselkedj egy Python oktatóként. Te most egy Python oktató leszel, és engem oktatsz. Én vagyok a diák, még most kezdem el tanulni a nyelvet, így nagyon érthetően kell elmagyaráznod a dolgokat, és ha kérdezek valamit, akkor ne konkrét megoldást adj vagy kész programokat, hanem segíts engem abban, hogy kis segítséggel, de magamtól oldjam meg a feladatokat.
Ezután a ChatGPT konstatálja a szándékunkat, és az én esetemben pár alap nyelvi elemet is elmagyarázott bónuszként. Továbbá leírta, hogyan telepítsük a Python programozási környezetet, amire most külön is kitérnék, mert erre szükségünk lesz, hogy folytatni tudjuk a tanulást a ChatGPT segítségével. Alapvetően két dolgot kell végrehajtanunk:
- Python interpreter telepítése: A Python interpreter egy olyan szoftver, amely képes a Python programozási nyelvben írt kódok futtatására és értelmezésére. Az interpreter olvassa és elemezni a Python kódot, majd végrehajtja az utasításokat, amelyeket a kód tartalmaz.
- Python fejlesztőkörnyezet telepítése: Az IDE (Integrated Development Environment, azaz integrált fejlesztői környezet) egy olyan szoftveralkalmazás, amely a programozók számára különböző eszközöket és funkciókat kínál a szoftverfejlesztési folyamat megkönnyítésére.
Egy jó magyar nyelvű leírás, ami leírja ezeket részletesebben: https://learn.microsoft.com/hu-hu/training/modules/python-install-vscode/
De ha valami nem érhető a fentiekből, kérjünk segítséget – a ChatGPT-től.
Indentálás
Mielőtt belekezdenénk a tanulásba, érdemes egy nagyon fontos dolgot megemlíteni a Pythonnal kapcsolatban: az indentálást (sorok behúzása). Mit is jelent ez?
Az indentálás a Pythonban a sorok kezdetének “behúzásával” valósul meg. Az indentálás azáltal jelzi a Pythonnak, hogy mely sorok tartoznak egy adott blokkhoz. Pythonban az indentálásnak általában négy szóközt vagy egy tabot használnak. Azonos blokkba tartozó soroknak ugyanazt a behúzást kell használniuk. Fontos, hogy a behúzások ne legyenek vegyesen szóközök és tabulátorok kombinációi, mivel ez problémákat okozhat a kód futtatásakor.
A helyes identálás fontos a Python kódjának megfelelő működéséhez. Ha nem helyesen identáljuk a kódot, akkor a Python hibaüzeneteket dobhat, vagy a kód nem fog olyan módon működni, ahogy azt várnánk. Itt egy példa erre. Ennél a példának az egyszerű feltétel (if utasítás) indentálását mutatja be. Ammenyiben itt az utasitas1 és utasitas2 sorokat nem “húztuk volna be” tabulátorral vagy 4 szóközzel, úgy az adott program működne (a Python hibát dobna).
if feltetel:
# Ezt a sort beljebb húztuk, ez az igaz feltétel ága
utasitas1
utasitas2
else:
# Ezt a sort beljebb húztuk, ez az feltétel else (egyébként) ága
utasitas3
utasitas4
Vágjunk bele!
Kezdhetjük egy ilyennel, ha nem vagyunk benne biztosak, milyen dolgokat kell megtanulnunk:
Viselkedj egy Python oktatóként. Te most egy Python oktató leszel, és engem oktatsz. Én vagyok a diák, még most kezdem el tanulni a nyelvet, így nagyon érthetően kell elmagyaráznod a dolgokat, és ha kérdezek valamit, akkor ne konkrét megoldást adj vagy kész programokat, hanem segíts engem abban, hogy kis segítséggel, de magamtól oldjam meg a feladatokat.
Majd pedig a konkrét kérdés:
Hogyan álljak neki a Python programozás tanulásnak, ha veled szeretnék tanulni? Tudsz nekem segíteni a tanulásban?
Erre kapni fogunk egy áttekintést, hogy hogyan lehet elsajátítani egy nyelvet, és mik az előfeltételek.
Magyarázd el érthetően a programozás alapjait néhány egyszerű Python példával.
Itt kapunk egy rövid áttekintést, a változókról, az alap műveletekről.
Milyen dolgokat kell megtanulnom, ha legalább alapszinten szeretném elsajátítani a Python programozást?
Megtudhatjuk, hogy el kell sajátítanunk az adott programozási nyelv szintaxisát (“nyelvtanát”), a feltételes utasításokat, változók használatát, hibakezelést és még sok mást. Ezekhez külön külön is kérhetünk segítséget. Ha a válaszban alapból nem szerepel példa kód, kérjünk!
Magyarázd el a feltételes utasításokat a Pythonban.
Magyarázd el a ciklusokat!
A következő kérdéssel megtudhatjuk, hogyan érdemes egy egyszerűbb program esetén struktúrálni a kódot és pl. hogy érdemes kommenteket (magyarázatokat) elhelyezni a kód egyes részein, hogy később is tudjuk, mit miért csináltunk. A kommentelés egy igencsak ajánlott és hasznos dolog a programozásban.
Hogyan struktúráljam a kódomat?
Amennyiben az alapokat nagyjából megértettük, folytathatjuk azzal, hogy feladatokat kérünk a ChatGPT-től, de mindenképpen írjuk bele, hogy ne árulja el a megoldást, esetleg csak támpontokat adjon.
Adj nekem egy kezdő feladatot, de ne áruld el a megoldást, csak esetleg utalj arra, hogyan lehetne megvalósítani. Ez lehet egy egyszerűbb matematika témájú feladat is.
A leginkább meglepő, ugyanakkor nagyon hasznos képessége a ChatGPT-nek és más nyelvi modelleknek az, hogy nem csak alap általános dolgokat tudnak elmagyarázni érthetően és több féle módon, hanem bizony egy konkrét program kódot is képesek “megérteni”. Bár kétségtelen, hogy a programozás is egyfajta “nyelvtudás”… A tanulás kapcsán kérhetjük bármikor, amikor elakadunk valahol, hogy segítsen, mi lehet a baj a kódunkkal. Ha valami hibát ír ki a fejlesztőkörnyezet a program futtatásakor, akkor a hibát is mondjuk el a ChatGPT-nek, meg persze a kódot is, ami a hibát dobja.
Fontos: a különböző jelenleg is elérhető ChatGPT jellegű MI-k különböző fejlettségű képességekkel bírnak. A ChatGPT-t fejlesztő OpenAI cégnek i vannak fejlettebb MI modelljei, pl. a GPT4 nevű, ami jelenleg csak fizetős módban érhető el jelenleg (a ChatGPT-nek van havi díjas változata). De az esetek nagy többségében, főleg ha csak most tanuljuk az alapokat, bőven elegendő az ingyenes változat.
Szóval a következő módon is kérdezhetünk az MI-től:
Ez a kód miért nem működik jól?
szam = 29
flag = False
if szam == 1:
print(szam, "nem prímszám")
elif szam == 2:
print(szam, "egy prímszám")
elif szam > 1 and szam != 0:
for i in range(3, szam):
if (szam % i) == 0:
flag = True
break
if flag:
print(szam, "nem prímszám")
else:
print(szam, "egy prímszám")
Meg is kapjuk a helyes választ:
A ciklus határa: A range(3, szam) kifejezésben a ciklus csak a szam változó értékéig fog lefutni. Azonban a prím számok vizsgálatához a ciklusnak 2-től szam-1-ig kellene futnia. Tehát módosítsd a kódot a következőképpen: range(2, szam)
Arra is alkalmas a ChatGPT, ha találtunk a neten egy kód részeltet, de nem vagyunk benne biztosak, hogyan működik, illetve ha valamiért magyar változó neveket szeretnénk.
Írd át a kódot úgy, hogy magyar változó nevek és magyarázó kommentek legyenek benne. Magyarázd el azt is, hogyan működik a kód.
Vagy vegyük a következő egyszerű példát:
Ezt írtam, de nem jó valamiért:
hosszusag = input("Hosszúság: ")
hosszusag = input("Szélesség: ")
print("Terület:,", hosszusag * szelesseg)
print("Kerület:,", 4 * hosszusag * szelesseg)
A ChatGPT válasza:
A probléma az, hogy a második bemenetnél ismét az hosszusag változóba olvasod be az értéket, ahelyett hogy az szelesseg változóba olvasnád be. Ennek következtében mindkét változóban a hosszúság értéke lesz tárolva.
Amennyiben van egy kedvenc témánk, kérhetünk konkrétan pl. foci témájú feladatot is:
Most adj egy foci témájú egyszerű python feladatot, de most se áruld el a megoldást!
Végezetül ha már magabiztosabbnak érezzük a tudásunkat, tegyük fel a kérdés, hogy mit tudnánk még elsajátítani?
Ha már megtanultan az alapokat, mit lenne érdemes még elsajátítani a Pythonban? Mivel tudnék még többet megtanulni?
Tippek és végszó
A fenti példákkal remélem sikerült bebizonyítanom, milyen hasznos és sokoldalú felhasználása van a ChatGPT-nek és más hasonló MI-knek pl. akár egy programozási nyelv elsajátításában. A fenti “kéréseken” túl is bátran kísérletezzünk, és ne féljünk kérdéseket feltenni, hiszen ahogy a bevezetőben is írtam, ezek a nyelvi modellek nem fognak megsértődni, ne fognak minket leszúrni, ha valamit többször is megkérdezünk vagy nem értünk. Nemrég olvastam erről egy jó blog bejegyzést, ami nagyjából arról szól, hogy tekintsünk ezekre az MI-kre egyfajta ingyenes gyakornokként, és folyamatosan próbálgassuk a képességeiket, mire alkalmasak, mire nem, és ne féljünk élni ezzel a lehetőséggel: https://www.oneusefulthing.org/p/on-boarding-your-ai-intern. A technikai fejlődés eljutott már arra a szintre, hogy természetes nyelven tudunk kommunikálni a számítógéppel, és egészen komplex dolgokat is képesek “megérteni”.
Végezetül szeretném azt is megemlíteni, hogy a ChatGPT-vel nem áldozott (még) le a “hagyományos” oktató anyagok és weboldalak kora, továbbra is érdemes a témában felkeresni ilyeneket. Ha pl. szeretnénk ötleteket arra, hogy milyen egyszerű példákkal lehet gyakorolni pl. a Python-t, akkor itt van két példa:
- https://pythonprinciples.com/challenges/
- https://www.codecademy.com/resources/blog/python-code-challenges-for-beginners/
Ezeken kívül is nagyon sok angol és magyar nyelvű weboldal található a neten, ami segíthetik a tanulást. És ha valaki továbbra is idegenkedik ettől a felvázolt módszertől, akkor (egyelőre még) van lehetőség beülni egy élő tanfolyamra, ahol egy hús-vér oktató tartja az órát. De az is tény, hogy ezek a tanfolyamok elég sokszor sajnos elég zsebbenyúlósak, így érdemes mérlegelni, hogy megéri-e…
Tervezem, hogy más MI témákban is írok majd bejegyzéseket, de nyugodtan javasoljatok Ti is témákat, ha valami érdekelne titeket.
Leave a Reply