Fórum Root.cz

Práce => Studium a uplatnění => Téma založeno: Lucas 14. 07. 2014, 09:06:50

Název: C++ - co všechno se naučit?
Přispěvatel: Lucas 14. 07. 2014, 09:06:50
Zdravím. Potřeboval bych radu ohledně C++. Několik let programuju ve vysokoúrovňových jazycích, takže jazyk samotný mi tak těžký nepřipadá, většinu toho znám už odjinud. Ale jak narážím na poměrně velké rozdíly mezi jednotlivými standardy, tak jsem pořád víc na vážkách, co všechno se mám vlastně naučit. Absence jinde základních věcí ve starších verzích (např. možnost standardním způsobem převést řetězec na číslo, možnost jednoduše zjistit počet prvků pole, atd) jsou pro mě tak trochu kulturní šok, ale zase nic, s čím bych se nesrovnal. Je mi jasné, že v cizích kódech si jenom s nejnovějšími vychytávkami nevystačím, ale zase bych se nechtěl zbytečně učit úplně prehistorické postupy. Takže otázka zní - jak daleko do minulosti bych se měl dívat při učení C++?
Název: Re:C++ - co všechno se naučit?
Přispěvatel: JSH 14. 07. 2014, 10:03:58
C++ si prostě táhne historický balast.

Doporučuju se soustředit na nové věci. Nové normy hlavně přidávají nové a elegantnější postupy. I nepovedených věcí se zbavuje dost blbě. Jak narazíš na něco starého, tak si to najdeš. Ale většinou to nebude nic neznámého. Jen místo knihovních věci tam něco bude napsané ručně.
Název: Re:C++ - co všechno se naučit?
Přispěvatel: Lucas 14. 07. 2014, 10:32:11
Jo, to mi taky připadá jako rozumná cesta. Do začátku se budu učit jenom nové postupy a když narazím na nějakou haluz, tak si prostě doplním znalosti. Takhle nějak jsem to měl v plánu, ale potřeboval jsem vědět od někoho zkušenějšího, jestli to stačí. Díky za radu.
Název: Re:C++ - co všechno se naučit?
Přispěvatel: fail 14. 07. 2014, 10:58:40
bude hur. naplanovana je dalsi standardizace.
https://isocpp.org/std/status
Název: Re:C++ - co všechno se naučit?
Přispěvatel: JSH 14. 07. 2014, 13:52:25
bude hur. naplanovana je dalsi standardizace.
https://isocpp.org/std/status
Co tak sleduju, tak to nevypadá až tak šíleně. Hlavně tam bude spousta knihovních věcí.
Název: Re:C++ - co všechno se naučit?
Přispěvatel: Honza 14. 07. 2014, 14:39:41
Na Vaši otázku není univerzální odpověď. Záleží na tom, co chcete s C++ dělat, jaký bude Váš překladač, kdo budou Vaši kolegové, jaký je Váš styl programování. Pokud se Vám la Vašim kolegům líbí C a jen to chcete trochu naskládat do tříd a občas využít dědičnost a pár dalších drobností, chcete maximální přenositelnost, líbí se Vám jednoduchý kód atd. atd., bude rada zcela opačná než v případě, že musíte mít vše nejnovější, děsně se Vám líbí šablony, přetězování operátorů a vrhání výjimek z destruktoru, jste frikulín, rád ukazujete začátečníkům, jak jsou blbí, free a malloc (nebo i delete a new) považujete za sprostá slova, máte jednu konkrétní verzi nového překladače a kompatibilita Vás vůbec nezajímá, v čistém C byste nenapsal ani hello world atd. atd.
Název: Re:C++ - co všechno se naučit?
Přispěvatel: eMko 14. 07. 2014, 14:56:48
Nedávno jsem implementoval ne zcela triviální kompresní algoritmus v C++. Obrovský rozdíl je mezi C++11 a staršími standardy. Pokud máte jako já výhodu v tom, že si můžete zvolit novou normu, tak zcela určitě je to dobrá cesta - více to připomíná vysokoúrovňový jazyk.

Pokud tu možnost nemáte a jdete na nějaký stávající projekt, je třeba se naučit starší věci. Existuje celkem dost knih - stačí probrat amazon a podívat se na míru prodávanosti a recenze čtenářů. Každému sedí něco jiného a ve Vašem příspěvku je málo informací na konkrétní radu.
Název: Re:C++ - co všechno se naučit?
Přispěvatel: Lucas 14. 07. 2014, 15:34:24
Citace
Na Vaši otázku není univerzální odpověď. Záleží na tom, co chcete s C++ dělat...

C++ se učím čistě pro osobní potřebu, s týmem to momentálně nemá nic společného, jedeme čistě dynamické jazyky(Python, Ruby, JS, ...). Jsou to všechno fajn jazyky, píše v nich úžasně, ale je to dost na úkor výkonu. Občas prostě potřebuju napsat něco, co pojede opravdu RYCHLE a mělo by to být pokud možno použitelné na libovolné platformě. Všechny ty třídy, lambdy, generátory a další už mám až moc zadřené pod kůží, takže čisté C mě nějak neoslovuje, C++ je mi podstatně sympatičtější. No a do budoucna se to bude hodit i pro vývoj webových aplikací, s neustále zvyšující se komplexností aplikací to bude velká konkurenční výhoda(ne-li nutnost). Takže podle všeho pro mě bude opravdu lepší držet se primárně novinek a "oldschool" až podle potřeby.
Název: Re:C++ - co všechno se naučit?
Přispěvatel: Honza 14. 07. 2014, 16:05:35
Vám bych doporučil co nejvíc hardcore C++ a co nejnovější standard, ovšem s omezením na podmínku

mělo by to být pokud možno použitelné na libovolné platformě.

a počítal bych s tím, že čím víc exotická platforma (já jsem třeba před 5 lety dělal navigace do aut a překládalo se to nějakou starší verzí microsoftího c++ pro hardware, pokud ale třeba děláte web servery, tak jste celkem v pohodě), tím víc můžete čekat problémů.
Název: Re:C++ - co všechno se naučit?
Přispěvatel: eMko 14. 07. 2014, 16:35:42
V tomto případě je dobré držet se novějších standardů. Dále knihovna Boost má pár dobrých věcí - některé již ve standardu jsou, některé ještě ne a některé nikdy nebudou. Příklad takové, která pravděpodobně nikdy nebude, je spolupráce s Pythonem. Zatím obecně platí, že cokoliv co je potřeba volat odjinud, ne z C++, je potřeba obalit Cčkovým rozhraním*, viz např.

http://blog.eikke.com/index.php/ikke/2005/11/03/using_c_classes_in_c.html

Boost.Python toto dokáže řešit (minimálně ve většině případů).

*Je to z důvodu nekompatibilních ABI (application binary interface) mezi různými C++ kompilátory - knihovnu zkompilovanou v jednom obecně nelze použít z programu zkompilovaného jiným. U Cčka je to vyřešené - je jedno, kterým C kompilátorem se zkompiluje knihovna, použít se dá i z programu zkompilovaného jiným (při dodržení platformy).
Název: Re:C++ - co všechno se naučit?
Přispěvatel: Lucas 14. 07. 2014, 16:54:18
Díky všem za rady, jdu se na to zase vrhnout :-)