• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    UETOYOC++ (11+) aneb "Shadow of the Beast"

    C++



    Tématicky je vítáno vše, co souvisí s C++, obzvláště verze standardu 2011 a novější. Pokud nemáte rádi C++ a preferujete jiný jazyk, pak jsou tu jiné diskuze.Buďte trpělivý, C++ je plné záludností, takže pokud víte více než ostatní, dokažte to příkladem, odkazem na specifikaci atd.


    Ať již česky nebo slovensky, prosím pište s diakritikou a formátujte zdrojový kód ukázek.

    rozbalit záhlaví
    GREATDRAKE
    GREATDRAKE --- ---
    UETOYO: jejich compiler je hlavně pořád tak málo striktní, že dovoluje dělat psát nekorektní kód :)
    UETOYO
    UETOYO --- ---
    Rejuvenating the Microsoft C/C++ Compiler - Visual C++ Team Blog - Site Home - MSDN Blogs
    http://blogs.msdn.com/b/vcblog/archive/2015/09/25/rejuvenating-the-microsoft-c-c-compiler.aspx
    "Our compiler is old. " .)
    UETOYO
    UETOYO --- ---
    Video: B. Stroustrup /CPPcon 2015: https://www.youtube.com/watch?v=1OEu9C51K2A
    UETOYO
    UETOYO --- ---
    Video: H. Sutter / CPPcon 2015: https://www.youtube.com/watch?v=hEx5DNLWGgA
    UETOYO
    UETOYO --- ---
    RAGNAROK: Fortran je rychlý díky úrovní kompilátorů (třeba Intel) který dělá různé optimalizace zejména s poli -- vždycky úzce specializován a to je jeho výhoda -- nicméně pokud s ním začneš kouzlit OO pak již asi tak rychlý nebude (std 95 podporuje OOP).

    Nicméně na pěžně potřebnou práci je dostatečný třeba Python + právě C++/C, nebo Rust. Většina knihoven ve Fortranu prostě už existuje a jen se používají. Pokud máš na výběr -- Fortran není mimi fyzikální simulace nic, co by tě živilo a vlastně ani nikma posunulo -- je to překonaný jazyk i paradigma.
    RAGNAROK
    RAGNAROK --- ---
    VESELYSKEPTIK:
    hlavne potrebuju pracovat s velkyma vice rozmernyma maticema a vektorama, datovy filtry, obecne prace s daty, generovani struktorvanych dokumentu. uprednostnuju jednoduchou manipulaci, abych se v kodu vyznal, jednoduchou abstrakci, abych nemusel psat porad dokola stejny kod. Jinak bych teda chtel delat uplne vsechno treba tvorit novy vesmiry jestli mi rozumis :)

    O C++/fortan jsem se zacal zajimat kvuli rychlosti. Co jsem se docetel tak fortran je na tom v rychlosti nastejno. Nemam moc rad kdyz potrebuju ruzny baliky a hledat je a ucit se je, rad si nazvu nejpouzianejsi veci jinak, aby byl kod co nejkratsi a pro me nejcitelnejsi.
    VESELYSKEPTIK
    VESELYSKEPTIK --- ---
    RAGNAROK: Aby se dalo odpovědět na otázku s čím vystačíš, je potřeba vědět, co chceš dělat.
    C++ má spoustu problémů, určitě to není správný první jazyk na učení, na druhou stranu třída problémů pro které je to asi nejlepší volba je obrovská a ještě 20 let se s ním uživíš.
    UETOYO
    UETOYO --- ---
    _BENNY: Ne, není! C také není neobjektový assembler.
    UETOYO
    UETOYO --- ---
    RAGNAROK: Otázka by mohla také znít proč C++ a ne C? Genericita --> méně kódu a skoro bez dopadu na výkon. Někdo by taktéž řekl, že snad větší typová bezpečnost -- ale tady bych byl hodně opatrný -- jazyky jako Ada nebo Rust jsou na tom o mnoho lépe.
    UETOYO
    UETOYO --- ---
    Můžeš k tomu přistoupit různě. Např:

    Pokud se budeš učit C++, chtě nechtě si dostuduješ C -- (což je lingua franca) všude ti budou psát že C++ není C a že se to řeší jinak lépe (idiomaticky :) takže budeš pořád v kontaktu s tím, jak se to dělá v C a jak se to dělá v C++ a kde je možné (výhodné/nutné) použít jakou verzi.

    Budeš schopen používat knihovny které jsou v C++ napsané kvůli rychlosti a portabilitě (i když tady je na tom opravdu lépe C -- v C++ buď musíš používat stejný kompilátor, nebo použít extern C -- což tě trochu omezí)

    Zjistíš jak je to napytel být bez balíčkovacího systému (ok BiiCode už nějak funguje), jak se kompiluje a linkuje program pod různými OS (a budou ti vstávat vlasy na hlavě :)

    Jestli ti něco říká OOP, pak bych se C++ nebál, minimálně kvůli jedné knihovně a to je Qt.
    Navíc Python (JS) a C ++ (C) je dobrá kombinace pro jakýkoliv další posun -- třeba i k Java nebo C# či Rust
    _BENNY
    _BENNY --- ---
    RAGNAROK: C++ je proste takovy ukecany objektovy "assembler", pokud nemas rad detaily a veci pod kontrolou (za cenu nutnosti vstrebat mnohem vice ne nezbytne dulezitych informaci), pak si radeji hraj s Pythonem. coz taky neni mysleno jako troleni, je to proste tak.
    RAGNAROK
    RAGNAROK --- ---
    UETOYO:
    Ano, opravdu me to zajima. Zacal jsem se torchu ucit. Neni to urcite prvni clanek. Cetl jsem jsem spousty calnku pro a proti. Prave ze C++ vyzaduje k nauceni nemale usili a casu tak zvazuju jestli to za to stoji. Jestli si nevysatcim s R,Python, Lisp a Fortran. Neprisel jsem trolit ale opravdu pro radu.
    UETOYO
    UETOYO --- ---
    RAGNAROK: Že je C a C++ problematické je všeobecně známo -- C++ má navíc máslo na hlavě kvůli zpětné kompatibilitě s C. Zajímá tě to opravdu, nebo si našel první hatovací článek na C/C++?
    RAGNAROK
    RAGNAROK --- ---
    UETOYO
    UETOYO --- ---
    LangNext 2014 (C++, Rust, D, Go)
    https://www.youtube.com/watch?v=BBbv1ej0fFo
    UETOYO
    UETOYO --- ---
    V nedávné době byla vydána stabílní verze jazyka Rust. Přijde mi hodně zajímavý.
    The Rust Programming Language
    http://www.rust-lang.org/
    UETOYO
    UETOYO --- ---
    Dependency manager: https://www.biicode.com/
    UETOYO
    UETOYO --- ---
    CHRAMOSTAK: Já osobně se teď chystám na obhlídku této knihovny: https://www.threadingbuildingblocks.org/
    CHRAMOSTAK
    CHRAMOSTAK --- ---
    UETOYO: V zasade je, ale ROOT byl navrzen jeste nez se ustalila dnesni podoba STL, takze si nejaky veci, co se pozdeji staly standardem pro C++, vylozil po svem. Ja sel prave cestou uceni ROOT -> C++ a pak jsem se dost divil, ze nejakej kod bez problemu bezici v ROOTu nezkompiluju pres gcc (nebo fungoval jinak). Jde hlavne o pouzivani ROOT-specifickych trid jako TVector nebo TString, pomerne liberalni manipulaci s pointerama a nejaky dalsi veci. Kdyz se to nekdo bude ucit obracene (a bude se drzet toho, co uz zna - stl) tak tyhle problemy mit nejspis nebude.
    UETOYO
    UETOYO --- ---
    CHRAMOSTAK: Díky za reakci. Máš s tím nějaké zkušenosti? Já myslel, že ROOT je obecně jen sada C++ tříd/knihoven.
    CHRAMOSTAK
    CHRAMOSTAK --- ---
    UETOYO: Nasleduje nesouvisejici rant :) Pokud by tady nekdo nedejboze pojal napad ucit se ROOT (za ucelem napriklad osvojeni si silneho nastroje pro analyzu dat, ktery zaroven vyuziva C++), tak bych jenom pridal varovani, ze spis nez ROOT jako nadstavba C++ je spravne pohled na ROOT jako samostatnej jazyk, ktery koncepcne vychazi z C++, ale v nekterych vecech se lisi. Napriklad ROOT ma vlastni definici retezcu a vektoru, ktera nebude kompatibilni s vetsinou kodu v C++ nepouzivajici ROOT. Nastesti vyuzivani tehle matoucich definic je dobrovolne a daji se pouzivat C++ ekvivalenty (coz teda vrele doporucuju, pokud to jde).

    Tohle samozrejme nema nic spolecneho s vyuzitim clingu pro dynamickou kompilaci C++ kodu, to bude vsechno fungovat podle ocekavani.
    Kliknutím sem můžete změnit nastavení reklam