
Az ezoterikus programnyelveken már túl vagyunk, ezúttal pedig egy valamivel praktikusabb válogatással állok elétek. Magyar és nemzetközi programozó fórumokon egyaránt visszatérő kérdés, hogy melyik programozási nyelvvel érdemes a szoftverfejlesztés rögös útjára lépni. Szeretnék bemutatni néhányat a legnépszerűbb, legelterjedtebb programnyelvek közül, kiemelt figyelmet fordítva olyan szempontoknak, melyek különösen vonzóvá tehetnek egy adott nyelvet a kezdők számára. Próbálom meglelni a gyakorlati alkalmazhatóság és az eredményes tanulás optimumát a programkód előállításának tudományterületén művészeti ágán.
-
Python
-
általános scriptelés tudomány webfejlesztés
A Python a magas szintű programnyelvek svájci bicskája. Letisztultsága, eleganciája és széles eszközkészlete különösen alkalmassá teszik nem csak a tanulásra, de különböző professzionális programozási feladatok megoldására is. A Python-filozófia fontos eleme, hogy adott problémára egyetlen lehetséges megoldást kínáljon. A használandó nyelvi eszközök hosszas és kifinomult vizsgálódás eredményeit tükrözik a Python fejlesztőinek részéről, így a nyelv használatával hatékony és elegáns koncepciók elsajátítására vagyunk kényszerítve, és ezt a tudást természetesen a Python világán túl is kamatoztathatjuk. A nyelv webes keretrendszeréről is ismert, de nagy népszerűségnek örvend a tudományos alkalmazási területeken is, mint amilyen az adatelemzés, a robotika vagy a mesterséges intelligencia kutatás. Interpretált nyelvről lévén szó, a maximális teljesítményt igénylő feladatokhoz, amilyen az operációs rendszerek magjának, eszköz-meghajtóknak a programozása, vagy a valós idejű 3D grafika nem ez az elsődleges választás.
Ja! És a Monthy Pythonról kapta a nevét...
-
Ruby
-
általános scriptelés webfejlesztés
A Ruby a Python mostohatestvére. Sokszor egy lapon szokták említeni őket, holott két különálló nyelvről beszélünk, de mégis sok tekintetben hasonlítanak. Hasonlóan új generációs nyelvekről van szó, melyek alkotói elég markáns elképzelésekkel rendelkeztek róla, milyen az ideális programnyelv. Markáns, de eltérő vélemények ezek. Míg a Python egy, és csakis egy ideális utat javasol egy adott probléma megoldására, a Ruby épp ellenkezőleg, maximális szabadságot igyekszik nyújtani a programozónak. A Ruby tehát a szoftvert alkotó embert állítja központba, az azt futtató gépel szemben. Ez a fajta szabadság a tanulást elég izgalmassá teszi. Mivel a különböző programozási technikák széles skáláját felvonultató nyelvről beszélünk, sokféle koncepció elsajátítására lehetőséget ad. A metaprogramozás, azaz a saját kód futás idejű módosítása például egy az érdekes lehetőségek közül. A Ruby egy script nyelv, mely rendszer-üzemeltetésre is alkalmas, de leglényegesebb felhasználási területe mégis csak a web. A Ruby on Rails nevű webes keretrendszer híresen gyors fejlesztést tesz lehetővé, így startupok és kezdők számára egyaránt vonzó lehet.
-
HTML+CSS
-
webfejlesztés kliens-oldal felépítés megjelenítés
Ez a bejegyzés több szempontból is kakukktojást jelent. Egyrészt rögtön két nyelvről is szó van, másrészt úgynevezett domain-specifikus nyelvekről beszélünk, melyek az általános problémákkal szemben, egy adott feladat ellátására hivatottak. A klasszikus nézet szerint nem is alkalmasak bármilyen számítási feladat megoldására, de egyre inkább úgy tűnik, hogy manapság újra kell gondolni ezt a dogmát, mivel még ha nem is lenne sok gyakorlati haszna pusztán HTML és CSS segítségével kivitelezni egy játékot, vagy egy rendező algoritmust, mára még ezekre is alkalmasak lehetnek, másképpen szólva Turing-teljesek. Persze pofás online tartalmak és applikációk készítéséhez nélkülözhetetlen az ismeretük, de a működési logikát ilyen esetben jellemzően a JavaScript adja.
A HTML egy leíró nyelv (a betűszóban szereplő ML pontosan ezt jelenti angolul), tehát nem utasításokat adunk ki benne, amik aztán végrehajtódnak, hanem csupán felcímkézünk adott tartalmakat a segítségével. Ezeket a címkéket értelmezve a böngésző, valamiféle struktúrában tudja majd kiértékelni az így leírt információt. Ez a gyakorlatban úgy néz ki, hogy különböző html tagekkel írjuk körbe a weboldalunk szövegeit, kép fájljait és minden egyéb tartalmi elemét. Címeket, bekezdéseket, listákat, hivatkozásokat, a böngésző által megjeleníthető képeket és videókat hozunk létre és ágyazunk egymásba. Ez a felépítmény képezi minden weboldal alapját.
A CSS segítségével pedig olyan szabályokat definiálhatunk és rendelhetünk hozzá ezekhez a fentebb említett HTML tagek által leírt tartalmakhoz, melyekkel széles skálán változtathatjuk azok megjelenését, sőt bizonyos keretek között azok viselkedését is. A JavaScriptet is hozzáadva a képlethez a lehetőségek végtelenné válnak, de pusztán a HTML és a CSS elsajátításával is sokoldalú, esztétikus, egyedi, a kereső motorok által hozzáférhető, vagy egyenesen azokra optimalizált weboldalakat hozhatunk létre.
Mivel komolyabb programozási koncepciókkal, algoritmusokkal való bajlódás helyett inkább konkrét szabályszerűségekkel, jól vizualizálható struktúrával kell törődnünk, miközben gyönyörű weboldalakat készíthetünk el, a tanulás igen szórakoztató. Bár a technológiák gyors fejlődése miatt, folyamatos utánajárást és gyakorlást igényel a dolog, legalább közepes szinten mindenképp ismerni kell a HTML és a CSS működését hogyha az ember webprogramozásra adja a fejét. Magas szintű elsajátításukkal pedig nem lesz nehéz munkát találni magunknak a grafikusok és a fejlesztők mellett.
-
JavaScript
-
webfejlesztés kliens-oldal szerver-oldal játékfejlesztés
Bevallom, kissé elfogult vagyok JavaScript ügyben, hiszen néhány éve már ez az a választott nyelv amivel a legintimebb viszonyt ápolom, de úgy gondolom nem tévedek nagyot ha azt mondom nem nagyon lehet melléfogni vele. Az általa kínált lehetőségek sokszínűsége, valamint mára szerencsére kopóban lévő rossz híre elsőre talán ijesztő lehet, de valójában egy több mint kapabilis és mára már elég stabil szabvánnyal bíró nyelvről beszélünk. Elsődleges potenciálja természetesen a web-programozásban rejlik, de mivel a web mára önálló platformmá fejlődött, illetve a Node.js által a JavaScript már a szerver oldalon is jelen van, ezért a weboldalaktól, az óriási elosztott szolgáltatásokon át egészen az online játékokig ez a kitétel nem jelent éppen korlátozást, sőt a böngészők kínálta platform-függetlenség nagyban meg is könnyítheti a szoftverfejlesztést. Tanulás szempontjából is előnyös, hogy a JavaScriptet futtató környezet, a böngésző, minden személyi számítógépen jelen van, valamint csábító lehet a webfejlesztés kínálta gyors sikerek elérése is, legyen szó egy ismerősünk weboldalának elkészítéséről, vagy arról, hogy az általunk fejlesztett böngészős játékot egyből elérhetővé tehetjük a barátaink számára. Az interneten fellelhető töménytelen forrás sem utolsó szempont, a statisztikák szerint a StackOverflow fejlesztői fórumon a legtöbb kérdés és válasz JavaScript kategóriában érkezik. Turing-komplett nyelvről lévén szó, bármilyen általános problémára is alkalmazhatjuk, de ha a webre való fejlesztés valamilyen okból nem esik a projektunk fókuszába akkor jellemzően más eszközhöz nyúlunk.
Tudok JavaScriptül -
PHP
-
webfejlesztés szerver-oldal scriptelés
A PHP tulajdonképpen a modern web gerincét jelenti, ami a szerver oldali programozást illeti. Igaz, már akadnak riválisok is, de még bőven megkerülhetetlen tényező a PHP azoknak, akik a webfejlesztés felé kacsintgatnak. Elsajátítása véleményem szerint tanulságos és a szórakoztató. Tanulságos, mert általa megismerkedhetünk a web működésével, a szerver-kliens infrastruktúra részleteivel, és szórakoztató mert valódi online szolgáltatásokat hozhatunk vele létre. Általa megismerkedhetünk több népszerű web-framework, vagy tartalom-kezelő rendszer belső működésével, a végsőkig testre szabhatjuk Drupal, vagy WordPress oldalainkat, és ezáltal a robusztusabb szoftverekre jellemző fontos programozási koncepciókat is magunkévá tehetjük egyben.
-
Java
-
általános alkalmazásfejlesztés üzlet mobil webfejlesztés
A Java évek, sőt talán már évtizedek óta vezeti a legtöbbet használt programnyelvek listáját. Ennek elsődleges oka egy virtuális gépnek nevezett technológia ami lehetővé teszi, hogy a Java kód módosítás nélkül elfusson bármilyen platformon, függetlenül az architektúrától és az operációs rendszertől, amennyiben ez a virtuális gép nevű szoftver rendelkezésre áll az adott computeren. Sőt, Java appletek futtatására még a böngészők is képesek! Továbbá egy erősen objektum-orientált nyelvről beszélünk, ami jól illeszkedik a robusztus, nagy rendszerek fejlesztésének koncepciójába. Ezen túl pedig könyvtárak és keretrendszerek armadája áll rendelkezésre minden feladathoz. Ezekből kifolyólag a céges szférában, belső rendszerek fejlesztése vagy platform-független megoldások terén masszív kereslet mutatkozik Java programozók felé, de az Androidos mobilok elsődleges nyelve is ez. Mivel a Java ökoszisztéma rendkívül kiterjedt, ezért elsajátítása némi időt igényel. Interpretált nyelvről lévén szó, ami nem fordul le közvetlenül gépi kódra a program futása előtt, a maximális teljesítményt igénylő feladatokra akadnak nála alkalmasabbak is.
-
C
-
alkalmazásfejlesztés rendszer alacsony
A C nyelv kétségtelenül a programozói alapműveltség része. Még ha nem is tervezi aktívan használni az ember, akkor is érdemes megismerkedni vele. Minden idők legelterjedtebb nyelvéről beszélünk ugyanis, ami hatással volt szinte az összes itt felsoroltra és számtalan továbbira is. A C arany középútként fekszik az alacsony szintű gépi kódú, vagy assembly programázás, illetve a magasabb szintű nyelvek között. Persze ez az arany inkább terhet jelent, mint hasznot ha nem a megfelelő feladathoz hívjuk segítségül a C nyújtotta lehetőségeket, de kompaktsága, hardver-közelisége, minden másnál alkalmasabbá teszi olyan feladatok ellátására, mint az operációs rendszerek kernelének és eszköz-meghajtóknak a programozása, vagy a különböző kütyük, média-lejátszók, okos-eszközök és egyéb integrált rendszerek fejlesztése. Minden egyéb programozási feladat is megközelíthető vele, és bár magas szintű elsajátítása igényel némi ráfordítást, a számítógépek működésének, így a programozás bizonyos alapvetéseink megismerésére nehéz jobb jelöltet talán nála.
Azok a boldog C napok -
C++
-
alkalmazásfejlesztés rendszer játékfejlesztés
A C++ a C egy továbbfejlesztett változata. A különbözőségük legmarkánsabban talán a C++ azon tulajdonságában ölt testet, hogy támogatja az objektum-orientált programozási paradigmát. A modern szoftverfejlesztésben megkerülhetetlen ennek elsajátítása, mivel komplex rendszerek nehezen képzelhetőek el nélküle. A C++ a C-ből örökölt viszonylagos hardver-közeliség és az objektum orientáltság nyújtotta absztrakció egyesítésével egy rendkívül hasznos programnyelv képét mutatja. Az igazán hardver és rendszer közeli feladatokhoz talán már túlzottan is robusztus ugyan, azonban nélkülözhetetlen mindenhez ami közvetlenül ezek fölött helyezkedik el a számítógépes rendszerek rétegzett hierarchiájában. A különböző operációs rendszerekre írt, illetve teljesítmény-centrikus alkalmazások fejlesztésére használják, mint amilyen egy webböngésző, egy kép- vagy szövegszerkesztő, vagy egy torrent-kliens, és természetesen a nagy teljesítmény-igényű, közvetlenül az asztalról indítható számítógépes játékok motorja is jellemzően C++-ban készül.
C++-al kezdtél? Veszélyesen élsz! -
C#
-
általános alkalmazásfejlesztés üzlet webfejlesztés mobil játékfejlesztés
A C-evolúció egy újabb állomásáról lévén szó, a C, de főleg a C++ szekcióban említett adottságok közül sok minden a C#-ra is áll. Kezdjük talán a legfontosabb dologgal e nyelv kapcsán: Szí-sárpnak kell ejteni helyesen. Ha ez megvan akkor a nehezén már túl is vagyunk, no persze ez azért így túlzás, a C# sok olyan hasznos dologgal egészíti ki (vagy redukálja helyenként) a C++-t, melyek a modern szoftverfejlesztés számára vonzóak lehetnek. A technikai részleteken túl, az alkalmazási terület fontos tényező lehet a C# elsajátításában. A Windows ökoszisztéma jelenleg legfontosabb nyelvéről beszélünk, tehát Windowsos platformokra, kliensre, szerverre és mobilra egyaránt természetes választás. Megjegyzendő, hogy az elterjedt és profi játékfejlesztői környezet az Unity is a a C#-ot preferálja, mint az általa készített játékok elsődleges script nyelvét.
A lista természetesen szubjektív, és az értékeléseket is rugalmasan kéretik kezelni. A népszerűséggel a nyelv elterjedtségét, a tanulópénzzel pedig a megtanuláshoz szükséges befektetés és azzal járó megtérülés arányát próbáltam érzékeltetni. Az biztos, hogy bármelyik nyelvvel is kezdje az ember a tanulást, az azt követő nyelvek elsajátítása már sokkal egyszerűbb lesz, mivel első sorban a programozói gondolkodást sajátítjuk el és mélyítjük a különböző nyelvek megismerésével, és ehhez képest egy bizonyos nyelv sajátságai és az abban való jártasság másodlagosnak tekinthető. Bármilyen nyelvet is válasszunk tehát, az első nagy ugráson hamar túl leszünk, és amint rákaptunk a dolog ízére, a látókörünk és a lehetőségeink tágításának igénye hamar új nyelvek felé sodor majd minket.

A sorozat következő részében kevésbé elterjedt, ám ígéretes nyelveket tervezek górcső alá venni, de addig is boldog kódolást mindenkinek!