Přechod z C++ na C# nebo na Javu rubrika: Programování: C/C++

2 dsteiner
položil/-a 23.11.2016

Dělal jsem v jazyku C/C++ cca 15 let. 4 roky na škole a pak 13 let v práci. Jenže v současné době už nové pracovní pozice na C++ moc nejsou. Buď se jedná o embedded aplikace (často v ANSI C), což bych nechtěl dělat nebo pak už chtějí znalost C# a .NET. Mám dotaz, zda je pro mě lepší přejít od C++ na C# nebo na Javu? V Javě mám jakousi praxi asi 2 roky a přestože mi tvrdili, že přejít na Javu z C-čka je pohoda, že je to jako přejít u auta z manuálu na automat, tak jisté problémy jsem měl. Podle mě šlo hlavně o jiný styl OOP, jiné myšlení a návrh datových struktur, tříd, interface atd. Prostě to, co jsem v C++ nemusel řešit, tak v Javě bylo docela důležité. Např. jsem v Javě neuměl používat interface. Samozřejmě vím, co to klíčové slovo znamená, ale při návrhu tříd jsem ho skoro nepoužil. V C++ to nebylo, tak proč bych to dělal, že... Druhá věc byla správa výjimek a třetí věc zbytečné testování proměnných na null. V C-čku věc běžná, v Javě mi kolegové takový kód vždy zkritizovali, proč to furt testuju na null.

Pak docházelo k situacím, že program sice dělal co měl, ale kolegové mi říkali, že takto se v Javě prostě nepíše... Prostě jsem psal kód s C++ovým myšlením a Java syntaxí. Tak moje otázka zní, zda kdybych přecházel na C# místo na Javu, zda bych tyto problémy neměl nebo by to bylo to samé v bledě modrém.

odkaz
Anonym
odpověděl/-a 23.11.2016
 
upravil/-a 30.11.2016

Zkuste se podívat na https://www.startupjobs.cz/nabidky/13/c-programmer. Podle mne máte tolik zkušeností v C++, že je zahodit je velká škoda.
Nadhodím třeba ML/AI. I tady jsou firmy, co to řeší např. http://www.keenswh.com/ má odnož jenom na AI. Podle mne je C# to samé jak Java, jen má několik syntaktických věcí navíc (+ pravá generika, kdo to ale řeší :). Patnáct let v C++ je opravdu hodně zkušeností!

Pokud bych přecházel z C++ na "managed" jazyk, šel by do Scaly.

UPDATE: S vašimi zkušenostmi si vezměte dovolenou, projděte si nějaké knihy o ML a zkuste třeba Scala/Spark, C++/Python s Tensor Flow
nebo, jak mi vnuknul @Taco: Nabízet se firmám co používají Python a Ruby na komponenty, které jen zrychlí co je třeba -- https://www.kiwi.com/cz/ atd.

Komentáře

  • Anonym : V Plzni: https://www.inventi.cz/pozice/c-vyvojar.html 23.11.2016
  • diverman : S těmi hodně zkušenostmi bych byl opratrný. Od C++11 jde v podstatě o úplně nový jazyk, kdy téměř všechny předchozí nabyté znalosti jsou ke škodě. Dnes už nikdo nevolá Object* obj = new Object(), ale auto obj = std::make_unique< Object>(). S tím se dále pojí move semantics, type deduction (auto, decltype,...). Lambda funkce, variadické šablony, type traits, RAII většina oldschool programátorů nezná, CRTP pro statický polymorfismus apod. 24.11.2016
  • Anonym : @diverman Chápu, ale rok 2011 už je 5 let za námi. Jestli se za 5 let někdo nepodívá co se událo ve specifikaci jazyka, asi to o něčem vypovídá. Naštěstí se vývoj C++ docela zrychlil, takže takový generační zamrznutí je snad už těžší. BTW: C11 taky proběhlo a nikdo o tom moc nemluví. 24.11.2016
  • diverman : @uetoyo: Ono je jedna věc podívat se, co je nového a druhá věc se na to přeorientovat a získat nové návyky. Osobně bych zaměstnal raději juniora, který dělá v C++11, než zamrzlého seniora, co nikdy neviděl smart pointer a RAII. 24.11.2016
  • Anonym : @diverman Pořád je tu ale hodně legacy kódu nebo mix C/C+; člověk se zkušenostmi se podle mne hodí a jestli se neučí nové postupy, pak bych asi byl opatrný s jeho výběrem ať už dělá jakémkoliv jazyce. 24.11.2016
  • dsteiner : Rok 2011 je už 5 let za námi, ale já dělal v C++ do roku 2013 - byl to starý projekt vyvíjený od roku 2001 a tam věci jako smart pointery a RAII nebyly. Pak jsem od roku 2013 začal dělat v Javě. Učil jsem se toho dost vždy při změně práce. A opravdu jen tak po večerech studovat ještě věci, které v práci nepotřebuju - tak to jsem nedělal. Dost bylo toho učit se věci, které v práci využiju a to jsem dělal samozřejmě i ve svém volném čase, nejen v práci. O smart pointerech vím, že existují, to je tak vše. Na jednom pohovoru se mě na to ptali, já říkal, že nevím o co jde... nicméně i tak jsem uspěl. Bohužel práci jsem nakonec odřekl z důvodu, že jsem našel práci jinou, do které jsem to měl třetinovou vzdálenost. Přece jen trávit denně 2-3 hodiny na cestě je dost. 28.11.2016
  • dsteiner : Samozřejmě, že by mě novinky v C++ zajímaly, ale v zaměstnání to nikdy nefunguje tak, že se kompletně nastuduje nějaká problematika, pak se procvičí na jednoduchých příkladech, pak na složitějších příkladech a pak se uplatní na komerčních projektech. Pokud máte taková zaměstnání, tak Vám gratuluji. Já zažil spíše firmy, kde to fungovalo stylem: vzal se nový člověk, posadil se za PC a bylo mu řečeno, kde jsou zdrojáky a první úkol zněl "Nefunguje tiskárna, sprav to, už to mělo být včera hotové." Tiskárnou se myslí speciální HW pro tisk jízdenek např. v autobusech. V takovém případě asi tento člověk nezačne jako první věc studovat nové technologie v C++. Chci tím říci to, že projekty, na kterých jsem v C/C++ dělal nic z výše uvedeného (smart pointery, RAII apod) nepoužívaly. 28.11.2016

Pro zobrazení všech 16 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.