Melyik nyelvet válasszam?

Ha az ember programozó szeretne lenni, számos irány (ún. platform vagy világ) közül választhat. C, C++, C#, Java, PHP, Javascript (azok különféle keretrendszerei, pl. Angular, jQuery…), Python,…

Mégis melyik irányt érdemes választani? (Arról, hogy szerintem egyet érdemes választani, arról előző héten írtam).

C: A ma legnépszerűbb nyelvek ősatyja, a Java, a C++, a C#, a PHP és a Javascript is ebből a nyelvből fejlődött ki, az alapvető utasítások nagyon-nagyon hasonlóak – ha nem azonosak. Viszonylag kevés utasítást és lehetőséget tartalmaz, így elég könnyű megtanulni, viszont nem túl barátságos a programozóval: időnk és energiánk nagy része a gép specialitásaival való törődéssel megy el (memóriakezelés és -felszabadítás, pointerek nyomon követése, cím szerinti paraméterátadás kapcsán való gondolkodás – ha ez nem mond semmit, nem baj. A lényeg, hogy egy magasabb szintű nyelvnél ezekkel nem neked kell törődnöd).
És hogy hol használják manapság? Nagyon egyszerű beágyazott rendszerek vezérlésénél, pl. amilyen egy automata öntözőberendezés. De pl. a Raspberry Pi (ára tízezer Ft körüli) sem csak C-ben programozható, így a jelentősége egyre csökken. Ha érdekelnek a beágyazott rendszerek, válaszd ezt, és készülj fel, hogy a hardvert kell majd masszíroznod, hogy menjen a programod. Ez nagy odafigyelést, alapos elméleti tudást igényel. Tudásod csak egy speciális környezetben alkalmazható. Szóval nem ajánlom. (Egy beszúrás: Programozni megtanulni kívánóktól számtalanszor hallottam, hogy “Először megtanulom az alapokat, a C-t, majd utána rátérek a magasabb szintű nyelvekre”. Khm… Miért tanulnál meg lovagolni azelőtt, hogy autót vezetni tanulnál? Mert az autó feltalálása előtt lovagoltak az emberek? A lovaglás jó sport, de semmi szükség rá az autózáshoz).

C++: Objektum-orientált (=menő) programozási nyelv, de valahogy megörökölte a C-nek azt a tulajdonságát, hogy bal kézzel masszírozni kell a nyelvet, hogy működjön a program. Rengeteg lehetőség van benne, kevés kivétellel mindent meg lehet csinálni benne, ráadásul elég gyors is lesz a program. Ideális, ugye? Hátulütője, hogy sokszor tovább tart rendesen megtanulni, mint mondjuk a Javát. Kis túlzással azt szoktam mondani, hogy a Java és a C++ úgy viszonyul egymáshoz, hogy Javában a C++-ban megírható programok azt a 20%-át lehet kivitelezni, ami a problémák 80%-át megoldja. Ha a maradék 80%-ot is akarod programozni, akkor cserébe tanulhatsz 5-szörannyit. Állásszerzés szempontjából nem ideális, mert 5-ször tovább tart megtanulni olyan szinten, hogy állást találj, mint a Javát. Ha menő 3D-s számítógépes játékot akarsz programozni, telekommunikációs alapszoftvert, operációs rendszert, vagy más, sebességkritikus rendszert, akkor ez a te pályád. Mivel túl rögös és hosszú az út benne a programozóállásig, nem javaslom.

Java: Viszonylag gyorsan, könnyen megtanulható, mert elég jól leegyszerűsített és letisztított nyelv, keveset kell (és lehet) a számítógép lelkivilágával törődni, jobban lehet a feladatra koncentrálni, kellően kényelmes. Ráadásul a legjobban fizetett programozók a Java programozók. Egyrészt a Java beette magát a nagyvállalati környezetbe, számos banki és egyéb rendszer Javában van írva. Ezen kívül az Android programok millióit is Javában írták meg. Annyira nagy tömegű program van Javában írva, hogy az tuti nem fog egyik napról a másikra megváltozni. Több millió programot senki nem fog máról holnapra sem kidobni a szemétbe, sem átírni egy másik platformra. EZ TUTI. Ráadásul a nagyvállalatok ilyen szempontból nem a gyorsaságukról híresek… néha még a Java verziót sem váltják, nemhogy mindent újraírjanak egy menő új nyelvben. Szóval aki a Javát választja, annak egy meglehetősen kényelmes, meglehetősen gyors utat kell végigjárnia, míg bele nem csüccsen a jól fizető állásába.

C#: A Java után jött ki, ezért valamivel fejlettebb nyelv annál, de a Windows platformmal van legjobb barátságban. A legkönnyebb áttérés Javáról talán a C#-ra van, az alap nyelvi készletben csak néhány különbséget lehet felfedezni, annyira hasonló. A .NET-tel szokták együtt emlegetni, ami a Windows platform programozói környezete. Nem egy rossz választás.

PHP: Azok számára, akik egyszerűbb webes szoftvereket akarnak programozni, ez (és a Javascript) a jó választás. A PHP rengeteget küzd a menővé válással (objektum-orientált programozás bevezetése), és igazán nem is érzem túl sikeresnek. Könnyen tanulható, széles körben támogatott nyelv, de nagyon gyorsan lesz gátja egy weboldal fejlődésének.

Javascript: Ha valaki webes programot akar valaha írni, nem tudja kikerülni a Javascriptet, ugyanis jószerivel ez (és utódai, pl. Typescript) az, amit egy böngésző futtatni tud. Javascript és pont. A PHP-hoz hasonlóan a Javascript is küzd az objektum-orientálttá válással, tehát megalapozott programozási tudásra akarsz szert tenni, akkor nem biztos, hogy a legjobb, ha a Javascripttel kezded.

Python: sokak szerint ideális kezdő nyelv lenne a programozás megtanulásához, és szintén sokak szerint nem elég komoly nagy rendszerek írásához. Mivel nem követi a C-alapú nyelvek nyelvtanát, mi értelme lenne egy kezdő nyelvet megtanulni, utána átváltani egy komoly nyelvre? A programozási alapokat Javában is meg lehet tanulni, és akkor legalább a később használt nyelvtant (szintaxist) gyakorolja az ember.

Nem véletlenül oktatunk Javát, azt gondolom, ezzel tud a tanuló leggyorsabban legnagyobb eredményt elérni tudás és fizetés tekintetében.