• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy jest sens czytać od A do Z "Symfonia C++ standard" Jerzego Grębosza?

+3 głosów
15,320 wizyt
pytanie zadane 26 lutego 2016 w Offtop przez adamszu Użytkownik (930 p.)
Tak jak wyżej, zastanawiam się, ponieważ przeczytałem kiedyś, że niektórzy wolą używać tej książki jako czegoś w rodzaju encyklopedii, tzn. kiedy potrzebuje się dowiedzieć czegoś więcej o jakimś zagadnieniu sięgają po prostu do książki i ją wertują w poszukiwaniu tego tematu. Część też czyta od A do Z, często również z robieniem notatek/powtórek na koniec rozdziału. Chcę poznać waszą opinię, osobiście jestem w trakcie czytania 1 tomu :)

11 odpowiedzi

+10 głosów
odpowiedź 26 lutego 2016 przez jpacanowski VIP (102,400 p.)
Jestem zwolennikiem czytania książek do końca, wykonywania co rozdział ćwiczeń i dopiero wtedy traktowania książki jako encyklopedii, gdy czegoś nie pamiętasz. Inaczej będziesz programował nie zdając sobie sprawy z istnienia różnych elementów. Jakiś podstawowy zakres który daje książka trzeba poznać.
+3 głosów
odpowiedź 26 lutego 2016 przez MetGang Nałogowiec (34,380 p.)

Wszystko zależy od tego jak kto lubi się uczyć i jak mu najlepiej przyswajać informacje.

Osobiście oglądnąłem cały kurs z C++ u Pana Mirosława i później - ze względu na swoją naturę - zacząłem sam się uczyć. Oglądam konferencje dotyczące programowania, czytam referencje i kody źródłowe innych, pomagam innym, regularnie tworzę własną bibliotekę, tworzę raz na ruski rok jakieś programy i co najważniejsze - eksperymentuje i jestem ciekawy! Dzięki temu rozwijam się w swoim tempie i jakoś to leci :)

Grunt żeby sprawiało to przyjemność, potem to jakoś samo leci. No i oczywiście trzeba być rozumnym żeby zrozumieć te wszystkie zagadnienia.

Jeśli zna ktoś język angielski w stopniu podstawowym i ma dostęp do internetu - to według mnie - nie potrzebuje żadnej książki ;)

Pozdrawiam wszystkich i życzę mniej bugów :D

+2 głosów
odpowiedź 10 września 2016 przez nauwalis Mądrala (7,350 p.)
Najpierw czytam książkę, przerabiam ją, robię zadania, a dopiero wtedy szukam w niej jak w encyklopedii. Nie wiem jak ktoś myśli coś pozniej znależć. Dobrym sposobem jest zaznaczenie ważnych fgragmentów. O wiele łatwiej sie wraca. Pozdrawiam!
+1 głos
odpowiedź 27 lutego 2016 przez demmi Bywalec (2,990 p.)
Uważam, że po każdym zagadnieniu (pętla, if, switch) warto zrobić kilka ćwiczeń. Żeby cokolwiek zacząć pisać na poważnie to musimy znać większość podstawowych zagadnień. Inaczej kod może nie być przejrzysty lub w ogóle możemy nie dokończyć programu, bo nie będziemy sobie zdawać sprawy z możliwości jakie dany język nam daje. Nie musisz czytać wszystkich książek od deski do deski, aby się zabrać za pisanie, ale na te podstawowe zagadnienia musisz poświęcić przynajmniej miesiąc i w tym celu taki elementarz wypadałoby "łyknąć" na raz. Co do książek to mi odradzali Symfonię, a zamiast niej polecali Szkołę programowania S.Prata. Od siebie, jeśli jesteś laikiem to polecam Allain Alex C++ Przewodnik dla początkujących.
+1 głos
odpowiedź 27 lutego 2016 przez draghan VIP (105,900 p.)

Nie polecam. Książka starej daty, brakuje sporo feature'ów dostępnych w języku już od kilku lat, ponadto pokazuje kiepskie praktyki. Jakby tego było mało, samo prowadzenie narracji w takiej formie, jak to zrobił pan Grębosz, nie każdemu odpowiada. Naprawdę odradzam to czytać, szczególnie jeśli jeszcze się nie ma wyrobionych nawyków.

Pan Mirosław ma na swoim blogu ciekawe pozycje, których przepracowanie pozwoli Ci dobrze zapoznać się z dostępnymi w języku mechanizmami. Oczywiście bez wykonania ćwiczeń, możesz równie dobrze tych książek nie czytać, bo programowanie to głównie praktyka. Do tego dołożyłbym pozycję "Czysty kod" Martina.

Jako swoistą encyklopedię, to polecam "Biblioteka Standardowa C++" Josuttisa, wydanie z napisem "C++11" na okładce.

0 głosów
odpowiedź 27 lutego 2016 przez piotrusg19 Początkujący (280 p.)
Moim zdaniem to jedna z najlepszych książek o cpp. Spokojnie dorównuje "thinking c++" (a może nawet jest lepszą?). Wydaje mi się że nie od rzeczy było by ją przeczytać. Natomiast sposób w jaki czyta się książki informatyczne to już inna sprawa (można traktować ją jak leksykon, przerabiać kolejne rozdziały rozwiązując zadania itp). W każdym razie książka ta zasługuje na miano "pozycji obowiązkowej" dla osób zainteresowanych cpp.
3
komentarz 27 lutego 2016 przez adrian17 Ekspert (319,380 p.)

pokojnie dorównuje "thinking c++"

To... niewiele znaczy, skoro Thinking jest równie stara, ma dużo błędów i czasem IMO java-izmów.

W każdym razie książka ta zasługuje na miano "pozycji obowiązkowej" dla osób zainteresowanych cpp.

A ja mam nadzieję że w końcu ludzie o niej zapomną...

komentarz 27 lutego 2016 przez piotrusg19 Początkujący (280 p.)
A mógłbyś wskazać te błędy? Zakładami że zrobisz to bez problemu skoro jest ich aż tyle, prawda?
2
komentarz 27 lutego 2016 przez adrian17 Ekspert (319,380 p.)

Kilka losowych:

- tom1, rozdział8

But there is one thing about temporaries: they’re automatically const.

Nie są. Akapit ma dobre spostrzeżenia, ale wynikają z reguł dla rvalues, a nie z tego że zmienne tymczasowe są const - można je modyfikować metodami.

tom2, rozdział6

template<typename T, int size>
int asz(T (&)[size]) { return size; }
(...)
int main() {
  int a[12], b[20];
  const int sz1 = asz(a);
  const int sz2 = asz(b);
  int c[sz1], d[sz2];
}

To nie jest legalny C++, sz1 i sz2 formalnie nie są znane w momencie kompilacji (nawet jeśli kompilator w praktyce może je policzyć podczas optymalizowania kodu). Autor korzysta tu pewnie z rozszerzeń GCC z C99. MSVC nie kompiluje tego kodu w ogóle, GCC i Clang dają ostrzeżenia z -pedantic.

tom2, cała część "The exception specification". Niby nie błąd że o nich mówi, ale... nikt tego nigdy nie używał, są wręcz odradzane, ba - w C++11 zostały oznaczone jako przestarzałe, C++17 prawdopodobnie całkowicie je usunie.

tom1, rozdział9 "inline functions":

The only difference is that an inline function is expanded in place, like a preprocessor macro

Nope. Inline wpływa na linkowanie funkcji oraz teoretycznie są podpowiedzią dla kompilatora żeby wykonał inlining, ale go nie wymusza. Teoretycznie, bo obecnie kompilatory kompletnie to ignorują i same decydują co warto w ten sposób zoptymalizować.

tom2, rozdział 4 "strings in depth":

// Make an uppercase copy of s:
string upperCase(string& s) {
  char* buf = new char[s.length()];
  s.copy(buf, s.length());
  for(int i = 0; i < s.length(); i++)
    buf[i] = toupper(buf[i]);
  string r(buf, s.length());
  delete buf;
  return r;
}

Powinno być delete[] buf. Plus fakt że kod jest mocno przekombinowany i można by kompletnie ominąć ten bufor.

komentarz 27 lutego 2016 przez piotrusg19 Początkujący (280 p.)
Dzięki za wyjaśnienie a przede wszystkim za poważne potraktowanie moich wątpliwości. Co prawda mojego zdania o "Thinking" wiele nie zmienia, nadal uważam że to pozycja z najwyższej półki. A tak przy okazji to Visual Studio chyba nie jest jeszcze obowiązującym standardem (może coś przespałem?) a ostrzeżenia -pedantic świetnie wyglądają w normach/specyfikacjach ale czy ktoś traktuje je naprawdę poważnie?
komentarz 27 lutego 2016 przez adrian17 Ekspert (319,380 p.)

A tak przy okazji to Visual Studio chyba nie jest jeszcze obowiązującym standardem

Nie do końca rozumiem co masz na myśli przez "jeszcze". Pod niektórymi względami VC++ ociąga się ze wsparciem standardu, z innymi idzie mocno naprzód, ale w tym przypadku to on ma rację, zarówno z perspektywy 1998 jak i 2016.

ale czy ktoś traktuje je naprawdę poważnie?

Tak, na przykład Firefox. (No i to nie jest żadna norma, to zwykła opcja kompilatora.)

Faktem pozostaje że VLA to nie jest legalny c++. Używając rozszerzenia kompilatora tracisz przenośność kodu, którą normalnie dostajesz za trzymanie sę standardu.

