C++ stworzył duński informatyk, Bjarne Stroustrup w latach 80-tych - jako obiektowe rozszerzenie języka C. Od lat C++ należy do najpopularniejszych języków. Wg. naszego Badania społeczności IT 2020 dla 51% programistów embedded jest to główny język programowania, a 25% profesjonalnych programistów zaczynało właśnie z tym językiem.
Pozostaje bezkonkurencyjny, jeśli chodzi o wysokobudżetowe gry komputerowe, oprogramowanie wbudowane, programowanie systemowe. W oparciu o język C++ powstał Amazon, a także systemy operacyjne Windows.
Zanim przejdziemy dalej trzeba wspomnieć o tym, że w ostatniej dekadzie C++ rozwinął się jako język programowania. Wydano 3 wersje, które zmieniły sposób, w jaki programuje się w C++.
NULL
przez nullptr
. Zmian było naprawdę sporo, również w biblitece standardowej, gdzie pojawiły się m.in. nowe struktury danych (jak krotki), klasa std::thread
ułatwiająca obsługę wątków, szablon funkcji std::async
, która umożliwia asynchroniczne wywołania.std::optional
, czyli szablon klasy, która zawiera opcjonalną wartość, czy std::filesystem
, czyli zunifikowany sposób obsługi systemu plików.To oczywiście nie są wszystkie nowości w każdej z wersji i jest ich znacznie więcej. Dobre podsumowanie na ten temat znajdziecie na liście "Modern C++ Features". Dodatkowo w tym roku powinniśmy się doczekać wydania C++20, które wprowadzi m.in. współprogramy i moduły.
Może to wyglądać przerażająco, ale pokazuje, że C++ ciągle się rozwija, z czego trzeba sobie zdawać sprawę przy nauce. Co prawda podstawy C++ pozostają takie same, jak kilkanaście lat temu, jednak z profesjonalnym developmencie używa się sporo funkcji dostępnych dopiero we współczesnych wersjach. Dlatego obecnie nie ma sensu zaczynać nauki od C++ starszego niż wersja 11.
Dalej zajmiemy się kwestią materiałów edukacyjnych i podpowiemy, z czego podczas nauki korzystać, a czego unikać. Zacznijmy... od końca.
Na naukę można poświęcić wiele czasu, a i tak zdobyć niewiele wiedzy. Wszystko dlatego, że skuteczne uczenie się jest sztuką.
Czego unikać, aby szybko opanować podstawy C++? Na pewno nie warto ograniczać się jedynie do książek. Oczywiście polecamy czytanie i materiały drukowane, ale warto zdawać sobie sprawę, że dość szybko się tracą na aktualności. Przykładem jest tu niezwykle popularna w Polsce książka "Symfonia C++", która została wydana ostatni raz 10 lat temu. Od tego czasu pojawiły się wprowadzające wiele zmian kolejne wersje języka C++11, C++14, C++17 (o których autor, Jerzy Grębosz napisał kolejne książki) Jeśli już wybieracie książki, sprawdźcie opinie i recenzje. Nie warto marnować czasu i pieniędzy na słabe tytuły.
Częstym błędem jest ograniczanie się tylko do polskojęzycznych serwisów internetowych i materiałów. Najwięcej wiedzy, a do tego najświeższej, znaleźć można w anglojęzycznym Internecie. Im szybciej przyzwyczaicie się do używania tego języka, tym lepiej. Bez angielskiego ani rusz.
W nauce programowania nie chodzi o to, aby uczyć się metodą pamięciową. Ważna jest umiejętność wyszukiwania wiedzy, studiowania dokumentacji i próba samodzielnego rozwiązywania problemów. Istotne jest rozumienie, a nie deklamowanie oklepanych formułek. Dlatego warto czytanie przeplatać pisaniem kodu, dużą ilością kodu.
A teraz pytanie: Gdzie szukać wiedzy?
Internet to oczywiście kopalnia wiedzy i najlepsze źródło informacji dla programisty. W sieci bez problemu znajdziecie kursy C++ na różnym poziomie. Wśród nich nie brakuje tutoriali w różnej formie (tekst, wideo). Oto nasze propozycje:
- Learn How to Program with C++ - bardzo dobry, ale płatny, kurs po angielsku (C++11);
- Cpp0x – zbiór bardzo dobrych, polskich, bezpłatnych kursów na różnym poziomie (C++11);
- Kurs C++ od zera do bohatera – ciekawy, polski kurs, za który trzeba zapłacić.
Pomimo ograniczeń źródeł drukowanych, nie należy całkowicie z nich rezygnować, bo są dobrym wsparciem.
Prawdziwa nauka programowania to samodzielne zmaganie się z różnymi programistycznymi wyzwaniami, a nie bezmyślne kopiowanie kodu. Takie wyzwania znajdziemy bez problemu w Internecie.
W sieci jest mnóstwo materiałów na temat C++. Można przebierać w stronach internetowych i społecznościach, które dotykają tematyki powiązanej z językiem. Oto kilka naszych propozycji:
- C++ Patterns - świetna strona, na której prezentowane są częste problemy wraz z konkretnymi rozwiązaniami. Przykład? Sortowanie elementów czy zamiana dwóch wartości. Znajdują się tam też przykłady implementacji niektórych wzorców projektowych.
- Simplify C++ - blog zachęcający do kodowania w C++ w jak najprostszy sposób, przy okazji zawiera znakomite omówienie kolejnych feature’ów języka.
- Standard C++ Foundation - strona komitetu pracującego nad C++. To swego rodzaju centrum życia społeczności, gdzie znajdziesz artykuły, newsy i informacje o eventach dotyczących języka.
- C++ na Reddicie - bardzo przydatny subreddit do śledzenia nowości i ciekawych artykułów o C++
- Pytania na Reddicie - subreddit służący do zadawania pytań. Pozwala na zadawanie pytań bardziej konkretnych niż np. StackOverflow.
Na koniec małe przypomnienie: programista nigdy nie przestaje się uczyć. Jeśli zamierzacie na poważnie zająć się kodowaniem, oswójcie się z myślą o nieustannym rozwijaniu swoich umiejętności. Mamy nadzieję, że powyższe materiały i rady przydadzą się Wam w tym.