Programozás - merre tovább? (C++)
2021-02-11T13:53:49+01:00
2021-02-17T09:41:13+01:00
2022-07-20T11:37:03+02:00
  • Algoritmusok közül a "programozási tételeket" ismerem, meg még egy előző projekt miatt a Fisher-Yatest is.


    Ahol állsz, ott többféle irányba indulhatsz el:
    - Üzleti kóding
    - Próságosság
    - Grafika
    - Embedded

    Igazából más irányba is, de ezek mérvadó lépési lehetőségeid.

    Ha az "üzleti kóding" fele mennél, akkor kérdéses, hogy meddig érdemes a C++ mellett kizárólagosan maradnod. Igazából akkor is jó, hogy a C++t kened-vágod, mert már a szemléleted is jobb lesz szerintem, ha ebben el tudsz ilyen korán igazodni, hamarabb lehetsz egy más nyelven is simán architect-szerű ember stb. Szóval szemlélet, fogalomalkotás és más miatt jó volt, de igazából a stabil munkát adó üzleti cuccok felé nyitással majd más nyelveket is meg akarsz ismerni. Igazából ez viszont még ráér egyetemen / amellett is.

    Ha a "próságosság" felé akarsz elmenni, akkor a "programozási tételek" elég kevés az algo szinten. Találkoztam emberekkel, akik középiskolában pl. kenik-vágták a gráfalgoritmusokat (legalább a fákat, vagy gráfokra is a szélességi és mélységi keresést, legrövidebb út megtalálása, mondjuk prefix-fák). Ezekhez nincs jobb anyag máig sem, mint az "Új algoritmusok" c. könyv. Igazából van aki csak tolja ezt, meg a kömált és a versenyeket és elmegy ilyen "versenyprogramozós irányba" - Magyarországon mostanában volt is valaki aki elég sikeresen tolta. A tanáraid is segíthetnek ebben, hogy milyen algoritmusos versenyek vannak. Igazából ez az irány annyira próságos, hogy ha végignyomod, kb. mehetsz majd egyetem után ilyen gugli-jellegű helyekre is... továbbá a C++ jelen lesz ilyen helyeken mindig, ha más nyelv nem tetszene. Ez viszont sokkal nehezebb út, mint az összes többi...

    Vannak online versenyek is, mint a közismert "topcoder", vagy ami talán kevésbé eszi az embert meg reggelire a spoj.com könnyebbnek értékelt feladataiból párat megoldogatni.

    De vannak Magyar cuccok is (például ez - már nem aktuális, de a feladatokat nézegetheted): tesztfeladatok.pdf

    Ha a grafika / engine programozás érdekel. Akkor lineáris algebra, vektorok, shader programozás és valamely grafikus API elsajátítása is előnyös. Továbbá renderelési módszerek / algoritmusok (forward rendering, deferred rendering, egyebek). Itt se árt némely algoritmus a "próságosság" felől közelítve sem. Igazából ez is van olyan nehéz, mint a próságosságos rész, de legalább látványos. Talán kevésbé jól felépített didaktika van hozzá, tehát kicsit jobban el lehet veszni mit merre és hogyan, de legalább szép. Jah ha ez az irány érdekel, akkor mellé legalább egy game engine ismerete is jó lenne. Az hogy melyik, az majdnem mindegy. Esetleg lehetne valamelyik, amelyik C++ból is használható (Godot, Unreal, vagy az új cucc ami most jött ki és elfelejtettem a nevét)

    Az Embedded irány is hasznos / érdekes lehet, bár könnyen meglehet, hogy a C++ felől leesik a célnyelv C-re.

    Igazából a fentiek unholy keverékét is lehet csinálni, meg tök sok minden mást is lehet csinálni. A git-et mindenképp tanuld meg és mostantól minden - akár legkisebb projekteden - is használjad! Az is emellett egy tök jó irány szerintem, ha átállsz linuxon fejlesztésre mondjuk. Érdekes tapasztalat lesz onnan fejlesztened C++t: szerintem sokkal kényelmesebb, de elsőre nem így fogod gondolni, egyébként kb. rá fog kényszeríteni, hogy beleláss a parancssori dolgokba, meg ilyenek.

    Igazából temérdek további irány van. Tényleg jó volna, ha lenne néhány kép benned arról mik érdekelnek
    Mutasd a teljes hozzászólást!
  • Köszönöm a hasznos javaslatokat :D

    Algoritmusok közül a "programozási tételeket" ismerem, meg még egy előző projekt miatt a Fisher-Yatest is.
    Körülnézek még több iránt, megköszöném ha tudnátok csatolni néhány oldalt vagy videót.
    A Clean Code elméletnek híve vagyok, aktívan alkalmazon (próbálom).
    Debuggolást szerintem soha nem használtam eddig kipróbáláson kívül, nem éreztem szükségét, annak is utána fogok nézni akkor.

    Az újfajta C++ verziók már egy érdekesebb kérdés: jelenleg C++11-et használok, arra is van beállítva a g++.
    Már olvastam újdonságokról, akár a legújabb C++20-ról, de a legtöbb újdonság ami kijön, egyszerűen nem igazán tudom alkalmazni - pont ezért érdekelne fejlettebb programozás, ahhoz keresek ebben a témában is anyagokat.

    **G** köszi a párhuzamos architektúrákat, most arról olvasok :)
    Mutasd a teljes hozzászólást!
  • Kapcsolódó technológiák ismerete kötelező.

    * CMake, Git (persze más build és verziókezelőrendszer is szóba jöhet, de ezek a legelterjedtebbek)
    * Hasznos lehet a kedvenc fordítódat kicsit jobban megismerni. Flagek, stb..
    * Debuggolás nagyon fontos, debugger megfelelő használata.
    * Ha érdekel a téma, akkor alacsonyszinten is körülnézhetsz. Mire fordul a kódod, profiling, optmializációs toolok, statikus analyzerek.
    * C++ nagyon gyorsan fejlődik, c++98 nagyon de nagyon elavult standard már és nagyon sok hasznos featur-ből kimaradsz. Érdemes lehet végignézni és kipróbálgatni, hogy az egyes új standardek milyen új feature-eket mutattak be és megérteni, hogy mi miért is jó / hasznos, használható.
    * Boost széles körben elterjedt könyvtár, hasznos lehet ismerkedni vele, vagy legalább kipróbálni egyszer.
    * A c++ csak egy core-t ad. 3rd party libek nélkül megvagy lőve. xml, json, logger, test könyvtár ismeret / készség szintű használata hasznos lehet.
    * Formális nyelvek, adatbázisok minimális ismerete, kipróbálni, mi hogy működik, alap SQL lekérdezések.
    * párhuzamos architechtúrák, GPGPU, OpenMP / TBB / OpenACC Cuda...

    Nagyjából végtelen mélységek vannak, attól függően érdemes elindulni, ami téged érdekel!
    Írtam jónéhány általános témát, azokkal érdemes kezdeni :)
    Mutasd a teljes hozzászólást!
  • +1 az algoritmusok + adatszerkezetek + clean code + altalanos technologiak temahoz, ez szinte minden interjun kotelezo tudas. Ki lehet probalni nehany kodolos platformot (pl Hackerrank), ez jo gyakorlatot adhat. Ezen utan system design temak johetnek, persze ezelott azert eros alapok kellenek.
    Mutasd a teljes hozzászólást!
  • Hali!

    Mi köze van ennek a témának a programozás-elmélethez?

    Mutasd a teljes hozzászólást!
  • Szia! Nagyon szép teljesítmény, hogy középsulis korodra idáig eljutottál. A C++ talán a legnehezebb nyelv, hatalmas mélységgel. Van sok előnye és sok hátránya is.

    Egy kis kitekintés:
    Mielőtt a C++ további mélységeibe beleásnád magad, érdemes lenne elgondolkodni, hogy magasabb szinten mely témák azok, amik téged igazán érdekelnek (pl. számítógépes grafika, webfejlesztés, mobil programozás, üzleti alkalmazások fejlesztése, robot programozás, mesterséges intelligencia, stb.).
    Például én is C++ programozóként kezdtem, de aztán másik nyelvre váltottam, mert azokat projekteket, amik engem érdekeltek, már nem C++ nyelven írják manapság, pontosan azért, mert minden szempontot figyelembe véve nem a C++ nem a legjobb megoldás rá. Ezt csak azért írtam, hogy mielőtt über C++-ossá akarsz válni, érdemes lehet megfontolni, hogy nem csak ebből áll a világ.

    Vissza a C++ra:
    A C++ programozás sem csak a C++ nyelv szintaktikai elemeinek + osztálykönyvtárainak megismeretéből áll, hanem:
    - algoritmusok és adatszerkezetek megismerése
    - clean code, SOLID, KISS, OOP elvek mélyebb megismerése, tervezési minták
    - számítógéphez kapcsolódó technológiák megismerése (pl. számítógépes hálózatok működése, HTTP, operációs rendszer működése, adatbáziskezelés)

    Az a jó, hogy ha a 3 fenti témába beleásod magad, azt programnyelvtől függetlenül hasznodra fog válni.

    Egyébként egy jó C++ programozó a C++ összes képességeinek elég, ha kb. a harmadát tudja, mert annyira hatalmas a nyelv.
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Szakgimnáziumba járok, jelenleg 10. osztályba, és még tavaly iszonyatosan megszerettem a C++ programozást egy kedves tanárom hatására.
    Jártam (illetve jártunk néhányan) hozzá szakkörre, ahol egy stabil szintre eljutottunk: már lassan 2 hónapja készítem fel egyik barátom bátyját az emelt informatika érettségi programozás részére, szóval a legtöbb esetben könnyűnek tartom azokat a fajta feladatokat.

    Természetesen ezeket nem dicsekvés céljából írtam le, csak hogy nagyjából ilyen szinten állok jelenleg. Röviden szólva jól ismerem az OOP-t és függvényeket, a Standard Template Libraryt, a statikus és dinamikus memóriakezelést, a template-eket alapszinten, meg még sok apróságot amik konzolos programozáshoz tartoznak.

    Grafikus programozást már próbáltam, a QT férfiasan szólva nekem túl sok volt, sok mindenben gyakorlatilag felülírja a C++-t (ráadásul annak csak a régebbi, azt hiszem 98-as verzióját). A gtkmm tetszett, viszont az induláshoz és az alapismeretekhez kevés dokumentációt találtam, stb...
    Az lenne a kérdésem, hogy merre van a következő szint? Milyen érdekesebb részei vannak a C/C++ programozásnak amire Ti, tapasztalt fejlesztők, alapvető ismeretként tekintetek? Tudnátok ötleteket adni?
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd