Książka o c++

Witam!

Chciałbym się nauczyć programować w języku c++ ale jestem na razie w tym zielony czy warto kupić tę książkę aby nauczyć się od podstaw?

http://e-libera.pl/ksiazka/Farbaniec-Dawid/Microsoft-Visual-Studio-2012,62552601427KS

Zacznij od tego że c# to nie c++ :wink: To język wyższego poziomu.

Jeśli chcesz się uczyć programować a do tego jeszcze w C++ to ja zawsze polecam Symfonie C++ Jerzego Grębosza.

Czy warto się uczyć C++ z tej książki? Nie - bo jest ona o C#, a to inny język.

Czy warto uczyć się C# zamiast C++? Zdecydowanie tak. W C++ za duży nacisk (szczególnie na początek) położony jest na formę, a nie na treść. Zupełnie niepotrzebnie traci się czas na rozgryzanie zawiłości tego konkretnego języka, zamiast na programowaniu. Sam zaczynałem od C/C++ w drugiej połowie lat 90’, ale obecnie nie polecałbym tego jako pierwszy język. 

Czy warto uczyć się C# z tej książki? Nie umiem powiedzieć, ale jest ona już średnio “świeża”. C# cały czas żyje, warto uczyć się z najnowszych dostępnych edycji. Najlepiej w kwestii książek poczytać opinie na amazon.com.

 

Nie polecę w tym momencie żadnej książki do C++, ale jeśli już to na pewno nie była by to ta książka. Jest już stara, dziwnie napisana i niepraktyczna.

 

Pytanie moje za to: co chcesz zrobić w C++, do czego dążysz - wtedy można będzie polecić coś konkretniejszego.

A ja bym Symfonie C++ polecił, przynajmniej pierwszy tom do nauki podstaw.

dobra dokumentacja nawet z googli, konwersja na PDF, wydrukowanie

Poleciłbym ci “Symfonię c++ Standard” Grębosza, ale jest już starawa, więc jeśli się na nią zdecydujesz to znajdź jakiś kurs wspierający a najlepiej z dokumentacji się ucz. :wink:

A tak btw. to nie zgodzę się, że c++ jest zły na początek. Jestem zdania, że jeśli początek będzie zbyt łatwy, to potem taki programista będzie zbyt leniwy, żeby uczyć się niższych poziomów.

Osobiście nie powiedziałbym że ta książka jest nieaktualna, wszystko co się znajduje w ostatnim wydaniu (czwartym) jest jak najbardziej nadal aktualne i to w niej jest świetne. Jedyne czemu książka jest stara to to że nie traktuje o nowościach jakie zostały dodane w ostatnich standach c++.

Nie zgodzę się również że książka ta nie nadaje się do nauki C++ jak wspomnieli inni. Owszem książka nie nadaje się dla osób które potrafią już programować i chcą poznać sam język C++ i przesiadają się z innego. W taki wypadku książka ta zanudzi na śmierć bo ona uczy programowania w języku C++. Jeśli ktoś dopiero zaczyna naukę programowania i do tego jeszcze chce uczy się C++ nie ma lepszej pozycji niż ta nawet biorąc pod uwagę zagraniczne książki. Tłumaczenia angielskich książek są mierne zawsze bo jest masa błędów w tłumaczeniu, a w oryginale dorównuje w tłumaczeniu problemów najlepszym zagranicznym pozycjom.

Symfonia uczy podstaw C++ które są wymagana do nauki kolejnych rzeczy z nowych standardów i jeśli ktoś już umie te podstawy to reszty nauczy się już sam we własnym zakresie bez płacenia czytając dokumentację.

Wiec czy ta książka jest zła?

Tak jeśli umiesz programować i chcesz tylko przesiąść się na C++, pytanie tylko po co w takim wypadku szukasz książki.

Nie jeśli uczysz się programowania i do tego chcesz się nauczyć programować w C++.

 

