Odpovídáte na názor ke článku Microsoft a C++11.
[15]: Největší průšvih C++ je C. Jazyk C má mnoho velmi špatných věcí, které bohužel z důvodů kompatibility jsou i v C++. Sice několik největších ptákovin C bylo z C++ vyhozeno (jako např. automatické přetypování void pointeru na libovolný typ).
C++ se nejdřív mnoho let vyvíjelo divoce. 15 let jednoduše Stroustrup, Borland a další volně a evolucí pulírovali C++ a přidávali co považovali za užitečné. Teprve po 15 letech přišel první ISO standard C++. A po dalších 12 letech přišel druhý ISO standard C++11. Takže vašich 10 let je určitě splněno.
Nejbližší další standard určitě nebude dříve než 2024–2025. Změny mezi C++89 a C++11 nebyly příliš velké, většina z nich je spíše kosmetické upravení předchozího chování a těch skutečně nových věcí je minimum.
Jako největší tragédii C++ vnímám člověka jménem Andrei Alexandrescu, který z nějakých, pro mě nepochopitelných, důvodů má obrovské slovo. Je zamilován do nesrozumitelných a složitých šablonových struktur. Kdyby tento člověk zmizel z C++, velmi by to prospělo podle mého. STL vnímám jako skutečně nepovedenou část C++. Nulová kontrola parametrů, nevirtuální metody, nulová rozšiřitelnost a ze začátku nezaručené chování u výjimek.
C++ ale jde stále stejným směrem. Maximální rychlost a efektivita výsledné binárky (což implikuje složitost C++), absolutní a stoprocentní zpětná kompatibilita se všemi předchozími standardy. Což je věc, kterou nemůže nabídnout ani C (každý standard C je nekompatibilní s jinými), ani Java.
C++11 opravila spoustu pitomostí jazyka C. Například NULL už nemusí být celočíselná nula, je možné zadávat konečně Unicode literály, konečně je možné výčtové typy (enum) otypovat přesným celočíselným typem, přidána podpora threadů, uvolnila se zbytečně přísná pravidla pro unie.
Mě přijde C++ jako vyvážený, pokud si uvědomím, že v rámci efektivity a rychlosti výsledné binárky je třeba mít pod kontrolou víc věcí, než v jazycích, kde na výsledné rychlosti nezáleží. Pouze STL v některých aspektech vidím jako zpackané – iostreamy; kontejnery co se při nečekaných parametrech složí a zhroutí program namísto ošetření; stringy, které se chovají málo řetězcově, ale spíše je to obalené binární pole.
Osobně mi přijde C++ jako nejlépe vedený standard ze všech programovacích jazyků. Důsledně dbá na jednotnost a přitom komplexnost jazyka, absolutní zpětnou kompatibilitu s předchozími verzemi. Jediným druhým jazykem, o kterém toto mohu říci je Ada. Jinak ostatní programovací jazyky důsledně kašlou na programátora i na serióznost.
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 36 295×
Přečteno 25 437×
Přečteno 23 849×
Přečteno 20 234×
Přečteno 17 943×