Portál AbcLinuxu, 7. listopadu 2025 12:11
Čím více a čím agresivněji se nějakému projektu předpovídá brzký zánik, tím déle obvykle přežije. Předpovídat zánik jazyku, který se pro účely systémového programování používá už 40 let a který po tu dobu své pozice (v této oblasti) stále posiluje, je poněkud odvážné…
To, že tu někteří prezentují emocionální a argumentačně prázdné výpady proti C++, neznamená automaticky, že musíte reagovat stejným způsobem.
protože C je de facto velmi malou podmnožinou C++Toto neni pravda, pomerne dost v praxi pouzivanych konstrukci z C nen soucasti C++. Prikladem budiz variadicka makra, otevrena pole a pokrocile literaly. Navic nektere konstrukce znamenaji v obou jazycich neco jineho.
blockquote?
Jenom to, že když použiji jakýkoli element, musím pak nabouchat milióny dalších. Například poctivě označit odstavce elementem p – tudíž použitím jednoho elementu musím oelementovat všechno.Nojo, v předpovídání budoucnosti jste ještě neměl jediný omyl... ale blockquote používat neumíte a místo toho plácáte něco o odstavcích, než abyste to úplně normálně vyzkoušel a zjistil, že to co píšete, je nesmysl.
"Jazyk D ovšem s C++ kompatibilní není. Aby mohl C++ nahradit, musel by mít nástroj, který by dokázal využít C++ moduly a snadno přejít. To je nutnost. "
není vůbec potřeba konvertovat existující projekty, ale zajistit ABI kompatibilitu, což D má.
"Bohužel jazyk D nemá některé featury C++"
které?
"D také zrušil objektové pojetí C++ a dědičný styl přejal z Javy a funkcionálních jazyků."
to je naprosto v pořádku a správný krok.
"Základní problém je, že C++ bylo navrženo pro řešení praktických úkolů."
od kdy? Právě D je navrženo k praktickému použití, oproti C++, a proto netrpí některými mouchami C++ (píšu pro ábíčko seriál o D, vše bude popsáno)
"Něměl jsem pocit, že D řeší něco lépe, než řada existujících jazyků."
rozhodně lépe než C++, což je jeho cílem.
"C++ jako C s třídami neukáže ani 1% jeho efektivity."
možná ještě metaprogramming a operator overloading se občas hodí, ale stdlib, encapsulation, exceptions a spousta věcí z nové 0x specifikace je naprosto otřesných.
vezměme v potaz třeba tohle: http://ideone.com/sdPBZ Tento malý test dokazuje, že encapsulation v C++ je defektivní, protože to lze naprosto snadno obejít (díky tomu, že class v C++ je stále obyčejná struktura ve které lze použít offset)
nebo iostream - co je lepší?
std::cout << foo << " bah " << meh << " blah " << std::endl;
které je naprosto nepoužitelné při i18n/l10n, je delší a vypadá hnusně
nebo
printf("%i bah %f blah\n", foo, meh);
který je naprosto bez problému?
Argument "type safety" jsou kecy, buď je kód správně nebo blbě a to, že si někdo neumí správně ověřit parametry není můj problém.
V porovnání s D:
co je lepší?
string a = "hello world";
string b = a.substr(0, 5); // hello
nebo
char[] a = "hello world".dup;
char[] b = a[0 .. 5]; // hello
co je lepší?
std::map<string, int> mymap;
mymap.insert(std::pair<string, int>("foo", 5));
nebo
int[string] harr;
harr["foo"] = 5;
?
takhle by se dalo pokračovat do nekonečna..
<< můžete rozšířit na libovolnou třídu, u printf() to nejde (o dalších lahůdkách jako např. automatické překódování škoda ztrácet řeč). U druhého příkladu mi ten rozdíl nepřipadá tak velký, aby to byl nějak relevantní argument. Třetí příklad je podvod, protože i v C++ můžete napsat mymap["foo"] = 5.
vezměme v potaz třeba tohle: http://ideone.com/sdPBZ Tento malý test dokazuje, že encapsulation v C++ je defektivní, protože to lze naprosto snadno obejít (díky tomu, že class v C++ je stále obyčejná struktura ve které lze použít offset)tohle je ukazka naprosto pokrivenyho mysleni. Encapsulation by melo chranit proti chybam a spatnymu pouziti, ne proti lidem. To ze kdyz se nekdo bude umyslne snazit to porusit tak se mu to povede je spis vyhoda...
Class je přece furt jenom struct.
píšu pro ábíčko seriál o D, vše bude popsáno
Skvělé! Už se těším:) Doufám, že to bude spíše o D2.
D1 se už vůbec nezabývám.. a samozřejmě s knihovnou Phobos.
to jsi mě asi trochu nepochopil
Já C++ netrolluju, já kritizuju jeho mouchy, sám C++ používám pro svůj projekt a ono se dá použít, ale jen jako "C with classes" .. ony ty "špatné" části jsou většinou jen volitelné, takže se dají "nepoužít" a C++ může být decentním jazykem.. 
Teda takhle, nechápej mě špatně, ten projekt celkem obdivuju, asi bych to neuměl napsat nebo se k tomu minimálně nedokopal, ale teda ten kód, to je docela humus
To už by asi bylo lepší to čistý C.
A mimochodem co takhle boost, proti tomu taky něco máš, předpokládám...?
Btw, po odstranění Boostu se 2x zkrátila kompilační doba a po odstranění Boost.Python dvakrát narostly FPS (díky odstranění Python actionqueue)
A proč máš takovýho kódu v hlavičkovejch souborech? Přijde mi, že tam prakticky nerozlišuješ mezi .h a .cpp.
A preto napr. toto ide v c++0x stale skompilovat, ze?
int main(){
auto int x = 5;
return x;
}
Videli ste vobec tie zmeny v pythone? Zmeny su aspon navonok relativne male a aspon velka cast z nich svoj vyznam urcite ma.
Navyse s trochou snahy sa da pisat kod pre obe verzie pythonu.
C++ nešel cestou Pythonu či Perlu, že vše změní už jen pro ten pocit, že to překopal.Python naštěstí tou cestou šel, měl hodně restů, které nešly v 2.x verzi opravit.
Osobně si myslím, že nejlepší cesta by v budoucnu byla sjednocení jazyků C a C++ do jednoho jazyka.Apage satanas. Naštěstí nám ale céčko zůstane :).
#define MyNULL NULL a v budoucnu to pak jen přehodit #define MyNULL nullptr a třeba si podivit co se stane
.
.
Rozumím tomu opravdu dobře, že v C++0x budu muset přizpůsobit názvy metod třídy abych ji mohl pohodlně iterovat? Tedy, budou to muset být begin() a end()?Ne, neřekl bych, teda doufám. Jinak ale +1 k STL, imho koule na noze C++.
stdlib/STL je jedním z hlavních problémů jazyka C++.
pomalý kontejnery, streamy horší než v Cčku, pomalý stringy, nesourodý exceptions, debugování horší než v Cčku..
std::for_each z hlavičky algorithm, ale o v C++0x novém klíčovém slově foreach.
vim ~/.emacs
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.