Swoją przygodę z językiem C++ zaczynałem na studiach. Podobnie jak wielu początkujących programistów tego języka, jego naukę zaczynałem z książką Jerzego Grębosza, przy czym Symfonia C++ jest już przestarzała (dotyczy starej wersji języka C++). Warto zapoznać się z odświeżoną wersją tej książki pod nazwą Opus Magnum C++11, która obejmuje już nowszy standard C++11. Studiując na kierunku Elektronika i Telekomunikacja, zyskałem solidny background z języka C, dzięki czemu przejście na język C++ nie było takie trudne. Jestem więc przykładem i dowodem na to, że jednym z czynników sukcesu języka C++ jest jego kompatybilność z językiem C. Dzięki temu wielu doświadczonych programistów języka C, otrzymywała ”za darmo” podstawy języka C++. W efekcie dla tej grupy programistów nauka języka C++ była dużo łatwiejsza niż nauka nowego języka ”od zera”. Oczywiście wymagało to zmiany sposobu myślenia na obiektowy oraz porzucenie wielu niekoniecznie bezpiecznych cech języka C. Jeżeli jednak nie masz backgroundu z języka C to nic nie szkodzi (według niektórych nawet to i lepiej), bowiem używając nowego standardu języka C++ (przynajmniej C++11 albo jeszcze lepiej C++14) można praktycznie zapomnieć o niebezpiecznych własnościach odziedziczonych po języku C takich jak makra (o tym jak pozbyć się makr dowiesz się z poprzedniego artykułu: Jak Pozbyć Się Makr ?) czy wskaźniki. Pomimo dynamicznego rozwoju języka C++, niestety wiele firm nadal używa języka C++98/03 i nawet standard C++11 może wydawać się tam jeszcze nowy. Trudno jednak traktować go jako nowy, jeśli do dyspozycji są kolejne: C++14, C++17, C++20. Warto więc aktualizować swoją wiedzę w tym zakresie. W dalszej części artykułu chciałbym przedstawić klika wartościowych źródeł wiedzy z których warto korzystać podczas nauki języka C++.
Książki
Podczas nauki programowania książki stanowią oczywiście wartościową podstawę. Należy jednak pamiętać, że książki szybko się dezaktualizują (stąd często kolejne numery wydań tej samej książki). Dotyczy to zwłaszcza zagadnień, które ciągle ewoluuje, a czego przykładem jest współczesny język C++. Warto więc pamiętać, że w świecie języka C++ wiedza szybko podlega dezaktualizacji. Oczywiście samo czytanie książek nie wystarcza. Nie wniosę nic odkrywczego jeśli powiem, że żeby aby nauczyć się programować … trzeba programować. Warto jednak korzystać z różnych źródeł wiedzy chociażby po to, aby być na bieżąco z nowinkami jakie niosą ze sobą kolejne standardy języka C++.
Blogi
Jednym z moich ulubionych źródeł wiedzy są blogi lub vlogi (video blogi), ponieważ na bieżąco umieszczane artykuły dostarczają aktualnej wiedzy. Zamieszczone tam artykuły są często bardzo trudne, a więc skierowane raczej dla zaawansowanego programisty, który zna najnowsze standardy języka C++. Tego typu blogów jest stosunkowo dużo, ponieważ prowadzi je m.in. wielu ekspertów prowadzących konferencje o języku C++ (do tematu konferencji wrócę w kolejnym punkcie artykułu). W tym miejscu wspomnę jedynie o trzech wybranych przeze mnie blogach. Bardzo wysoko cenię sobie bloga (a w zasadzie vloga) Jasona Turnera: C++ Weekly, ponieważ przedstawia on, w stosunkowo krótkich prezentacjach, bardzo konkretne informacje dotyczące dobrych praktyk programistycznych oraz najnowszych standardów języka C++ (włącznie z C++20). Kolejny to klasyczny blog Fluent C++, przedstawiający techniki oraz dobre praktyki programistyczne z zakresu języka C++. Warto zaznaczyć, iż autor tego bloga – Jonathan Boccara – umieszcza regularnie nowe artykuły w każdy wtorek i piątek. Na niewątpliwą uwagę zasługuje także blog polskiego autora Andrzeja Krzemieńskiego (o podobnej tematyce jak poprzednie): Andrzej’s C++ blog.
Konferencje
Niezwykle cennym źródłem wiedzy są konferencje dotyczące języka C++. Prowadzone są przez ekspertów (praktyków, ale też współtwórców najnowszych standardów języka C++). Podobnie jak blogi skierowane są raczej do bardziej zaawansowanych programistów języka C++. Każdy kto chce przynajmniej zbliżyć się do wiedzy eksperckiej z języka C++, powinien pamiętać żw należy uczyć się od najlepszych. Moją ulubioną konferencją jest CppCon – jest to bezcenne źródło wiedzy w postaci prezentacji prowadzonych przez największych znawców języka C++. Wystarczy wspomnieć, że konferencja ta gościła już takich ekspertów jak: Bjarne Stroustrup, Scott Meyers, Andrei Alexandrescu, Herb Sutter. W tym miejscu chciałbym zwrócić uwagę na konferencję code::dive, które odbywa się we Wrocławiu, (jej sponsorem jest Nokia). Sam brałem w niej udział kilkukrotnie jako widz i bardzo miło wspominam ten czas. Załapałem się nawet na jedno ze zdjęć 🙂 (podczas prezentacji Dan’a Saksa):
Poniżej wymienię konferencje, na które warto zwrócić uwagę podczas nauki języka C++:
Kursy
Podczas początkowej nauki języka C++ potrzebujemy podstawowej wiedzy. Oprócz książek bardzo dobrym źródłem są kursy dostępne online, chociażby te dostępne na YouTube. Moim ulubionym jest kurs Bo Qiana, który podzielony jest na kilka kategorii. Jest on skierowany raczej do początkujących oraz średnio zaawansowanych programistów. Jest bardzo dobrym kursem jeśli chodzi o odświeżenie wiedzy, co może okazać się bardzo przydatne tuż przed rozmową kwalifikacyjną. Godny polecenia dla początkującego programisty języka C++ jest także kurs dostępny na kanale TheChernoProject. Warto też wspomnieć o kursach dostępnych na platformie udemy, przy czym są one płatne.
Magazyny
Magazyny (podobnie jak blogi), mogą okazać się cennym uzupełnieniem naszej wiedzy. W tym miejscu chciałbym zwrócić uwagę na magazyn Overload (dostępny online), który jest prowadzony od 1993 roku !!!
Slack
Komunikator Slack (można zainstalować aplikację Slack na Androida) posiada workspace o nazwie Cpplang.slack.com. Można tam zadać pytanie albo po prostu porozmawiać o języku C++. Dzięki niemu na wyciągnięcie ręki są m.in. eksperci obecni na wcześniej wymienionych konferencjach. Podobne zadanie spełnia bardzo popularne forum Stackoverflow.
Dokumentacja
W codziennej pracy często korzystam z dokumentacji, ponieważ jest to niezwykle ważne źródło informacji, zwłaszcza kiedy pojawiają się wątpliwości co do sposobu użycia określonego elementu języka czy biblioteki standardowej. Poniżej podaje dwa najczęściej używane przeze mnie linki:
Podsumowanie
- Książki stanowią bardzo dobrą podstawę do nauki języka C++, jednak należy mieć na uwadze ich szybką dezaktualizację
- Blogi oraz konferencje są bardzo dobrym źródłem aktualnej wiedzy z zakresu języka C++, przy czym dotyczą raczej zaawansowanych programistów biegle posługującymi się najnowszymi standardami języka C++
- Kursy są skierowane do początkujących oraz średnio zaawansowanych programistów i mogą być z powodzeniem stosowane jako odświeżenie wiedzy przed rozmową kwalifikacyjną
- Magazyny, podobnie jak blogi, stanowią cenne uzupełnienie wiedzy programistycznej
- Komunikator Slack umożliwia dyskusję na temat języka C++ (workspace Cpplang.slack.com)
- Używaj dokumentacji w codziennej pracy, zwłaszcza jeśli masz wątpliwości co do sposobu użycia elementu języka lub biblioteki standardowej