4 terület, ahol nem tudtad, hogy hasznos a C++ programozás

2018. november 05.

Molnár László

Nézzük, melyik területeken hódít ma a reneszánszát élő klasszikus!

C++ programozás: a régi-új kedvenc

„Akármilyen infrastruktúrát építesz, legyen az egy hatalmas tengeri dízelmotor üzemanyag-befecskendezője vagy egy sima böngésző, annak legalább egy évtizedig stabilan kell működnie, mert egyszerűen nincs idő folyamatosan bütykölgetni. Nem írhatod csak úgy újra, hiszen ezeknek a hajóknak már a kikötése is rengeteg pénzbe kerül. Szóval egy olyan nyelvre van szükség, ami nem csak jól működik, de akár évtizedekig is képes ellátni a feladatát különböző hardvereken, és amivel programozók vagy 10-20 éven keresztül dolgozni tudnak majd” – magyarázta Bjarne Stroustrup, a C++ programozás atyja egy interjúban. Ezt a C kiterjesztéseként létrehozott programnyelvvel sikerült is megvalósítania: vannak olyan C++-ban írt kódok, amik a nyolcvanas évek óta hibátlanul futnak. Azok, akik kevésbé rajonganak ezért a nyelvért, gyakran pont ezt hozzák fel ellene, mondván, hogy a C++ programozás csupán annak köszönheti máig tartó népszerűségét, hogy régen egy csomó kódot írtak benne, amitől a mai napig nem tudnak szabadulni. De kell-e egyáltalán?

Kurt Guntheroth, veterán szoftverfejlesztő, elkötelezett C++-hívő és az Optimized C++ írója szerint például határozottan nem. Tény, hogy a 21. század elejére a C++  programozás jelentősen vesztett népszerűségéből: sok programozó alsóbbrendűnek tartotta a C-vel szemben, a nagyvállalatok többsége pedig a saját objektumorientált nyelvét tolta inkább a szerintük nehezen használható C++ helyett. „A legnagyobb cégek szinte mind a Javában, C#-ban vagy PHP-ban írt weboldalakban látták a jövőt, és furcsán néztek azokra, akik a C++-t még mindig strapabíró és hasznos nyelvnek tartották. Aztán váratlan fordulatot vett a sztori: a processzormagok nem lettek gyorsabbak, a terheltségük viszont rohamosan nőtt. Szóval a cégek kénytelenek voltak egyre több C++ programozót felvenni, hogy lépést tudjanak tartani. És a C++ programozás egy szempillantás alatt ismét népszerű lett” – idézi fel könyvében Guntheroth. Nézzük tehát, melyik területeken hódít ma a reneszánszát élő klasszikus!

1. A C++ és a gépek kora

Állítottál be mostanában rövid ciklusú mosást az automata mosógépeden? Vagy nyomtad meg a presszógombot a Nespresso kávéfőződön? Ha igen, akkor első kézből tapasztalhattad, mire jó a C++ programozás, vagy legalábbis annak egy töredékét. Az okos háztartási gépek nagy részének beágyazott rendszerei mind-mind C++-alapúak, de ennél sokkal komolyabb területeken is használják. A C++ kétségkívül az egyik legeffektívebb kódot generáló programozási nyelv, így azzal futnak például az önvezető autók képfeldolgozó rendszerei is, amelyek sebességén akár életek is múlhatnak. Az NNG által fejlesztett, mára világszerte az autóipar vezető navigációs rendszereként számontartott iGO navigációs motor például számos technológiát ötvöz, de a teljesítmény szempontjából fontos részei a mai napig C++-ban íródnak. A sebesség és a rövid reakcióidő teszi a C++-t a neurális hálók, a mesterséges intelligencia és a gépi tanulás kedvelt nyelvévé is, hiszen ezek a technológiák rendkívül CPU- és időigényesek. A C++ programozás emellett bonyolult algoritmusok jól optimalizált megvalósítását is lehetővé teszi, és hatékonyan alkalmazza a statisztikai AI-technikákat is. És ne feledkezzünk meg arról sem, hogy a jól megtervezett, objektum-orientált szemlélettel írt modulok más programokban is újrafelhasználhatóak, ezzel időt és pénzt spórolva a fejlesztőcégeknek.

2. Gigászok harca

