Diversity w polskim IT
Bulldogjob
Bulldogjob

C++ dla żółtodziobów. Jak się uczyć, czego unikać

Dowiesz się jak i gdzie szukać materiałów do nauki C++. Zebraliśmy dla Ciebie parę wskazówek oraz linków do kursów, książek czy zadań online z C++.
4.07.20215 min
C++ dla żółtodziobów. Jak się uczyć, czego unikać

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

Wersje C++

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++.

  • C++11 - wydanie 8 lat po poprzedniej wersji. Wprowadziła wyrażenia lambda, ulepszenia w implentacji sprytnych wskaźników, możliwość automatycznego przypisania typu, czy zastąpienie 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.
  • C++14 - rozbudowało możliwość dedukcji typów, o użycie tej funkcji języka również w wyrażeniach lambda czy typach zwracanych.
  • C++17 - dalsze rozszerzenie dedukcji typów, dodanie możliwości użycia if i lambd w konstrukcji constexpr (czyli takiej, której wartość zostaje określona w czasie kompilacji. W bibliotece standardowej pojawił się np. 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.

Efektywna nauka C++ - czego unikać?

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?

Kursy C++

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ć. 

Książki

Pomimo ograniczeń źródeł drukowanych, nie należy całkowicie z nich rezygnować, bo są dobrym wsparciem. 

  • C++ Primer Plus– bardzo dobrze napisany podręcznik Stephena Prata, do którego warto często zaglądać (C++11)
  • Skuteczny nowoczesny C++ - dobre wsparcie w poznawaniu najnowszych standardów języka programowania (C++11 i C++14);
  • C++ Primer- nie, to nie powtórzenie pierwszej pozycji z listy. To piąte wydanie książki Stanleya Lippmana, która jest również często polecana przez programistów (C++11)
  • Algorytmy bez tajemnic– przy okazji nauki programowania, warto wkroczyć w świat algorytmów (nie jest to książka bezpośrednio powiązana z C++);
  • Czysty kod- z tej książki można dowiedzieć się m.in. jak pisać czysty kod o dobrej strukturze, a dobrych nawyków warto nabierać od samego początku przygody z programowaniem (nie jest to książka bezpośrednio związana w C++)

Zadania online

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.

  • HackerRank– bardzo popularny serwis (ponad 2 mln użytkowników), gdzie warto sprawdzać swoje umiejętności w praktyce;
  • Sphere Online Judge– tym razem serwis w języku polskim, gdzie można znaleźć wyzwania o różnym poziomie trudności;
  • Code Chef– kolejne miejsce, gdzie można sprawdzić swoje umiejętności, dużo konkursów i zadań.
  • Leetcode - duży zbiór problemów do rozwiązania i przećwiczyć w praktyce pisanie kodu w C++ (i nie tylko)

Zasoby internetowe

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.

Podsumowanie

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.

<p>Loading...</p>