Odkaz na slajdy je na konci první kapitoly. V diskuzi je s odkazem hodnocen jako spam...
..I say.. let's nuke'em from the orbit.. that's the only way to be sure..
This is clearly an important species we're dealing with and I don't think anybody has the right to arbitrarily exterminate them.
Protože je třeba narvat tam dalších 475312 fičůr, který nikdo nikdy nebude potřebovat. Z C++ se stává velice odporný jazyk. Číst cizí C++ kód bude noční můrou všech programátorů.
Cist kod spatneho programatora je nocni murou i kdyby psal v Jave, nebo v necem jeste striktnejsim.
Cist kod dobreho programatora se da i v perlu. Dobry program je totiz takovy, ktery se da cist dobre, vcetne overeni, ze kazda procedura dela to co o sobe trvdi (nazvem, dokumentaci, ...). Pokud maji nove ficury "prirozeny" zapis, pak se da takovy program cist velmi intuitivne. V pripade overovani pak vim kam se mam kouknout, obzvlast kdyz chci overit jednu vec a ne cely program. (Overit cely program je casto slozitejsi nez napsat ho znovu (neovereny)).
Dobry program !=> dobry kod a aj dobry kod !=> dobry program.
Ja som videl hrozne vela dobrych programov ktore mali hrozny kod.
Dobry program je taky ktory robi to co ma spravne.
Přidávaj tam podivný hacky, který když použiju, tak neskutečně sprasí kód. Pokud chci mít čistej přehlednej a elegantní kód, tak je nemůžu použít => proč to tam teda dávaj?
Všichni by měli psát v assembleru. Objekty, funkce a výjimky přeci nikdo nikdy nebude potřebovat. ;-)
Objekty, funkce a výjimky potřebuje spousta lidí.
Koukněte třeba na tohle: https://en.wikipedia.org/wiki/C%2B%2B11#Attributes
Z toho aby si člověk poblil monitor.
Takové hezké a elegantní (sarkasmus)
int [[attr1]] i [[attr2, attr3]];
[[attr4(arg1, arg2)]] if (cond)
{
[[vendor::attr5]] return i;
}
Naprosto zbytečný a nepředvídatelný syntaktický cukr
int my_array[5] = {1, 2, 3, 4, 5};
// double the value of each element in my_array:
for (int &x : my_array) {
x *= 2;
}
Nemáme snad na tohle náhodou makra??!!
constexpr int get_five() {return 5;}
int some_value[get_five() + 7]; // Create an array of 12 integers. Legal C++11
ad. 1, na tomhle se ti nelibi co? Nahrazuje to #pragma - coz je silne compiler dependent zalezitost.
ad 2, foreach se zavadi hlavne kvuli tomu, aby se nemusela pouzivat makra. Navic novy foreach v C++11 funguje s kontejnery, coz zadnym makrem neudelas. Btw, jinde ti foreach nevadi? https://en.wikipedia.org/wiki/Foreach_loop
ad 2: Nechápu, co s tím mají společného makra? Foreach obecně nemám rád, ale to je asi dost subjektivní záležitost.
PS: a co ad 3? ;)
3. Vyuzitie mas napr. tu: http://en.cppreference.com/w/cpp/types/numeric_limits/max
Makro spracovava preprocesor ktori nema ziadne informacie o typoch.
Ako spravys s makrom toto?:
std::numeric_limits<int>::max();
std::numeric_limits<double>::max();
mozes vytvorit pre kazdy typ (alebo urcitu skupinu typov) vlastne makro, ale co potom pri generickom programovani:
template <class T>
void fnc(){
//...
std::numeric_limits<T>::max();
//...
}
Umm C++ je už dávno vyzerá ako z rozprávky "Jak pejsek a kočička pekli dort"
Pitomost, naopak s c++11 lze psát mnohem čitelnější kód (i pro ostatní), a hodně fíčur c++11 využívám často a rád. Ještě dodělají static if a budou přehledné i šablony.
@ ...překrytí operátoru tečka
Není to spíš přetěžování operátoru tečka (overloading, nikoli overriding) ?
Mate samozrejmne pravdu, zkusim postnout opravu, ale uz je to trosku s krizkem po funuse.
Perfektní, lambda funkce mi v C++ fakt chyběly, i klíčové slovo auto se bude hodit. C# se může jít zahrabat!
Lambda funkcie su zatial lepsie v c#. V c++ chybaju polymorphicke lambdy ktore sa snad dostanu do c++14, auto ma uz davno eqvivalent v c# (var).
Ja sa hlavne tesim na Constrainty (casom aj koncepty). Mozu velmi sprehladnit genericke programovanie(chybove hlasky su horor) a hlavne umoznia overloading templatov podla parametrov. Moze to mat aj dopad na vykon, rozne algoritmi mozu byt specializovane na rozne kontaineri...