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:

1. Először is, hogy 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 C#, Python vagy Java. 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ő.

2. Az általános programozási nyelveken belül 2 nagy csoport létezik, az Imperatív és Deklaratív világ. Anélkül, hogy belemennénk a részletekbe a nagy különbséget egy 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. 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 és főleg, hogy ne leíró nyelven. Nincs azokkal sem semmi gond, de csak nagyon speciális 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…

Mire szeretnénk használni?

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 nyelv valójában ugyanaz. Ez annak idején engem is beugratott. 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 ugyanahhoz a „családhoz” tartozik, de kisebb és nagyobb különbségek is vannak a kettő közt.

E kettő közül pedig a C# lenne az első jelöltem a programozással ismerkedőknek.

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.

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 modern módja a fejlesztésnek az, hogy az 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, az interneten sokan teszik is. 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 vitathatatlanul élen jár a Unity minden alternatívához képest.

Ha egyéb okokat hallanál arról miért érdemes a Unity-t választani, itt találsz bővebb indoklást.

É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.

Marosi Csaba, Unity/C# oktató

Jelentkezz az alapozó UNITY tanfolyamra, (szuperintenzív, kis csoportos személyes oktatás Budapesten) vagy végezd el előbb Blender 3D Generalist tanfolyamunkat!

Kedves olvasónk, amennyiben érdekel a 3D, a játékfejlesztés, a Unity és a Blender világa, és rendszeresen szeretnél ezekről értesülni, kövess minket Facebookon:
https://www.facebook.com/3dStudioHungary