Pasztuhov Dániel

Programozásoktatás

Melyik programozási nyelvet válasszam?

2018. március 05. - Pasztuhov Dániel

Ha most kezdesz programozást tanulni, akkor nagy fejtörést okozhat az a kérdés, hogy melyik programozási nyelvet is válaszd a tanuláshoz. Van ugyanis sokféle: Java, C++, Python, Javascript, C#, PHP - hogy csak néhányat említsek a rendelkezésre 100-nál is több nyelvből. Ha már tanulsz valamit, akkor olyat szeretnél tanulni, ami megéri.

Előfordulhat, hogy igyekszel egy programozótól segítséget kérni, és válaszol is, legjobb tudása szerint, amiből lehet, hogy csak annyit értesz, hogy melyik nyelvet ajánlja, de azt, hogy miért, az nem biztos, hogy 100%-ig átjön.

Mondok egy analógiát, ami elég jól hasonlít ehhez a helyzethez: tegyük fel, hogy most akarsz megtanulni autót vezetni (ez lesz a programozástanulás), és az a kérdés, hogy milyen autón tanulj (ez lesz a programozási nyelv). Hiszen annyiféle van, melyikkel jársz legjobban? (Hátsókerékhajtás, elsőkerékhajtás, automata váltó, kézi váltó, Fiat, Suzuki, Opel, Skoda, Mercedes,...)

Ha nem tudsz dűlőre jutni, lehet, hogy megkérdezed az autóversenyző haverodat (ő a programozó), hogy szerinte melyik a legjobb autó vezetni. Amire ő lehet, hogy visszakérdez, hogy milyen úton szeretnél versenyezni: milyen bajnokságban, milyen talajon, stb. (a programozási nyelvek is különböző feladatra jók). Amire nem is tudsz válaszolni, hiszen nem is tudtad eddig, hogy vannak különféle bajnokságok. Aztán mond valamit, hogy szerinte melyik a legjobb autó (az alapján, hogy ő melyik bajnokságban versenyez), és megindokolja egy csomó olyan technikai adattal, amiből egy szót sem értesz. Aztán mondjuk azt mondja, hogy a legjobb autó a Ford Focus WRC, mert a WRC-ben (akármi is az) ezzel az autóval nyerték a legtöbb VB-futamot. És ha megkérdezel egy másik versenyzőt (aki mondjuk szintén WRC-versenyző), akkor ő meg vitába száll az előzővel, hogy de nem is a Ford Focus WRC a legjobb, mert ... (nem érted, miért), hanem a Citroen C4 WRC, mert ... (ezt sem érted).
És akkor ők még csak WRC-sek (World Rally Championship) voltak: ha a Forma-1-ben szeretnél indulni, akkor máris egy másik márka lesz a befutó, ráadásul más paraméterek szerint és másról fog szólni a hozzáértők vitája.
De térjünk vissza az eredeti kérdéshez:

Milyen autón tanulj meg vezetni?

Ebből is biztosan sokaknak van favoritjuk, de egy dolgot szeretnék leszögezni: az, hogy milyen autón tanulsz meg vezetni, vajmi keveset számít abban, hogy utána milyen autót leszel képes elvezetni a közúton. Ha Opel Corsa F-en tanultál meg vezetni (mint én), az nem jelenti azt, hogy ha beülsz egy 2016-os Skoda Octaviába, akkor mindent újra kell tanulni, és onnan kezded az ismerkedést, hogy akkor most hogyan is kell az autót a gázzal és a kuplunggal mozgásba hozni és hogy tekeredik a kormány (vagyis persze igen, de ez kb. 30 másodperc, nem pedig órák, mint elsőre). Ez a programozásban is pontosan így van. (Java-tudással a Python kiismerése annyira, hogy el tudd "vezetni" - néhány nap).