Napjaink tizennégy legnépszerűbb weboldala közül öt, a Google, a YouTube, az Amazon, a Facebook és a Twitter is a C++-ra esküszik szerveroldalon. Az öt legnagyobb forgalmat bonyolító oldal közül pedig négy backend rendszerei futnak ezen a nyelven, vagyis a C++ a PHP-val együtt a második leggyakrabban használt nyelvnek számít, a techóriások körében pedig még a JavaScriptet is megelőzi. Hogy mi ennek az oka? Röviden: a méretük. Amikor egy startup elindul, a cél többnyire az, hogy minél gyorsabban kész legyen a termékük, és nem jelent különösebben nagy problémát, ha még 2-3 szervert be kell állítani a sorba ahhoz, hogy növelni tudják a kapacitást. Egy Ebay- vagy Amazon-szintű behemót esetében ez azonban aligha megoldás. Ha ők minden alkalommal beállítanának plusz 10-20 szervert, hogy ki tudják szolgálni a vásárlóikat, pusztán az áramszámla és a környezetterhelés akkorára rúgna, hogy az a működésük hatékonyságát veszélyeztetné. Itt jön a képbe a C++ programozás. Vagyis egészen pontosan a harcedzett C++ programozók. Igaz, hogy egy jó C++ kód megírása egy hétig is eltart, míg Pythonnal mondjuk egy nap alatt meglenne, csakhogy az a művelet, ami C++ kóddal egy nap alatt le tud futni, Pythonnal tartana egy hétig.

3. Jó játék

A C++ programozási nyelvnek köszönhetjük azt is, hogy a számítógépes játékok grafikája rohamos ütemben fejlődik. Bizony, a legnépszerűbb videójáték-konzolokra mint például az Xbox, a Switch vagy a Playstation írt játékok szinte mind C++-os motorral dolgoznak. A Wikipedián található 181 grafikus motor közül ugyan 54 nem fedi fel az alapnyelvét, de abból a 127-ből, amelyik igen, 77, azaz 61%-uk, C++-t használ. Csak hogy pár (valószínűleg ismerős) példát említsünk: Unreal (Gears of War), Creaton (Skyrim, Fallout 4, Oblivion), CryEngine (Far Cry, Crysis, Monster Hunter Online), Id-Tech (Doom, Wolfenstein, Quake) és Source (Half-Life, Left 4 Dead, TF2). Bár a C++ közel sem a legkönnyebben elsajátítható nyelv, ha a videójáték-fejlesztés az álmod, jobb, ha megbarátkozol vele. A C++ programozás egyértelműen a terület nagyágyúja, különösen, ha AAA-fejlesztésről van szó: villámgyors, a fordítóprogramok és optimalizálók megbízhatóak, emellett lehetővé teszi, hogy tetszés szerint alakítsd a memóriagazdálkodást, és szabályozd a hardver- és grafikus folyamatokat is. Sőt, ha később más objektum-orientált nyelvvel dolgoznál, akkor is jól fog jönni, hiszen az alapok ismerősek lesznek.

4. A jövő zenéje

Bár ez egyelőre még csak utópia, a C++ programozás a WebAssembly (wasm) elterjedésében is jelentős szerephez jut majd. Hogy mi az pontosan? Egy alacsony szintű kód (bájtkód), ami egyrészt sávszélességet spórol, másrészt szinte egy az egyben  kiiktatja azt az értelmezési időtöbbletet, ami például az asm.js legnagyobb hátránya volt. A technológiát, aminek fejlesztésben a Mozilla, a Microsoft, a Google és az Apple szakemberei egyaránt részt vesznek, az alapoktól úgy tervezték, hogy a web mindenütt elterjedt programozási nyelvénél, a JavaScriptnél akár húszszor gyorsabban futtatható legyen. Más szóval: gyakorlatilag minimalizálja a natív és a webes appok közötti teljesítménykülönbséget. Tehát amikor például egy termetesebb Google Sheettel próbálsz meg dolgozni, a WebAssembly-nek hála mindezt olyan sebességgel tudod majd megtenni, mintha az a saját gépeden futó program lenne. Az egyelőre kísérleti stádiumban lévő technológia a videójátékok világát is alapjaiban fogja megváltoztatni: a játékok, amik most DVD-n elérhetőek, hamarosan weblapként, letöltés nélkül, streamelve juthatnak el a felhasználókhoz. A WebAssembly egyik támogatott nyelve pedig nem más, mint a C++, ami így a backend után végre a frontendre is beteheti a lábát.

Úgy érzed, belevágnál a programozásba? Jelentkezz a Codecool kéthetente induló programozóképzésére és szerezz piacképes, biztos tudást egy év alatt!