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)).
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
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();
//...
}
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...