Mikor valaki arra adja a fejét, hogy megtanul programozni, a legelső kérdés általában, hogy na de vajon melyik nyelvnek veselkedjen neki. A lehetőségek hosszú listája gyakran elriasztja az érdeklődőt, pedig mindez korántsem olyan jelentős vagy végleges döntés, mint az kezdetben tűnik.
A programozásban nem egyik vagy másik nyelv megtanulása a nehéz, hanem mögöttes logikák megértése és a programozói gondolkodás elsajátítása. Ha tudsz jól programozni mondjuk C#-ban, pontosan érted, mit miért teszel és hogyan, akkor (talán egy kis túlzással) 1-2 hét gyakorlás után Pythonban is ugyanúgy fog menni a fejlesztés.
Néhány dologra azonban tényleg érdemes figyelni:
- Először is fontos, hogy tényleg egy “programozási” nyelvet tanuljon az ember, ne valami mást. Ez a tanács eléggé triviálisnak tűnhet, de különböző listák gyakran tüntetnek fel olyan nyelveket, mint SQL, HTML, CSS, vagy XML a programozási nyelvek közt. Ez persze nagy részt csak definíció kérdése: Pontosan mit is számítunk „programozási” nyelvnek. Az viszont tény, hogy ezek a nyelvek fundamentálisan különböznek olyanoktól, mint a C#, Python vagy Java.
- Az általános programozási nyelveken belül 2 nagy esernyőkategória létezik, az Imperatív és Deklaratív csoportja a nyelveknek. Anélkül, hogy belemennénk a részletekbe a nagy különbséget néhány mondatban úgy tudnánk megfogalmazni, hogy deklaratív programozásnál azt mondjuk meg, hogy milyen eredményt várunk egy programtól. Ilyen például a Prolog és az Erlang. Ezzel szemben az imperatív programozásban pontosan leírjuk, hogy hogyan számolja ki a program az eredményt.
Vannak nyelvek, amit csak szöveges formában leírnak valamit, például egy weboldal szerkezetét (HTML) vagy egy hierarchikus felépítésű adatszerkezetet (XML) és vannak olyanok is, amik csak egy specifikus feladatra használható a programozás széles problémakörén belül. (SQL – Adatbázis lekérdezés). Mindezzel szemben állnak az úgynevezett általános programozási nyelvek (C#, Python vagy Java…), amiken bármilyen algoritmus és program elkészíthető.
Ez a rövid összefoglalás talán azt sejteti, hogy deklaratívan könnyebb programozni, de ez senkit ne tévesszen meg. Mindegyiknek megvan a maga előnye a másikkal szemben és a feladat típusa szabja meg, hogy mit érdemes használnunk. Míg egy-egy nagy paradigmán (nézetrendszeren) belül hasonló logikákkal találkozunk a kettő közt fundamentális különbségek vannak ezért nehezebb az átjárás.
Ha valaki programozni szeretne megtanulni mindenképp javaslom, hogy általános és ne speciális nyelven kezdjen tanulni. Nincs azokkal sem semmi gond, de csak bizonyos feladatokat fogsz tudni velük megoldani és nagyban fogja limitálni a lehetőségeidet az álláskeresésben is. (Őszintén szólva nem igazán ez az, amit „programozásnak” szoktunk nevezni.) Másik tanácsom, hogy ha nincs nagyon jó okunk ezzel szembe menni, akkor imperatív nyelvet kezdjen mindenki tanulni először. Sok vitába futhat bele az ember a neten melyik jobb vagy rosszabb. Személyesen én ezeknek nem sok értelmét látom, viszont egy tény biztos: A gyakorlati általános programozás magasan túlnyomó részét olyan imperatív nyelveken végzik, mint JavaScript, C, C++, C#, Java, Python, TypeScript, Rust…
Az utolsó nagy kérdés, amit meg kell válaszolnunk, hogy mire akarjuk használni a nyelvet? Ha a válasz erre az, hogy játékfejlesztés, akkor senkit ne tévesszen mega JavaScript népszerűsége! Sokkal jobban javaslom a C++ és a C# nyelveket.
Gyakori tévedés a programozással ismerkedők közt, hogy ez a két nyel valójában ugyanaz. Az okozhatja a félreértést, hogy a kettőskereszt úgy fest, mint két egymásba csúszott pluszjel, így logikus gondolat, hogy a „C#” csak rövidített leírása a C++-nak, ám ez tévedés. Mindkét nyelv szintaxis szempontjából ugyanahhoz a "családhoz" tartozik, de kisebb és nagyobb különbségek is vannak a kettő közt.
(A C# kiejtése "C Sharp" vagy szép magyarosan "Szí Sárp". A Sharp jel a kottaírásban használatos és bizonyos mértékkel nagyobb hangmagasságot indikál. Itt az elnevezés azt kívánja jelezni, hogy a C# egy magasabb szintre helyezett C.)
E kettő közül pedig a C# lenne az első jelöltem a programozással ismerkedőkének.
Hogy miért tartom ezt a legjobb kezdő választásnak, arra mindjárt kitérek, de először pár szót ejtenék a Unity játékmotorról.
Játékfejlesztéshez manapság nem szokás csak úgy nekiállni pusztán egy számítógéppel és egy egyszerű szövegszerkesztővel. Technikailag ennek sincs semmi akadálya, de valójában gigászi extra feladatot vesz a nyakába az, aki nem használ egyéb eszközöket, pedig a játékfejlesztés azok segítségével is bőven ad feladatot.
A legáltalánosabb modern módja a fejlesztésnek az, hogy egy kifejezetten játékok írásához épített keretrendszert használunk, amit nagy általánosságban úgy nevezünk, hogy játékmotor vagy game engine. Ebben is nagy választék áll rendelkezésünkre, de semelyik egyéb opció nem közelíti meg a Unity elterjedtségét.
Ez a népszerűség nem csak a motor minőségét és széleskörű funkcionalitását jelzi. Ezzel még lehetne vitatkozni. Amivel viszont már nem lehet, hogy a nagy népszerűség azt is eredményezi, hogy fejlesztők milliói állnak rendelkezésünkre, hogy kisegítsenek, ha elakadtunk egy-egy problémával. A programozásban a közösség mérete és segítőkészsége mindennél fontosabb és ebben 2023-ban vitathatatlanul élen jár a Unity minden alternatívához képest.
És itt kanyarodunk vissza a C# nyelvhez ugyanis, ha valaki Unity motor alatt szeretne játékot fejleszteni, nincs más opció, csakis C#. (És C# alapú Visual Scripting, de az egészen más madár, amit jelen cikk nem tárgyal.)
Ez egy nagy megkötésnek tűnhet, de senkit ne zavarjon! A C# egy modern, magas szintű tág funkcionalitású nyelv, amit széleskörben használnak a játékfejlesztésen kívül is. Minden, amit Unity és C# tanulás alatt elsajátít az ember hasznosítható más játékmotor használatakor, de egészen más programozói területeken is. Mint azt már korábban írtam, ha egy programozási nyelven tudsz fejleszteni, közel állsz ahhoz, hogy tudj bármelyiken. C++, Java, Python, Go, Swift, Rust, JavaScript, TypeScript… Nem tudunk nagyon mellé lőni.
És ha már valamelyiket ki kell választani és meg kell tanulni, Unity-tól függetlenül is a C# ideális tanuló nyelv, viszont, ha kifejezetten játékokat akarsz készíteni, én azt mondom, a legjobb választás.
Legutolsó tanácsom az, hogy ne pusztán ez a cikk alapján dönts, ha teheted máshonnan is kérj véleményeket és személyesen értékeld őket.
Szerző: Marosi Csaba
📞 Telefonszám: +36 20 359 7422
📧 E-mail cím: marosicsaba91@gmail.com
Ha érdekel a kódolás és játékfejlesztés, fontold meg a jelentkezést egyik tanfolyamomra→