Jeśli chodzi  wybór pierwszego języka to każdy ma inne zdanie, zazwyczaj ludzie dzielą się na 2 grupy. Pierwsza to Ci którzy uczyli się programowania na językach wysokiego poziomu i twierdzą że C++ nie nadaje się do nauki. Powodem tego jest to że ciężko jest się wszystkim przesiąść z języka wysokopoziomowego do niskopoziomowego jakim jest C++. Skoro im jest ciężko mimo iż potrafią już programować to wychodzą automatycznie z założenia że jeszcze ciężej będzie miała osoba która nie potrafi programować.

Druga grupa to osoby które uczyły się programować w C/C++, oni uważają ten język za nadający się do nauki programowania bo się go nauczyli na początku, a reszta języków jest dla nich prostsza od C++ więc szybko w razie potrzeby się na nie przesiadają.

Z moich obserwacji wynika że to ta druga grupa programistów jest lepsza - bardziej świadomie programuje bo ma pojęcie co się dzieje “pod maską” oraz są to programiści bardziej elastyczni bo potrafią szybciej przestawić się na inny język. Oczywiście są oni lepsi pod względami które napisałem bo na pewno nie dorównają komuś kto od kilku lat pisze w C# i zna świetnie .net, ale szybciej dogonią taką osobę niż ona ich w C++.

Dzięki Fizyda, że tak dobrze omówiłeś różnice w nauce między C++ a C#. Sam się zastanawiam czy zaczynać naukę od języka niskopoziomowego czy wysokopoziomowego.

Według mnie zdecydowanie niski poziom. Dla czego, masz napisane w poście Fizydy. Poza tym, to gdy świat będzie opanowany przez roboty a wszystko będzie matrixem, znając niski poziom programowania będziesz królem! ;D

Programiści niskopoziomowi zawsze będą meli pracę i do tego bardzo stabilną. C#, Java, PHP i inne wysokopoziomowe twory to są tylko trendy, a z trendami jest tak że wychodzą z mody i szybko się zmieniają. Dziś warto uczyć się C# bo świetnie pisze się w nim aplikacje pod wszelkie Windowsy, Javy też się warto uczyć bo pisze się w niej aplikacje mobilne na androida, a i nadal utrzymuje się aplikacje webowe, ba nawet tworzy w dalszym ciągu. Tylko pytanie takie, jak długo jeszcze java enterpirse będzie się utrzymywała, aplety już odeszły do lamusa, a JRE też nie jest jakoś już popularne, a na androida równie dobrze można pisać w C++.

C# cały czas się zmienia w zależności od potrzeb programistów ciągle coś dochodzi i odchodzi. Problem w tym że po kilku aktualizacjach to prawie inny język za którym trzeba nadążać. Poza tym kto wie czy MS zaraz nie wymyśli jakiego lepszego języka a tego porzuci? Przykład Objectiv-C którego zastępuje Swift. Ludzie uczyli się O-C bo dobrze się zarabiało pisząc aplikacje na iOS aż Apple nie stwierdził, że zrobi inny język. Chcą zostać na topie i dalej pisać aplikacje na macki ludzie muszą się przesiadać na inny język.

Wszystko jest fajne, ale nie do wszystkiego.

Ja zawsze uważam że należy dostosować narzędzie do pracy, czyli wybrać odpowiednią technologię i język programowania w zależności od potrzeb danego projektu. Najpierw tworzy się projekt, a potem zastanawia jak najłatwiej i najszybciej rozwiązać problem - czyli nasz projekt. Projekt to szukanie problemu, a jego rozwiązanie to programowanie programu.

Zresztą nie ukrywajmy, programiści niskopoziomowi zarabiają więcej, ale to nie powód do nauki C/C++ to są języki nie dla każdego. Bardzo dobrze można zarabiać programując w swoim ulubionym C#, albo trochę więcej niż bardzo dobrze i się męczyć z C++, więc chyba lepiej zarabiać bardzo dobrze i do tego przyjemnie ;).

PS. Poza tym ktoś musi umieć tworzyć języki oraz wszystkie narzędzia dla osób które programują w językach wysokopoziomowych ;).

