Po pierwsze gubisz kontekst. Mowa jest o językach dla początkujących i jaki jest sens uczyć się w takim wypadku C++. Ale do sedna.
Cytat(Theqos @ 3.09.2012, 12:23:44 )

Ale jak już znasz C++ w stopniu średnim to możesz skorzystać z uogólnionego obserwatora i delegatów, które używa się tak łatwo jak system eventów i delegatów z C#. Gdzie w Javie jest dupa zbita i w najlepszym wypadku musisz się zadowolić anonimowymi klasami wewnętrznymi z implementowaniem jednej konkretnej metody actionPerformed, czy który tam interfejs obserwatora implementujesz.
Który to mechanizm jest spójny ideowo. Ma masę niepotrzebnego kodu i cokolwiek mało wydajny ale jest spójny ideowo i nie wprowadza nowych pułapek.
Cytat
Ja wiem, że teraz (tzn. od dłuższego już czasu) jest nagonka na C++, szczególnie przez ludzi znających najnowsze (chociaż nie takie nowe, różne lispy dalej nie mogą zawładnąć światem) osiągnięcia z dziedziny języków programowania, ale ja lubie być adwokatem diabła

Nagonka jest odkąd powstało. Bo problem C++ polega na tym, że jest jedyny. Jak ktoś się śmieje z PHP to mówisz mu, że niech sobie stąd idzie i pisze w swoim Ruby/Pythonie. Programista C++ nie ma do czego innego uciec (no, może do C, ale to wymaga też samozaparcia).
Cytat
Oczywiście, że C++ jest skomplikowany i ma masę dziwnych i niebezpiecznych rzeczy, ale daje też niezwykłą swobodę i możliwość rezygnacji z narzutu gdzie tego chcemy. I to nie jest tak, że trzeba używać wszystkiego, bardzo modnym jest zakazywanie używania niektórych części języka w konkretnych projektach. No i jeszcze te wychwalanie C, bo prosty i dlatego lepszy od C++. Ja tam lubie moje namespace'y i template'y i nie zamierzam z nich rezygnować

A tutaj mieszasz. Daje taką swobodę jak C. Wybiera się C++ by mieć swobodę C i nie pisać aż tyle nadmiarowego kodu, ale ten kompromis boli i to jest dyskusja dla doświadczonych programistów, więc my możemy sobie pogadać, ale nie zmienia to faktu, że C++ to upierdliwy język, który nie ma wartości dodanej podczas nauki przez webdevelopera. Chcesz go nauczyć o pamięci - C. Chcesz go nauczyć metod abstrakcji - są inne języki.
Cytat
Może ja za długo siedziałem w językach statycznie typowanych, ale nie potrafię sobie poradzić z błędami wynikającymi z dynamicznego typowania w JS...
To nie dynamiczne typowanie jest problemem tylko słabe typowanie. Python jest dynamicznie i silnie typowany i nie ma tego problemu. Haskell/Scala też są co prawda statycznie typowane, ale inferencja typów zwalnia z powtarzania wszędzie typów.
Cytat
Najlepsze jest włąśnie to, że na skomplikowanie C++ narzekają piewcy języków funkcyjnych, którzy nie widzą ich skomplikowania. Ja Scali uczyłem się jakiś rok i niektóre konstrukcje miały dla mnie sens dopiero po zabawie dekompilatorem, a po obejrzeniu kodu niektórych bibliotek można dostać ataku serca, ewentualnie zawrotów głowy. Wręcz zalecają używania podzbioru języka do "codziennego" pisania.
Scala to nie jest "funkcyjny" język. Tak jak C++ jest mariażem C i wyższych języków tak Scala jest mariażem "obiektowej" Javy i języków funkcyjnych. Tak samo nieprzyjazne języki. Masz rację, za bardzo myślałem o innym przykładzie ciekawego systemu typów, że zapomniałem o wadach Scali umieszczając ją na liście.
I nikt nie mówi, że C++ został źle zaprojektowany, że ma podstawowe błędy. Jak chcesz wziąć język z manualnym przydziałem pamięci i obiektami to już wprowadzasz masę zagadnień. I te obiekty, też są luźno potraktowanego jako szczególny przypadek struktury z funkcjami, operatory są wyodrębnionym bytem i można wymieniać więcej ... a pod spodem musisz cały czas udostępniać wirtualne tablice wskaźników, bo ktoś mógłby chcieć skorzystać z możliwości jakie dają.