abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 22:33 | IT novinky

    Apple na své vývojářské konferenci WWDC24 (Worldwide Developers Conference, keynote) představil řadu novinek: svou umělou inteligenci pojmenovanou jednoduše Apple Intelligence, iOS 18, visionOS 2, macOS Sequoia, iPadOS 18, watchOS 11, …

    Ladislav Hagara | Komentářů: 0
    dnes 21:44 | Nová verze

    Vyšla nová verze XMPP (Jabber) klienta Gajim, která přidává podporu reakcí pomocí emoji (XEP-0444: Message Reactions) a citace zpráv (XEP-0461: Message Replies). Přehled dalších vylepšení je k dispozici na oficiálních stránkách.

    sonicpp | Komentářů: 0
    dnes 15:00 | Nová verze

    Po po téměř roce vývoje od vydání verze 5.38 byla vydána nová stabilní verze 5.40 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 75 vývojářů. Změněno bylo přibližně 160 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.

    Ladislav Hagara | Komentářů: 4
    dnes 12:00 | Zajímavý článek

    Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.

    Fluttershy, yay! | Komentářů: 1
    dnes 08:44 | Zajímavý software

    Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).

    Fluttershy, yay! | Komentářů: 2
    dnes 02:22 | Nová verze

    Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    8.6. 17:55 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 10
    7.6. 14:55 | IT novinky

    Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.

    Ladislav Hagara | Komentářů: 24
    7.6. 11:44 | Zajímavý software

    NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    7.6. 10:55 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    C++ hate

    22.12.2022 10:39 | Přečteno: 1294× | Programování

    Trochu jsem se začal učit C++, koupil jsem si nějaké knížky, docela jsem pochopil raii, smart pointery atd., nicméně bych se chtěl zeptat, zda takhle opravdu vypadá správné a idiomatické C++:
     
    #include <iostream>
    #include <string>
    #include <vector>
    
    void read_lines(std::vector<std::string>& lines);
    void print_lines(const std::vector<std::string>& lines);
    
    int main()
    {
        std::vector<std::string> lines;
        
        read_lines(lines);
        print_lines(lines);
        
        return 0;
    }
    
    void read_lines(std::vector<std::string>& lines) {
        std::string line;
        
        while (getline(std::cin, line))
            lines.push_back(line);    
    }
    
    void print_lines(const std::vector<std::string>& lines) {
        std::cout << '\n';
        for (auto x : lines)
            std::cout << x << '\n';
        
    }
    
    Protože skoro ve všech knihách o C++ nepoužívají předponu std::, ale using namespace std, takže ten kód vypadá docela stravitelně, nicméně je doporučeno používat std:: prefix, ale potom ten kód vypadá opravdu superhnusně.

    Jak vy píšete C++?        

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    22.12.2022 10:57 jai masterrace
    Rozbalit Rozbalit vše Re: C++ hate
    nemas pouzivat using namespace std v header filech, v cpp klidne muzes pokud nemas zadne konflikty v nazvech metod a typu.

    a c/c++/rust je na hovno, nauc se jai
    22.12.2022 22:46 Nerdlang
    Rozbalit Rozbalit vše Re: C++ hate
    Já se učím Erlang ale asi se na to vyseru. Stejně mi to k ničemu nebude.
    dolik.rce avatar 22.12.2022 12:18 dolik.rce
    Rozbalit Rozbalit vše Re: C++ hate
    V moderním C++ můžeš použít using std::vector;, čímž deklaruješ, že tuhle konkrétní třídu chceš mít dostupnou v aktuálním namespace bez prefixu. Pak se nemusíš bát, že si způsobíš nějaké obtíže tím, že jsi z std:: namespace přitáhl všechno (včetně operátorů a funkcí, o kterých si nikdy ani neslyšel).
    22.12.2022 12:19 sad
    Rozbalit Rozbalit vše Re: C++ hate
    Tak v některých knihách používají:
    using std::vector;
    using std::string;
    using std::cin;
    using std::cout;
    
    to je asi nejlepší způsob, nicméně v header files musí být všude std::
    23.12.2022 00:57 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: C++ hate
    lines.push_back(line); není idiomatické, idiomatický by byl move (lines.push_back(std::move(line)); nebo dtto s emplace).

    Chlupaté závorky by to chtělo používat konzistentně (u main funkce jsou jinde než u ostatních) a osobně silně preferuju je mít i okolo jednořádkových if/for/atd.

    Import ze std nejlépe pomocí using std::vector atd.

    Jinak jestli tohle přijde jako ošklivý kód, tak počkej, až uvidíš opravdu ošklivé C++ :)
    23.12.2022 17:45 ttttttttttttt
    Rozbalit Rozbalit vše Re: C++ hate
    Neidiomatická mi přijde funkce
    void read_lines(std::vector<std::string>& lines);
    Dává prostor pro různá chování v případě, když kolekce nebude prázdná a omezuje načítání na vektor. Raději
    void read_lines(std::insert_iterator<std::string>& it);
    nebo
    std::vbector<std::string>& lines read_lines();
    31.12.2022 11:54 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: C++ hate
    Dává prostor pro různá chování v případě, když kolekce nebude prázdná a omezuje načítání na vektor. Raději

    void read_lines(std::insert_iterator<std::string>& it);
    Nemelo by to byt spis takto?
            void read_lines(std::insert_iterator<std::vector<std::string>>& it);
    
    Cimz to stejne omezis na vektor :-)
    nebo

    std::vbector<std::string>& lines read_lines();
    A tohle asi melo byt spis takto:
            std::vector<std::string> read_lines();
    
    :-)

    Jinak to ze funkci read_lines() muzes predat konteiner ktery neni prazdny je spis vyhoda nez nevyhoda. A pokud bych to chtel rozsirit i na jine konteinery nez std::vector, tak bych to udelal spis takto:
            template<typename Container>
            void read_lines(Container &c);
    
    5.1.2023 13:44 jdsulin
    Rozbalit Rozbalit vše Re: C++ hate
    To jsi asi vystihl jeden z hlavnich problemu C++, ale i C. Pokud to neni receno v dokumentaci, tak netusis, co presne ti funkce s parametry udela. Jestli ten kontejner smaze a pak prida nebo zda ma pridavat, atd. Je to stejne jako, kdyz mas treba funkci, ktera vraci pointer v C. Mas ho pak uvolnit nebo je to soucasti jine struktury, ktera se uvolnuje jinde napr:

    Point* getStart(Line* line)); // Point je soucasti struktury Line a tim padem se uvolni spolu s uvolnenim Line nebo je to nova instance tridy Point a musis ji uvolnit?

    Podle me by to v tomto pripade mel byt std::vector<> navratova hodnota funkce readLines(), pak je to docela jasne, ale samozrejme bavime se o C++11, kdy std::vector ma move semantics, jinak ti teoreticky hrozi kopirovani celeho vektoru, i kdyz to je jedna ze zakladnich optimalizaci na kterou je spolehnuti.

    Ale dobra praxe je - delej to jak chces, ale v ramci jednoho projektu vzdycky stejne.
    5.1.2023 19:52 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C++ hate
    V C, ak sa nemusí uvolniť, môžeš definovať s parametrom const.
    debian.plus@protonmail.com
    6.1.2023 08:32 jdsulin
    Rozbalit Rozbalit vše Re: C++ hate
    Pokud chces pointer, ktery muzes menit nebo dale pouzivat treba ve funkce void setX(Point* point), tak ti const nepomuze. V C++ je v takovem pripade lepsi pouzit referenci.

    A vlastne jsi narazil na dalsi problem C/C++ :) const je velmi dobre pouzivat, ale realne to nezarucuje vubec nic. Pamatuji si, ze jsem pouzival jednu knihovnu, ktera vypocitavala prusecik a jeden vstupni parametr byl const vec3d* normal, po provedeni funkce nastalo normal = -normal :)
    6.1.2023 11:11 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: C++ hate
    Hele už je to fakt průhledný, že podprahově prosazuješ Rust :)
    9.1.2023 17:08 jdsulin
    Rozbalit Rozbalit vše Re: C++ hate
    Spise uz mam za sebou docela hodne kodu v C/C++ :) ... Rust nepouzivam
    9.1.2023 17:49 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C++ hate
    Treba citát dokumentáciu alebo mat unit testy.
    debian.plus@protonmail.com
    Gréta avatar 23.12.2022 19:52 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: C++ hate
    24.12.2022 23:19 Heretik
    Rozbalit Rozbalit vše Re: C++ hate
    Pamatuji C++ bez šablon. Zortech, Borland, GNU, Microsoft.

    Byl to dokonalý jazyk.

    Dokonalost nemůže být ještě dokonalejší. Když přidáte cokoliv k dokonalé věci, zkazíte ji.

    Zkazili jste to. Úplně.

    Ta soudružka Gréta má úplnou pravdu.
    25.12.2022 22:33 _
    Rozbalit Rozbalit vše Re: C++ hate
    ale hovno, C++ byla vždy sračka

    ono i céčko je sračka, ale menší než C++
    26.12.2022 06:30 _
    Rozbalit Rozbalit vše Re: C++ hate
    founded the rust vegan retard
    27.12.2022 11:21 _
    Rozbalit Rozbalit vše Re: C++ hate
    no jestli zvlada programovaci jazyky stejne dobre jako anglictinu, tak nemas pravo se k programovani vubec vyjadrovat, pologramotny debile :)
    27.12.2022 13:37 _
    Rozbalit Rozbalit vše Re: C++ hate
    Sklapni polohramptny vegane ovladany danone a zerouci fruktozu
    27.12.2022 14:32 t@fu
    Rozbalit Rozbalit vše Re: C++ hate
    Fu vidim ze to pozirani mrtvych zvirat te dela dost agresivnim. Na cas se stat alepson vegetarianem.
    27.12.2022 17:10 _
    Rozbalit Rozbalit vše Re: C++ hate
    Jsem členem PETA: People Eating Tasty Animalls
    26.12.2022 12:37 Jose
    Rozbalit Rozbalit vše Re: C++ hate
    +1
    31.12.2022 16:16 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: C++ hate
    -1
    10.1.2023 22:45 Luky
    Rozbalit Rozbalit vše Re: C++ hate
    Zacinal som na basicu v tej dobe at800

    Potom prislo na rad prve pc dal som to na pascal

    Ale jedna znama mi povedala pascal neni nic profesionalne potom som pochopil ze skutocny programatori robia v c a c++ okolo roku 1999 to bolo ok

    No a po tolkych rokoch akurat som mrkol na freepascal zhrozil som sa k comu ten jazyk dospel fakt delphi je slaby odvar a tak len zo zaujimavosti som vygooglil freebasic a celkom sa mi to zapacil a vyzera ze basic je to prave
    15.1.2023 20:34 vgy
    Rozbalit Rozbalit vše Re: C++ hate
    Okolo roku 1999 bolo jasné, že tí správny nerdi, čo sa už v živote nechcú nič učiť, nechcú čumieť do PC od rána do večera a nevnímať svet okolo zistili, že jediný správny jazyk je Visual Basic, v ktorom zbúchajú to čo chcú(a keď niečo treba opraviť, zbúchajú to tiež) a potom sa môžu venovať spaniu za PC(a keď príde šéf, tak sa prebudia)...

    Lenže Microsoft im to v tomto roku pokazil a aj znalci Visual Basic sa musia radšej učiť C#... Fungujúcom zčasti aj pod Linuxom, hehe, ale Microsoft musí ešte popracovať, teda keby chcel :)

    A nejaký Erlang, čo sa chváli všeličím, ale praví znalci Číňaňia(v USA) naň samozrejme háždu bobek :)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.