Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Dominik Baričák:13. května 18:10

Zdravím,
mám dotaz ohledně knihoven. V C++ jsem skončil někde u tvorby ručně vytvořeného spojového seznamu, dynamického pole - vektory, nějaké to OOP a teď bych se chtěl začít učit už něco použitelného. Bohužel si pořád nemůžu vybrat a pořád přeskakuju z jednoho jazyka na druhý, z knihovny na knihovnu. Je podle vás jednodušší se naučit nějaké to GUI např. WPF, Qt, Swing nebo je stejně obtížně naučit se knihovnu pro tvorbu her např. SFML ? Obtížné rozumějte přívětivost pro začátečníka a hlavně kvalitu a kvantitu tutoriálů. Jsem teď na střední škole a vůbec se nedokážu rozhodnout co se učit. Vyplatí se vůbec v tom C++ pokračovat a učit se v něm nějaké další knihovny např. Qt ? Nebude lepší C# nebo Java a učit se nějaké to GUI v nich ? Jednoduše když dojdu ze školy chci se učit věc, která bude mít kvalitní tutoriály, zároveň nebude nejtěžší - takový DirectX nebo OpenGL pro začátečníka asi není úplně vhodný a zároveň budu vědět, že se učím něco, po čem je poptávka.

Děkuji za odpovědi.

Editováno 13. května 18:12
 
Odpovědět 13. května 18:10
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Dominik Baričák
Luboš Běhounek Satik:13. května 19:00

Ahoj, na hry bych se vrhnul rovnou na C#, tam třeba Unity engine a nebo si klidně psát svůj vlastní, pokud chceš pořádně pochopit, jak to všechno funguje uvnitř.

Osobně na 2D používám vlastní engine, kterej používá SharpDX a FMOD - např. na https://www.itnetwork.cz/…va-strategie

a na 3D pak Unity, protože to spoustu věcí udělá za tebe, např. https://www.itnetwork.cz/…-hra-v-unity

C++ na hry bych se spíš vyhnul, ne že by to bylo špatný, ale při vývoji her je hlavním problémem nedostatek času, a C# ti spoustu času oproti C++ ušetří.

Ať už tím, že nemusíš řešit hlavičkový soubory, rychlost kompilace (která u větších projektů může být pro C++ i desítky minut), zatímco podobně rozsáhlý C# projekt bude pořád trvat jen několik vteřin.
Míň problémů s memory managementem (ačkoliv u C# je dobrý dávat si bacha, abys zbytečně nezatěžoval GC).
Míň problémů s používáním knihoven (v C++ třeba bejvá problém slinkovat statický knihovny z různých kompilerů, takže si to kolikrát musíš všechno kompilovat sám přes stejnej kompilátor, takže potřebuješ zdrojáky a někdy dokonce si i k tomu zkompilování knihovny sehnat všechny knihovny, na kterých je daná knihovna závislá).

Nahoru Odpovědět 13. května 19:00
https://www.facebook.com/peasantsandcastles/
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Dominik Baričák
Martin Petrovaj:13. května 20:15

Ak sa chceš učiť niečo, po čom je práve dopyt, tak sa pusť do webového vývoja v čomkoľvek a máš o prácu postarané :-) Java trochu na ústupe, ASP.NET / ASP.NET Core, Javascript vo všetkých možných podobách, v menšej miere Python, tradične PHP… Vyber si.

Pokiaľ by si sa chcel držať desktopového sveta, tak s WPF určite nešliapneš vedľa a práce bude tiež dosť.

Keby si chcel pracovať vo videohernom segmente, tak ošahať si dvojicu enginov Unity a Unreal ti väčšinou postačí a je dnes takpovediac nutnosť. Väčší dopyt je tradične po Unity, ale prevažuje skôr u malých či stredných firiem. Ak cieliš na známe, medzinárodné mená, tak budeš potrebovať solídne znalosti C++ a Unreal.
V prípade, že by si chcel zisťovať bližšie, ako tie enginy vlastne fungujú, tak OpenGL a DirectX nie sú zlá voľba, aj keď pre začiatočníka sú určite náročnejšie. Pre taký prehľad toho, čo všetko vývoj kompletného enginu a hier obnáša si môžeš pozrieť napr. tieto materiály https://is.muni.cz/…19/PA199/um/

Ak chceš myslieť hlavne do budúcnosti (ale nestratíš sa s tým v žiadnom prípade ani teraz), tak sa začni čím skôr obzerať po service-oriented architecture, microservices, cloude (napr. AWS, Azure) a nezaškodí niečo praktické vedieť o DevOps.

Nech už sa vydáš akoukoľvek cestou, uisti sa, že pred prechodom na náročnejšie a viac špecializované témy rozumieš podstatným základom - minimálne teda by si mal perfektne rozumieť OOP, základom architektúry, ovládať a uplatňovať best practices a vedieť písať clean code. Nezaškodí mať prehľad v základoch práce s dátami (najčastejšie to znamená SQL), multithreaded a paralelnom programovaní a pred prvou prácou by bolo fajn vedieť aj o tom, ako taký komerčný vývoj vyzerá po organizačnej stránke (naštudovať si niečo o životnom cykle SW a agilných metodikách vývoja - Scrum, Kanban, Lean).

A ešte jedna poznámka na záver - ak budeš chcieť ďalej niečo robiť s C++, pridaj si na ten zoznam aj zvládnutie práce s templatemi a smart pointermi .

Nahoru Odpovědět  +1 13. května 20:15
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovídá na Martin Petrovaj
Dominik Baričák:13. května 21:10

Do webového vývoje jsem se už jednu dobu pouštěl, ale od hodně lidí jsem slyšel, že to dneska dělá každý druhý. Z toho jsem usoudil, že to zvládne téměř každý a uchytí se opravdu jen ti nejlepší. Jak to tedy je ? A co říkáte na C++ spolu s Qt ? Hádám, že tam bude menší poptávka, než u WPF a možná to bude i složitejší na naučení.

Editováno 13. května 21:11
 
Nahoru Odpovědět 13. května 21:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.