Java i PHP są z nami już przeszło dwie dekady i nieszczególnie widać, żeby w najbliższym czasie miały odejść. Pewnie, C++ jest o kolejną dekadę starszy, ale i tak daleko mu do dziadka Lispa.

Tworzy się ich masę. O ile PHP to “język ludu”, na którym stoi ogromna część prywatnego i small-businessowego internetu, finanse i duże, nastawione na skalowalność serwisy powstają głównie w językach opartych na JVM-ie.

Java Enterprise już od dawna jest poza grą. Powstałe i królujące od dekady frameworki (jak Spring) korzystają ze starej, dobrej Javy SE. Applety to była ślepa uliczka, JRE (w sensie - swingowe GUI) to już na szczęście egzotyka, a JEE niech sobie powoli obumiera.

I w kilkudziesięciu innych językach też. Gołe C++, poza silnikami graficznymi, nie jest na Androidzie ani najpopularniejsze, ani nawet popularne. Tak naprawdę nawet Java jest powolutku wypierana przez hybrydy i aplikacje pisane w czystym JS-ie. I to nie tylko na Androidzie.

Przejście na Swifta nie jest obligatoryjne. Język to tylko nośnik składni. Ważniejsze jest apple’owe API, które jest po równo dostępne dla obu języków. A jeszcze niedawno (sorry, nie jestem na bieżąco) przez Objective-C dało się na Makach zrobić parę rzeczy trudnych lub nieosiągalnych w Swifcie.

Ogromna część, pewnie nawet większość, narzędzi javowych (biblioteki, serwery, IDE, frameworki) są pisane w językach opartych na JVM. A jeżeli już coś naprawdę trzeba pisać na niskim poziomie, ostatnio częściej używa się do tego google’owego Go.

Zamiast kupować książki możesz poczytać darmowe tutoriale :wink:

symfonia c++ ?

Teraz zobaczyłem. Jako zawodowy programista i administrator serwerów, w życiu bym nie przeczytał książki, która dla “operatorów” i “tablic” poświęca kilkadziesiąt stron :smiley:

W kilkadziesiąt stron to się cały język opisuje w dobrej dokumentacji, a nie tylko jego skrawek :smiley: Później już tylko jest analiza funkcji i bibliotek.

Reasumując - z perspektywy doświadczenia zawodowego, to jest totalna strata czasu i może książka jest dobra jak ktoś chce coś DOCZYTAĆ ale czytać od deski do deski to skrajnie nieefektywna propozycja. 

Raz przeczytałem dokumentację do MySQL która miała jakoś 19 stron. W autobusie, siedząc z tyłu. Całość, jadąc kilkanaście przystanków. Żeby było śmieszniej, to w tej dokumentacji było streszczenie 80% rzeczy, których używa się w pracy związanej z MySQL (w odmianie My) - a na późniejszych rozmowach kwalifikacyjnych bez żadnych problemów odpowiadałem zarówno z podstaw SQL, jak i odmiany My*.

@NieGooglujMnie To ciekawe co napisałeś. Mógłbym się dowiedzieć od czego zaczynałeś naukę? Same początki. Te osoby co chcą się uczy programowania samodzielnie, nie wiedza zazwyczaj od czego zacząć.

wiesz co, generalnie chodzi o styl myślenia.

90% ludzi uczących się C++ NIE ZACZNIE programować zawodowo w C++. Może 10% coś zarobi na tym, a może mniej.

@NieGooglujMnie Inspirujące! Wielkie dzięki :slight_smile:

Cheat Sheety są efektywne, jeżeli ich treść można odnieść do posiadanej już wiedzy i doświadczeń. Też nie czytam książek do programowania, bo wystarczą mi różnice w stosunku do języków, które wcześniej poznałem. Ale nie wyobrażam sobie, żeby czytać je bez znajomości podstawowych konceptów programowania z grubsza wspólnych dla całego paradygmatu. Człowiek zupełnie zielony powinien jako-tako poznać (tradycyjnymi metodami) jakikolwiek współczesny język, a dopiero potem jechać na streszczeniach.