Wpis z mikrobloga

Cześć, dotychczas #cpp uczyłem się z kursu the new boston, ale postanowiłem przerobić również coś po polsku i wybrałem książkę J. Grębosza "symfonia c++", ale widzę że w książce jest wiele błędów, albo po prostu nie ma rzeczy które były w new bostonie. Co sądzicie o tej książce i jaką pozycję polecielibyście z zakresu c++ jako uzupełnienie mojej nauki w j. angielskim i dlaczego.
#programowanie
  • 24
Mógłbym wypisać książki Meyersa, Suttera, Alexandrescu, ale bym się powtarzał za tym StackOverflow więc tylko podlinkuję. Jak już znasz podstawy to kompendium Stroustrupa do uczenia się reszty ficzerów języka plus książki od Best Practices do Advanced po kolei powinny Ci wystarczyć.

Plus dosłownie parę ciekawych linków jak myślisz o programowaniu gier czy ogólnie na niskim poziomie:
http://www.akkadia.org/drepper/cpumemory.pdf (kompendium podstawowej wiedzy o działaniu pamięci, od dysku poprzez RAM, aż do cache'a; warto też
Ach, byłbym zapomniał o tym jeszcze - http://gameprogrammingpatterns.com. Świetna sprawa, gejkoderski odpowiednik wzorców projektowych GoFa, dodatkowo koles który to pisze ma bardzo lekkie pióro; polecam też jego blog, aczkolwiek tam już pisze o różnych ciekawych rzeczach - od pisania silnika do Rogalika w Darcie po kwestie implementacji i projektowania języków programowania czy implementacji GC.
@kubakubakuba: widzę że tutaj koledzy powtarzają błędne informacje, np @sylwke3100 pewnie komentuje jakieś wydanie z przed 15 lat.

Bo sądząc po tytule to nie piszecie o "Wyd III B - ISBN 978-83-7366-134-4" z 2010 roku, bo tam nawet tytuł był inny, teraz (od dekady) jest "Symfonia C++ Standard".

Tutaj są aktualne wydania, jak również errata - na stronie domowej autora:
http://www.ifj.edu.pl/~grebosz/symfonia_c++_std_p.html

Z Symfonii należy zaopatrzyć się w jej najnowsze wydanie, oraz
@rfree: Przecież te niby nowe wydanie dalej jest stare bo dziś mamy nie standard C++03 a jak się nie mylę to 14 a trzeba wziąc pod uwagę że w C++11 zaszły bardzo duże zmiany w języku więc moje zdanie o starości obu książek są jak najbardziej prawdziwe. To ty mieszasz niepotrzebnie.
@sylwke3100: bzdura, ponieważ C++14 zawiera właściwie całe C++03 (z bardzo niewielką ilością przeczy które całkowicie wyleciały), oraz ponieważ bardzo wiele istniejącego kodu jest pisane w C++03, lub w takim stylu.

Może lepiej zacząć od książki do C++14 ( ale jaka polska i w stylu "od zera - gdy nigdy nic nie programowałeś" ? ) - i potem zacząć też czytać Symfonię pamiętając że styl nowszy jest zalecany (do nowych projektów itd,
Tak jakbyś mówił że wszystkie książki jak działa np Debian 6 są do kosza bo w Debian 8 się rzeczy robi inaczej - jasne że się wiele robi inaczej, ale wszystkie podstawy są takie same.

@rfree: Tu akurat kiepskie porównanie bo w każdej wersji twórcy mogą wpaść na coś innego np zmienić domyślne środowisko graficzne, system dystrybucji pakietów, inne wersji pakietów czy chociażby zmiana ich na inne programy. Potem się może
@sylwke3100: Aha czyli faktycznie książkami do Debiana 6 czy tam 7 byś palił w piecu bo domyślnie jest np inne GUI (a stare można przywrócić - co wiele osób preferuje) i inny init t (stary też można przywrócić i sporo osób tak robi lub to ma), mimo że 90% ogólnej wiedzy co to $HOME jak chodzić po katalogach jest aktualnej.

E ok, Ty to ogólnie masz coś z procesem nauki zrąbane
Jeszcze jedna rzecz, możecie idealizować sobie, ale w praktyce stringi const char* trzeba znać tak samo teraz jak i w 03 i w ogóle jak przed std::string, bo wiele bibliotek które dziś istnieją (i nawet nie mają alternatywy często) mają takie właśnie API w stylu C, albo po prostu w C.


@rfree: To nie lepiej na stringach c_str() używać? Szczególnie tam gdzie trzeba mieć dynamiczne nazwy?
@sylwke3100: nawet wrapper C++ do litesql chcoiażby, zwraca const char* jak nie wiesz jak to działa to się wywalisz szybko na błędach. Tak samo wiele innych libów.

Oraz kod do którego przyjdzie junior chyba że jakiś projekt dopiero co zaczęty i który jest założony że olewa starsze kompilatory nawet.

W praktyce w zespole nawet emplaceback strach używać bo kompilatory obecne nie zawsze rozumieją. Co chwile na coś się trafia że
@kubakubakuba podsumowując, nie pal niczym w piecu (no chyba że masz kopię jakichś uchwał Eurokołhozu czy coś ;) lecz:

Najpierw zapoznaj się co stało się modne w C++11, C++14 a co jest już "starą szkołą":
- przeczytaj artykuł Wiki o C++03, C++11, C++14 i na zapas o C++17 planowanym
- przeczytaj pobieżnie całe parashift C++ faq... o kurcze, chyba właśnie padło? było na parashift.com ... tutaj mirror: https://web.archive.org/web/20150316002747/http://www.parashift.com/c++-faq/ chociaż żeby pamiętać jakie
W praktyce w zespole nawet emplace_back strach używać bo kompilatory obecne nie zawsze rozumieją. Co chwile na coś się trafia że nie działa, jeżeli chcesz być na wszystkie obecne platformy klasy PC (powiedzmy od Debian 7, od Open BSD aktualnego w górę).


@rfree: To nie można wymusić konkretnych wersji kompilatora i wyższych tak by konkretne rzeczy działały? Ja nie widzę w tym nic trudnego

Polecam: jakaś broszura "co jest teraz zalecane
@sylwke3100: nie można wymusić, szczególnie skoro program Open Source i użytkownicy będą mieć często a to Debian 7, a to OpenBSD, tam jest gcc bodajże 4.2 jeszcze

Polecam to przeczytać jeśli nie czytałeś.

http://www.wykop.pl/wpis/9719000/cpp-naukaprogramowania-programowanie-wstep-czestot/


Tak, czytałem tamto #!$%@? z dupy, też odpisałem że są to po prostu nie prawdziwe informacje, seria książek Symfonia opisuje wyjątki itd, ma z 100 stron o tym.

Autor bezmyślnie opisuje jakąś przedpotopową pierwszą wersję klasycznej książki
Autor bezmyślnie opisuje jakąś przedpotopową pierwszą wersję klasycznej książki i bez drugiej części (Pasja C++).

@rfree: Ale co się zmieniło wg ciebie od pierwszego wydania do tego niby najnowszego że tak usilnie tej wersji bronisz?
Ja patrząc na erraty nie widzę jakiś dużych zmian a już na pewno nie takich by zmieniało zdanie o książce.