C#-ról c++-ra, help?
Sziasztok. C# Programozó vagyok, de kezdem érezni hogy ez a nyelv és a .NET nem az én világom. Nem azért mert nem menne, jó vagyok a szakmában de maga az irányzata nem vonz annyira. Tehát a kérdésem a következő lenne. Miből/honnan gyakorolhatnám a c++ nyelvet? Aki váltott és sikeresen begyakorolta, az segíthet. Tudni illik könyvből tanulhatom, pluralsighton is nézhetem a videókat és csinálhatom a kisebb feladatokat, de nem marad ez meg bennem. Nem igazán lehet így átlátni hogy mégis mire képes ez a nyelv, mint pl. ha munkahelyen csinálnám.
Van-e valami könyv ami komolyabb feladatokat is felad, kitér lényeges részekre, stb. stb.?
Amiket találtam az mind csak magát a szintaxist tanítja meg, leírja kezdő szinten kb. minden könyvben, nem volt még tapasztaltabb embereknek szóló.
Gondoltam rá hogy UE4-ben elkezdhetnék valami játékot fejleszteni, de az meg megint más tészta.
Segítségeteket előre is köszönöm! :)
Kezdőknek és középhaladóknak:
Stroustrup: Programming: Principles and Practice Using C++
Lippman, Lajoie, Moo: C++ Primer
"ami a C#-ban nem tetszett, de utána a C++ hatalmas visszalépés lesz az egészen biztos."
Mindegyiknek vannak előnyei és hátrányai. Más területen használják a két nyelvet. Nem értem miért lenne visszalépés.
"Nem értem miért lenne visszalépés."
Mert C++-ban minden sokkal, sokkal macerásabb.
Egy tonna olyan kényelmi funkció van a .Net-ben és C#-ban, amit a nyelv alád tol.
#12: Pedig valóban visszalépés. Bár rengeteget fejlődött az évek során, és néhány területen elvitathatatlan az előnye, vagy épp tényszerűsége, azért általánosságban véve hátrányban van, nehezebben használható a modernebb nyelvekhez képest, még ha ezt nem is grandiózus szakadékként kell elképzelni, hanem inkább kellemetlen nüanszokként (hozzáteszem, sok kicsi sokra megy).
+------------------------------------------------------------------------------------------------------------+
tl;dr;
- Visszalépés? Tulajdonképpen igen.
- Akkor rossz ötlet? Nem. Csináld azt, ami érdekel.
- Játékfejlesztéshez váltani kell? Nem. Ott a Unity. Akkor válts, ha a biztosan a C# a gond, nem a terület.
+------------------------------------------------------------------------------------------------------------+
Gyakran találkozom azzal a tévhittel, hogy a hardverközelibb nyelvek képviselik a magasabb színvonalat ilyen-olyan szempontokból kifolyólag. Ez azonban ha igaz volna, még mindig mindenki Assemblyben fejlesztene, mert azzal kapod a legkomolyabb teljesítményt és a legnagyobb kontrollt. Felmerül, hogy az ASM macerás, nehezen olvasható, stb., ám amit felrónánk az Assembly-nek a C-vel szemben, az felróható a C-nek a C++-szal szemben, és megáll a C++-ra a C#-pal szemben is. Persze valamit valamiért...
Így néz ki most a skála, mindenki döntse el maga, melyik pontját célozza meg.
Az újabb és újabb generációs nyelvek egyik célja épp a korábbi nyelvek hátrányainak, hiányosságainak, kényelmetlenségeinek kiküszöbölése. Ennél fogva, ami egy C# esetén eleve bele van tervezve a nyelvbe és remekül szuperál, azt C++-nál néha csak toldozott-foltozott módon tudják kivitelezni, annál is inkább, mivel szem előtt kell tartani a visszafelé-kompatibilitást is, ami miatt a design-t érintő, hibásnak bizonyult korábbi döntések korrigálásának lehetőségei korlátozottak.
Egy 30 éve bemutatott autót sem lehet maradéktalanul egyenértékűvé tenni egy 10-15 évessel úgy, hogy ne kelljen az alapoktól újratervezni, és ezáltal egy merőben másik, új autót kapni; pláne úgy nem, hogy a már meglevő fontos paraméterein mindez ne változtasson.
Ez minden nyelvet érint, és éppen ez a jelenség, illetve az ezzel járó feature-integráció a mozgatórugója az újabb és újabb programozási nyelvek felbukkanásának.
Ez így is van rendjén és jól, ennek köszönhetően válik a munkánk kényelmesebbé, produktívabbá. Azt mondjuk nem vitathatom, hogy embere válogatja, kinek mi tetszik-fekszik jobban.
Mindettől függetlenül továbbra is azon a véleményen vagyok, hogy nem hátrány, ha valaki minél több nyelvvel elboldogul, és a kérdező bátran vágjon bele, ha ez érdekli, bár ha csak arról van szó, hogy inkább a játékfejlesztés felé húzza a szíve, akkor célszerűbb lehet nyelvváltás helyett felmarkolni egy Unity-t, és a már magabiztosan használt C#-pal belecsapni a lecsóba, váltani meg lehet később is, ha még mindig úgy gondolja, hogy magát a nyelvet nem érzi a magáénak.
Ejj, ez jó hosszú lett...
#11 köszi :)
Nem visszalépés, attól még hogy magasabb szintű nyelv, nem jobb(számomra), csak egyszerűbb rajta programozni.
Nem hiába vannak c# mellé c++ részek is írva egyes cégeknél, egyszerűen nem bízol dolgokat egy olyan nyelvre, ami nem tudja tökéletesen optimalizálni neked az egész fordítást. Ami egyeseknek előny, pl. hogy egy közös nyelvre fordítja le c#-ról, az másoknak éppen hátrány. Egy operációs rendszert se fognak c#-ban írni, egyszerűen nem arra való. Unity-ben programoztam, össze is raktam egy 2D-s játékot, meg egy nagoyn egyszerű 3D-set. Ki akarnám próbálni UE-t is hogy az milyen.
A c# nekem túl magas nyelv, én egy szinttel lejjebb akarok programozni. Egyszerűen másra való a két nyelv, hiába hívjuk általános célúnak mindkettőt.
Amúgy meg assembly már túl alacsony szintű nyelv, nem jó példa.
Összefoglalva, maga a c# egy jól programozható nyelv, de amihez ezt felhasználják, az engem hidegen hagy. Engem nyilván nem érdekel hogy az adott cégnek a GC lassítani fogja majd a programját és ez őket se érdekli ha már c# programozókat keresnek. De ahol ez zavaró tényező, ott eleve nem keresnek c#-osokat. És engem meg pont ezek a munkahelyek érdekelnek. Pl. autóiparban is c/c++ a kereslet.
Némi elfogultságot vélek felfedezni a jelenlegi platformoddal szemben. Ezzel csak óvatosan, mert tapasztalat híján nem feltétlenül megalapozott az ilyen vélemény. Arra nem érdemes apellálni, hogy itt-ott ezt hallottad/olvastad, mert sok tévhit és helytelen következtetés kering a neten. Kicsit emlékeztet a dolog a magam prekoncepcióira a váltás előtti időkből. Nem volt igazam - pontosabban azoknak nem volt igaza, akik az általad is körvonalazott sztereotípiákat állították, én meg balga voltam, hogy hittem nekik.
Persze a mai napig használok szabadidőmben C-t és C++-t is, de sokkal inkább a kihívás vezérel, mint a racionális megfontolás.
Néhány dolgot kiemelnék az utolsó hozzászólásodból:
"...olyan nyelvre, ami nem tudja tökéletesen optimalizálni neked az egész fordítást."
Ennek épp az ellenkezője igaz. Míg a statikusan előre fordított nyelvekhez való compiler nagyvonalakban tud csak optimalizálni, hiszen nem tudhatja előre, konkrétan min is fog futni a program, addig a manage-elt nyelvek JIT compilere kvázi hajszálpontosan az aktuális procihoz tudja igazítani a futtatandó binárist.
"Pl. autóiparban is c/c++ a kereslet."
Ez sem általános érvényű. Magad is megbizonyosodhatsz róla, ha bekopogtatsz Győrben az Audihoz. C/C++ fejlesztőket jellemzően a beágyazott szoftverekhez keresnek, amelyek kivitelezésére ugyan akad példa manage-elt nyelven, de alapvetően e területen egyértelműen a natív kód a megoldás jelenleg.
Van azonban nem nagyon erős érvem a C++ mellett: Tökéletesen működő g++ az összes lényeges platformra létezik, tisztességes .NET viszont - AFAIK - nem. Ez speciel rövidre is zárja a dolgot, mert ha nem akarsz életed végéig megragadni a Windows-nál, akkor váltani kell.
Ha már szóbakerült az embedded, talán ez szolgáltathat számodra élvezetes projekteket:
Arduinózhatsz, AVR-ezhetsz, PIC-ezhetsz. Ha még nem foglalkoztál ilyesmivel, tudom ajánlani, iszonyat fun és relatíve gombokból finanszírozható. A nyelv átfogó gyakorlásához speciel nem jó, mert a kompromisszumokból kifolyólag annak csak egy részhalmazával fogsz dolgozni, de a móka kárpótol mindenért. Kivéve, ha nem szereted a forrasztópákát...
Nem tudom, melyik cégnél dolgozol, de ha az autóipart szeretnéd megcélozni, érdemes mérlegelni, hogy átkérd magad egy automotive projektre és az ismeretséget kihasználva szépen, lépésenként átszivárogj a neked tetsző alterületre. Nagyjából a "kérj és kapsz" elven.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!