0 głosów
odpowiedź 27 lutego 2016 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Ja czytam C++ Szkoła Programowania Pratta od deski do deski :D ona ma grubo ponad 1100 stron. Symfonia dużo mniej (nie wiem czemu, ale Pratt jak dla mnie lepiej przechodzi przez c++ - do symfonii czasamk zaglądam). Przy okazji tworzę sam i wtedy traktuję jak encyklopedie ;)
komentarz 27 lutego 2016 przez Prao22 Stary wyjadacz (11,290 p.)

Symfonia ma 1126 stron. Nie wiem skąd masz takie fałszywe informacje.

komentarz 27 lutego 2016 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Już wiem. Bo mam starą, tom 1 tylko. 545 stron. Przy okazji sprawdziłem Pratta 1194 strony ;)
komentarz 27 lutego 2016 przez Eryk Andrzejewski Mędrzec (165,240 p.)
Nie Pratta, tylko Prata :) M. Prata D. Praty C. Pracie B. Pratę N. Pratą Msc. Pracie
0 głosów
odpowiedź 27 lutego 2016 przez Bizkhit Użytkownik (980 p.)
Moim zdaniem warto przeczytać tę książkę żeby dowiedzieć się o istnieniu pewnych funkcjonalności/mechanizmów. Warto po każdym rozdziale zrobić kilka zadań dotyczących danego zagadnienia, bo wtedy wiedza łatwiej się utrwala. W przyszłości można wracać do lektury, kiedy potrzebujemy sobie przypomnieć jakieś zagadnienia, choć symfonię encyklopedią raczej trudno nazwać. Aktualnie przerabiam "Thinking in Java", i też robię to rozdział po rozdziale (wraz z zadaniami), chyba, że potrzebuję czegoś konkretnego to czasami wybiegnę trochę do przodu.
0 głosów
odpowiedź 27 lutego 2016 przez k222 Nałogowiec (30,130 p.)

Tak po pierwsze to najpierw powinieneś przeczytać książkę (choćby przejrzeć) żeby wiedzieć co w niej jest i żeby potem móc do tego wrócić (chociaż pewnie łatwiej i szybciej skorzystać z google), a poza tym padła już w tym temacie książka pt. Język C++ Szkoła programowania którą ja gorąco polecam, bo czytałem część Symfonii i teraz czytam Szkołę programowania i od razu zauważam, że jest tutaj kilka istotnych rzeczy których tam nie było czyli wtrącenia autora odnośnie najnowszego standardu C++  czasem subtelności a czasem coś więcej, ogólnie w Symfonii tego nie znajdziesz, jest mowa o szablonach - też tego nie ma w Symfonii oraz jest to trochę inaczej poukładane. Ogólnie według mnie najlepiej jest zacząć od kursów na YouTube (najlepiej oczywiście Pana Mirosława wink ) żeby zobaczyć co i jak a jak się chce więcej to wziąć się za porządną książkę tylko trzeba patrzeć nie tylko na jej jakość (Symfonia jest naprawdę dobrą książką) ale także na datę wydania (i tutaj Symfonia przegrywa) więc jak myślisz o książce polecam Szkołę programowania - tylko do czytania a nie żeby leżała na półce jako "encyklopedia".

0 głosów
odpowiedź 27 lutego 2016 przez LordOfTheStrings Obywatel (1,610 p.)
Nie przepadam za symfoniom, jednak myślę, że traktowanie jej jako encyklopedii, nie jest dobrym pomysłem. Dobrą encyklopedią jest " Język C++. Kompendium wiedzy" Stroustrup'a. Symfonie jest raczej kursem od zera, którego przynajmniej tom pierwszy warto przeczytać w całości.
komentarz 28 lutego 2016 przez Prao22 Stary wyjadacz (11,290 p.)

Nie przepadam za symfoniom [...]

Pisze się symfonią! Końcówka -om w liczbie mnogiej. :D

komentarz 28 lutego 2016 przez LordOfTheStrings Obywatel (1,610 p.)
Nigdy nie byłem orłem z ortografii.
0 głosów
odpowiedź 1 marca 2016 przez Wojtek Wiedeński Bywalec (2,460 p.)
Mi osobiście ta książka służy jako podstawka pod monitor. Ale tak na poważnie korzystałem z niej tak jak mówisz, kiedy chciałem zgłębić jakieś zagadnienie. Niestety ten język programowania nie jest "moim" językiem i stąd moją naukę opierałem na kursach wideo. Dwa monitory, na jednym kurs, na drugim kompilator i nauka połączona z praktyką.

Dodam, że jest udowodnione jest, że jeżeli wchłaniasz wiedze z kilku kanałów tzn. słyszysz coś, widzisz kod i praktycznie zastosowanie później na zasadzie edycji to najlepsza metoda nauki.

Podobne pytania

0 głosów
4 odpowiedzi 1,622 wizyt
+1 głos
3 odpowiedzi 698 wizyt
0 głosów
4 odpowiedzi 523 wizyt
pytanie zadane 13 kwietnia 2016 w Offtop przez konrad99 Gaduła (4,100 p.)

87,907 zapytań

136,494 odpowiedzi

304,313 komentarzy

58,285 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...