Říká se, že genialita je v jednoduchosti. To v těchto případech zrovna moc splněno není. 
Ona je to obecně asi nějaká forma kolektivního masochismu, že zrovna C++ a Java jsou nejpoužívanějšími jazyky.
Jenom pro zajimavost, ktere jazyky by podle Tebe mely byt na vrcholu misto C++ a Javy a kdy se to melo prihodit?
To se dá těžko říct. Ale čekal bych, že když chtějí lidé programovat objektově, tak k tomu budou používat objektové jazyky. Takže bych na vrcholu čekal třeba něco jako Objective C.
Akorát je otázka, zda lidé chtějí opravdu objektově programovat, nebo jen tak napůl. Třeba Java, která byla vymýšlena jako nový jazyk, ale přesto její tvůrci zvolili hybridní cestu C++. Takže pokud lidé chtějí ten styl OOP jako má C++, tak pak musejí akceptovat i ty složitosti, které to s sebou nese a které podle mě víc než bohatě eliminují výhody, jež OOP přináší, protože program se stává nepřehledným, to paradigma pak práci přidělává než aby ji šetřilo, je třeba mít na paměti spoustu pravidel a idiomů, které člověka odvádějí od jádra problému a nutí ho přemýšlet nad tím, jak to vlastně napsat.
Říká se, že genialita je v jednoduchosti. To v těchto případech zrovna moc splněno není. 
Ona je to obecně asi nějaká forma kolektivního masochismu, že zrovna C++ a Java jsou nejpoužívanějšími jazyky.
Souhlas. C++ má na můj vkus příliš mnoho syntaktických pravidel a používá mnoho nepřehledných jednoznakových symbolů. Java či PHP jsou mnohem čitelnější. Ještě lepší je Lisp, ale to je jiná kategorie.
Vrchol nepřehlednosti je kód v odkazu prvního postu, sice to je matematicky supermeganádhera, ale implementace v C++ je peklo. Přitom v takovém Pythonu to jde krátce a přehledně. Ovšem ten je dynamicky typovaný, Java ani C# tohle neumí.
To je právě přesně ono. V dynamicky typovaných jazycích se snad cokoli napíše jednodušeji a přehledněji - pokud jde o objektový návrh. Jenže je jim vytýkána absence možnosti odchycení velkého množství chyb kompilátorem. Ale mašinérie, která v tom staticky typovaném jazyku musí být, aby se v něm dalo nějak objektově programovat, je obludná a kód, který se kvůli tomu, aby ta kontrola fungovala, musí psát, je samotný mnohem náchylnější na zavlečení chyby - právě protože je tam vlastně jen kvůli věcem okolo a ne kvůli problému samému.
Je to asi věc názoru, ale jsem přesvědčen o tom, že jedině kód, který nenapíšu, nemůže být zabuggovaný. Takže jednoduchost zápisu algoritmu bych řadil výš než typovou kontrolu. Na druhou stranu, pokud někdo preferuje statickou typovou kontrolu, tak by měl zvážit neobjektový jazyk, protože výhody objektového paradigmatu se mohou plně projevit až v dynamicky typovaném prostředí. Ono je to vidět i na té Javě, kdy příklon k dynamičnosti je očividný, ale ta koule jejího hlavního inspiračního zdroje je bohužel příliš těžká - dodatečné zavedení generik dokládá, že je dokonce ještě těžší, než by se na první pohled mohla zdát.
Stručně - za problém C++ a Javy považuji, že se snaží skloubit neskloubitelné.