Herb Sutter na svém blogu oznámil, že byl jednohlasně schválen standard C++11, dříve známý jako C++0×. Chvillku ještě potrvá, než bude zveřejněn, ale Sutter doufá, že by to mělo být během jednoho roku.
Herb Sutter na svém blogu oznámil, že byl jednohlasně schválen standard C++11, dříve známý jako C++0×. Chvillku ještě potrvá, než bude zveřejněn, ale Sutter doufá, že by to mělo být během jednoho roku.
Tak v gcc to bude urcite, uz ted je tam plno ficur z c++11. Ovsem pro prenositelny kod mezi prekladaci to asi dlouho nebude. Navic pochybuju, ze je C++ jeste pro nekoho priorita.
Coze? :D Pracuji v odvetvi embedded zarizeni pro velke nadnarodni spolecnosti a velmi byste se divil, ale C++ je zde hlavnim jazykem. A myslim, ze pro core a middleware vrstvy jeste dlouho vydrzi. S C++ jeden problem je - velky nedostatek kvalitnich vyvojaru - k dispozici jsou jen sami javisti, c-sharpisti apod.
Bodaj by nie, c++ sa musi studovat, javu mas zmaknutu za vikend (nemyslim api). Keby som si mal vybrat medzi C a C++, to radsej uz to C.
A to nehovorim o debilnom systeme hlavickovych suborov, super inteligentnych hlaskach chyb pri kompilacii, refaktorovanie je ako za trest atd atd.
C++ má vnitřní logiku a konzistenci.
Pokud se budete C++ učit nazpaměť, je to nesložitější jazyk.
Pokud se naučíte jeho vnitřní logiku, je jednodušší, než Java.
Já osobně bych si mezi C a C++ Céčko nevybral. C nemá jediný benefit a jediný objektivní důvod, který by mohla nabídnout oproti C. Vzácně ani jeden. Tady je to naprosto jednoznačné.
Systém hlavičkových souborů je stejný jako v C. Inteligence hlášky záleží na kompilátoru, Visual C++ je na tom bídně, GCC o trochu líp, ale třeba Clang řekne velmi přesně a srozumitelně, co je a kde špatně. Refaktorování stejně jako v každém složitějším jazyce záleží na tom, jak je napsaný kód (a neříkejte mi, že u Javy tomu tak není).
A kolik z techto nadnarodnich spolecnosti vyviji C++ prekladac a hrne se do implementace C++11? Navic aby to nejak mohutne propagovao? V mnoha oblastech je C++ hlavnim vyvojovym jazykem, ale tam v pohode zili se soucasnym stavem a jeste radu let budou. Novy standard je fajn, ale nikdo se z nej na zadek neposadi, vcetne me. Taky delam v C++, ale ze bych v novem standardu videl nejakou killer ficuru kvuli ktery bych se do toho hrnul, tak to fakt rict nemuzu.
„Taky delam v C++, ale ze bych v novem standardu videl nejakou killer ficuru kvuli ktery bych se do toho hrnul, tak to fakt rict nemuzu.“
Já naopak ano.
Protože stará a nová norma je dělána naprosto bezešvě s dokonalou zpětnou kompatibilitou.
C++ je jeden z mála jazyků, kde se nemusíte starat, jakou normu používá kompilátor.
Céčko, Pyhon, Java, Ruby, Perl, a dalším se nepodařilo udělat při novějších změnách dokonalou zpětnou kompatibilitu. U všech těchto jazyků jste nuceni se starat v jaké verzi jazyka píšete.
C++ je jednotné. Pokud kompilátor bude umět novější verzi, klidně v něm přeložíte starší verzi bez jediné změny. Ani po tom nemusíte pátrat. Takhle dokonalá standardizace a podpora znamená, že hned teď můžete všechny C++ zdrojáky překládat C++11 překladačem a bude to bez problému. To se většině programovacích jazyků nepodaří.
Nový C++ standard obsahuje dost dobrých nových vlastností a já je využiji okamžitě. Například budu konečně psát do zdrojáku UTF-8, UTF-16, UTF-32 stringy jako literály, konečně řeknu výčtovému typu (enum) jakým celočíselným typem má být reprezentován, je možné do unionu zařadit třídu, což dříve nešlo. Lambda funkce jsou rovněž velmi šikovná věc. A thready a synchronizační objekty jsou součástí jazyka, takže je možné psát perfektně přenositelně multithreadové programy pouze s využitím standardu C++.
Navíc většina C++ kompilátorů už nový standard z většiny, ne-li celý umí, takže není třeba na nic čekat.
Situace v C++ je ideální. Nikdo Vás nenutí do nového standardu, ačkoli kompilátory jej umí. Přechod na nový standard je absolutně bez jakéhokoli zádrhele, nemusíte totiž dělat vůbec nic – vše je transparentní, kompatibilní. Jakmile se Vám jakákoli vlastnost z nového standardu bude líbit, prostě jí použijete ve zdrojáku aniž byste cokoli dalšího řešil. Takhle perfektně vyřešený přechod tak luxusně pro programátory se podařil jen minimu programovacích jazyků a minimu operačních systémů.
Takže já vidím nový standard jako killer featuru. Na rozdíl od Pythonu, Ruby, Javy, Céčka, kde nový standard dělali tak aby to bylo skvělé pro autory, ale programátoři museli přechod řešit a dávat mu čas, peníze, náklady a někdy i značné úsilí, C++ se udělal skvělý, luxusní a bezproblémový přechod bez jakýchkoli opatření na straně programátora.
Já ovšem nechápu, proč to řešíte?
Nikdo Vás k tomu nenutí.
Jediné bez čeho člověk skutečně nemusí být a co skutečně musí je nadechovat a vydechovat a vylučovat odpadní látky, všechno ostantí je volitelné. (hláška z Big Bang Theory od Sheldona)
Klidně můžete být i bez počítače, nebo bez internetu, tak moc by se zase nezměnilo.
Já jenom píšu:
1) Přechod na novější standard C++ neznamená vůbec žádnou práci, čas, energii ani náklady – což souvisí s filozofií C++ a což z něho dělá velmi seriózní jazyk. Zde je odpověď na to, proč se jako jeden z důvodů jazyk C++ používá tak intenzívně – protože dává záruky, že Vaše práce a zdrojový kód nepřijde nikdy v budoucnu vniveč a nikdy Vás nezatíží žádnými náklady na přechod do další verze. To je to o čem můžete v Pythonu, Perlu, Javě, Céčku, Déčku, Eiffelu, PHP, … a řadě dalších jazyků jen marně snít.
2) Ač je nová norma C++ pár dní stará, skoro vše už můžete na většině C++ kompilátorech používat dnes.
3) Nikdo Vás do používání nových featur nenutí. Pokud se rozhodnete psát pouze ve staré normě, všechny kompilátory navěky věků jí budou umět – protože nová norma je s nimi natolik v souladu, že přeloží bez problémů a jediného zádrhele naprosto všechny zdrojáky postavené na staré normě – viz bezvadná zpětná kompatibilita.
4) Nové vlastnosti umožňují dělat rychlejší programy. Například omezit kopírování obrovských struktur díky r-value věcem apod.
Závěr: Jednodušší používání nových vlastností nové normy už nemůže být jednodušší. Nebolí to, nijak to nepoznáte a čekají Vás pouze benefity.
Podle mého pro většinu lidí je problém, že znají možná pár procent starého C++, pak jej nevyužívají efektivně a často se najdou i pomýlenci, kteří používají C++ pouze jako C + třídy. Jde to, ale 99% efektivity vývoje C++ tak ztrácejí. V takovém případě pak je zbytečné se hnát do nové normy, když znají i tak jen zlomeček C++ samotného.
"Bezvadná zpětná kompatibilita."
Haha, tady jste trochu vedle, třeba takové auto ničí zpětnou kompatibilitu (dává mu jiný význam). Některé věci ze standardu prostě zmizely (export template).
http://channel9.msdn.com/Shows/Going+Deep/Herb-Sutter-C-Questions-and-Answers
http://channel9.msdn.com/Shows/Going+Deep/Conversation-with-Herb-Sutter-Perspectives-on-Modern-C0x11
To Java je v tomto ohledu lepší, tam rozbili tuším jenom enum - a to ve verzi asi 1.2.
„Nevidim zadneho velkeho hrace v IT pro ktereho by bylo C++ priorita.“
Já naopak nevidím moc oborů, které by přežily bez C++.
Možná to nevidíte, ale Java běží na javovské virtuální mašině napsané v C++. Celý microsoftský .NET běží na virtuální mašině napsané v C++.
Většina počítačových her běží na herních enginech napsaných v C++.
C++ je jednoduše nenahraditelný jazyk. Ve své nice, tedy jazyk optimalizovaný na výslednou rychlost programu a zároveň velmi nízké nároky na systémové zdroje výsledného programu. Spolu s velmi vysokou efektivitou vývoje, protože je to značně high level jazyk. Navíc je to jazyk samonosný, teoreticky v něm naprogramujete cokoli, čehož většina programovacích jazyků není schopna a potřebuje podporu jiného jazyka. Java potřebuje JVM psanou v C++, Python je plný C/C++ knihoven, atd.
C++ je nalezlé všude, protože zkrátka v určitých oblastech není nic lepšího.
Nemluvě vůbec o embedded oblasti – což je oblast, kde se programuje více, než pro PC, jen je to tichá šedá eminence vzadu.
To, že javisti hulákají, nebo pár programátorů v jiném jazyce – to je menšina celého sw průmyslu. Kromě toho že hodně křičí a jsou vidět neznamená, že je to také přirozené rozdělení sil v sw.
Víte, že se prodá mnohem více embedded procesorů, než procesorů do PC a serverů? Už to by Vám mělo naznačit leccos o tom, kde jsou zisky a kde je (a ještě bude) majoritní obchod a v čem se programuje.
Zkuste se dnes prosadit s desktop programem a vydělat. Přecpáno, rozděleno. V embedded oblasti je ještě mnoho místa. I ten Apple si uvědomil, že zisky jsou v mobilech a tabletech, ale nejen tam.