fbpx ...

Dlaczego C++? Jakich języków programowania warto się uczyć?

Czy w 2021 roku warto zainteresować się programowaniem w C++? Łukasz opowiada o faktach i mitach dotyczących C++ oraz innych języków programowania.

Osoby wracające do programowania prawdopodobnie w przeszłości spotkały się z C++ w szkole średniej lub na studiach. C++ nadal jest jednym z głównych języków programowania dostępnych na uczelniach wyższych i uczony jest jako “wstęp” do programowania. To oczywiście przeciętny pomysł, ale z innych powodów niż myślisz.

Mity dotyczące C++ i jego trudności bardziej związane są ze sposobem nauczania go na uczelniach niż z samym językiem. Uczelniane / szkolne programy zakładają mylenie C++ z C, uczenie przestarzałych standardów i metaforyczne “programowanie na kartce papieru”. Nic dziwnego, że później “wskaźniki” i “szablony” spędzają sen z powiek studentom (zwłaszcza, jeśli nigdy nie słyszeli o inteligentnych wskaźnikach).

Tylko jeśli studenci przeskoczyliby na naukę nowoczesnych standardów, szybko okazałoby się, że C++ nie odstaje trudnością od innych języków programowania. Czy jest trudniejszy od Javy? Na pewno tak. Nie jest jednak tak trudny, jak się wydaje. 

Plusy i minusy C++

C++ jest kompatybilny wstecz. Należy to traktować jako jego wadę i zaletę w jednym. Z jednej strony można pisać kod po staremu, co daje ogromne możliwości, z drugiej strony dobre praktyki ze starych standardów najczęściej są złymi praktykami w nowych standardach.

Ale główny minus C++ to fakt, że musisz przygotować się na dużo, dużo pracy, bo czeka Cię masa wiedzy do ogarnięcia. W C++ jest o wiele więcej zagadnień do nauczenia niż w innych językach.

Z drugiej strony C++ używany jest w dwóch rozwojowych branżach: gamedevie i embedded. W przypadku tej drugiej na pewno ktoś powie, że więcej używa się języka C a w tej pierwszej C#, ale generalnie przesiadka z C++ na dwa powyższe nie powinna być problemem. Co więcej, przesiadka z C++ na każdy inny, dowolny język programowania nie powinna być trudna.

Kolejny plus – mało który język nauczy dbania o zasoby (takie jak pamięć) i wydajność tak jak C++. Używa się go głównie tam, gdzie wydajność jest kluczowa i duży nacisk kładzie się na złożoność obliczeniową i optymalizacje. Inne popularne języki, takie jak Java czy Python, nie umożliwiają zejścia na tzw. niższy poziom. Jednak optymalizowanie kodu wcale nie musi oznaczać schodzenia na te niższe poziomy, które C++ nam zapewnia.

  • Minusy: kompleksowość oraz przestarzałe praktyki dostępne w internecie i na studiach.
  • Plusy: możliwość pracy w popularnych branżach, łatwość nauki innego języka programowania.

Jakich języków programowania warto się uczyć

Jeśli nie C++, to co? Dla początkująch dobrą propozycją może być popularny Python. Osoby chcące pracować z backendem mogą też śmiało próbować Javy. Bez dwóch zdań nauka obydwu powyższych będzie łatwiejsza. Web development to JavaScript (tylko pamiętajcie, że HTML to nie język programowania!). Python i zbliżona do C++ składniowo Java na pewno będą łatwiejsze na start, choćby z tego powodu, że nie musimy zajmować się zarządzaniem zasobami.

ALE… C++ daje ogrom możliwości – programistycznych oraz w szukaniu pracy. Co przekłada się bezpośrednio na zarobki.

Decydując się na samodzielną naukę C++ ciężko będzie zweryfikować, czy wiedza jest aktualna i czy obecnie kod pisze się w dany sposób. Próbowanie nauki C++ od zera jest ryzykowne. Minimum, poza szukaniem najnowszych standardów, będzie znalezienie mentora lub chociaż grup fejsbukowych, które poradzą w którym kierunku pójść.

Który język wybierzesz?