És addig, amíg egyáltalán nem tudsz vezetni, addig neked édesmindegy, hogy első- vagy hátsókerék-hajtású az autó. Annak már több jelentősége van, hogy automata vagy kézi váltós, hiszen ha nem tanulsz meg kézi váltós autóval közlekedni, azt később megtanulni már nehéz. Ha egész életedben automatás autód lesz, akkor válassz automatás tanulóautót, különben jobban jársz a kézi váltóssal. (A programozási nyelveknél is vannak ilyen szempontok azért).

Az is igaz, hogy ha versenyző (senior programozó) akarsz lenni, akkor sokat kell még tanulni azután is, hogy mondjuk kiengednek a forgalomba (elvégzel egy iskolát), és folyamatosan fejlesztened kell magad. Az is igaz, hogy a különböző kategóriában versenyzők valamilyen szinten más és más képzettséget kell szerezzenek (ahogy a programozók is: nem mindegy, hogy mit programozol, mire specializálódsz). Az is igaz, hogy ahogy az autóversenyzők is kipróbálhatják magukat más kategóriákban (és sokszor sikeresen), úgy a programozók számára sem átjárhatatlan az egyes specializációk határvonala.

Mit ajánlok akkor autóvezetés programozásoktatóként?

A programozási nyelveket már más is hasonlította járművekhez: If programming languages were vehicles.

A link alapján a legjobb választás programozni tanulni: a Java, a C# és a Python. Ezek közül az első kettőt azért ajánlom, mert ... (techie blabla) ... - a lényeg az, hogy a kötöttebb nyelvi struktúrák miatt jobban megtanulod, mint egy szabadabb nyelven, ahol könnyű elveszni és trehánynak lenni - autós példában: A Java és a C# kézi váltós, a Python meg automatás. A maradék kettőből nekem a Java a kedvenc és ebben tudok neked a legtöbbet segíteni.

De akárhogy is: ahogy az autóvezetés előtt is kell egy alkalmassági vizsga, úgy programozástanulás előtt sem árt egy programozási alkalmassági teszt, hogy vajon érdemes-e bele időt, energiát fektetni, pénzt szánni rá vagy sem.

Pasztuhov Dániel

A bejegyzés trackback címe:

https://programozasoktatas.blog.hu/api/trackback/id/tr1213716184

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Papucsban a Teraszon 2018.03.06. 16:41:03

Ha GC oké akkor Haskell, egyébként Rust. /10char

Zak 2018.03.06. 18:22:12

Egy javascript is pont megfelel kezdésnek, ha típusosságot akar akkor ráhúz egy TypeScript compilert, ráadásul most sok JS állás van, valószínű lesz is.

deejayy · http://deejayy.hu/ 2018.03.07. 09:53:18

@Zak: nemcsak a kézi és automata váltót akarod kihagyatni, hanem egyből önvezető autóra küldöd? :)

Borzasztó Károly 2018.03.08. 10:22:41

hahhahha nagyon mókás ez a poszt.
"A link alapján a legjobb választás programozni tanulni: a Java, a C# és a Python. Ezek közül az első kettőt azért ajánlom, mert ... (techie blabla) ..."
Én inkább a "techie blabla"-t fejtettem volna ki alaposabban, mint ezt az idegesítő autós hasonlatot, még ha más is megtette már ezt.
Egyébként a Java, a C# és a Python triót végül is konkrétan kiknek javaslod tanulásra? A teljesen nulláról induló kezdőknek?

2018.03.08. 10:47:39

Nulláról indulva Python, mert tökéletes pszeudo kód írására, ami még működik is :)

Ha már tudsz programozni (ami messze nem azonos egy programnyelv ismeretével), akkor meg már mindegy, mert a programnyelvek megtanulása sokkal egyszerűbb, mint egy akármilyen idegennyelvé.
Jó, a funkcionális nyelvek (Haskell és tsai) még igényelnek némi pluszt, mert - szerintem - elsőre elég nehéz megérteni, ha hagyományos nyelven tanultál, de utána már mindegy.

Borzasztó Károly 2018.03.08. 11:46:31

Nulláról kezdőnek én inkább a C, Java, Python hármasból javasoltam volna. Ha valakit csak a pénz motívál, akkor Ruby, Python, C++, Java, Perl.