Decyzja oczywiście należy do Ciebie, ale na zachętę przytoczę popularne powiedzonko w programistycznym kręgu: jeżeli chcesz sobie strzelić w stopę i jesteś pythonowcem, to Python Ci na to nie pozwoli. Natomiast jeśli używasz C++, to zapyta on tylko, jaki kaliber sobie życzysz 🙂

ninjaletter

A może Ninjaletter?

Chcesz wiedzieć, co słychać w C++ i nie tylko? Zapisz się na Ninjaletter i otrzymuj od nas co miesiąc dawkę wartościowych treści o C++ i zadania rekrutacyjne. Do tego dorzucamy darmowe materiały, spoilery o nowych kursach, specjalne promocje dla ninjaletterowiczów i wiele, wiele innych. To co, skusisz się?

Łukasz Ziobroń

Łukasz Ziobroń

Zmieniam ludzi w prawdziwych programistów. W nauczaniu stosuję grywalizację, andragogikę i neurodydaktykę.

Najnowsze artykuły

good programming practices

Good programming practices – Coding Dojo

Training in a form of Coding Dojo. Participants start with a code review of a small application. They note down their comments. After that, the trainer presents bad and good programming practices. Participants discuss what can be applied in a reviewed code and start fixing it in a form of Coding Dojo.

Czytaj »

Popular C++ Idioms – Coding Dojo

The training starts with a code review of a small application (pre-work). Participants note their thought and discuss their findings in groups. Then popular C++ idioms are presented (the concept and some code) – about 15-20 minutes each. After that participants need to use some of the idioms in a reviewed application code.

Czytaj »
performance optimisations

Performance optimisations

This training is about writing more robust C++ code and algorithms with the help of CPU caches and a compiler. Benchmarking tools are used to show performance gains.

Czytaj »
C++ toolset

C++ toolset

Covers a lot of ground about C++ related tools: build systems, compilers, debuggers, static and dynamic binary analyzers. It is focused more on discovering useful tools, that can solve many software engineering problems.

Czytaj »

Templates – Advanced techniques

Basic usage of C++ templates may not be enough to utilize opportunities, which were introduced in the latest C++ standards. From C++11 we can use templates with any number of parameters and use a simplified mechanism for SFINAE, which is claimed to be a real C++ wizardry.

Czytaj »
templates – basics

Templates – Basics

Templates are pointed out to be the most difficult part of the C++ language. Difficult, but very useful. They allow writing very generic and universal code. Thanks to them, we can avoid code duplication, but also, make it incomprehensible for beginners. This session allows for gaining the necessary knowledge and good practices on using templates.

Czytaj »
STL algorithms in C++ 17

STL Algorithms in C++ 17

This training focuses on the effective use of C++ documentation to implement applications with the use of STL algorithms. First part is mainly theoretical, but there are many short exercises (in a paper form) to apply knowledge instantly and force participants to think and search for solutions in the documentation. The other part is a group activity – implementation of the cryptographic application with proper STL algorithms instead of raw loops.

Czytaj »
STL containers

STL Containers

This training focuses on the effective use of C++ documentation. Computational complexity issues are mentioned. There are many short exercises to apply knowledge instantly and force participants to think and search for solutions in the documentation.

Czytaj »
ninjaletter

Już uciekasz?

Zanim to zrobisz, zapisz się na Ninjaletter, aby wiedzieć, co piszczy w C++. 

Informujemy, iż w celu realizacji usług dostępnych w naszym serwisie, optymalizacji jej treści, dostosowania strony do Państwa indywidualnych potrzeb oraz wyświetlania, personalizacji i mierzenia skuteczności reklam w ramach zewnętrznych sieci reklamowych korzystamy z informacji zapisanych za pomocą plików cookies na urządzeniach końcowych użytkowników. Pliki cookies można kontrolować za pomocą ustawień swojej przeglądarki internetowej. Dalsze korzystanie z naszego serwisu, bez zmiany ustawień przeglądarki internetowej oznacza, iż użytkownik akceptuje stosowanie plików cookies. Więcej informacji zawartych jest w polityce prywatności serwisu.