Putanja učenja za C++ — najvrednija za sačuvati u 2026. (🔥)
Nisam profesionalni C++ programer, ali sam na poslu izvesno vreme učio C++; ovaj članak delim sa ljubiteljima koje zanima C++. Na kraju se može preuzeti video materijal profesora Hou Jie-a.
Prvo, preporuke knjiga
Za učenje sintakse C++-a na prvom mestu preporučujem „C++ Primer, peto izdanje". Kada sam počeo prvi posao, kupio sam „C++ Primer, četvrto izdanje"; tu knjigu nikako nisam želeo da bacim, iako je već prilično pohabana, jer smo kroz mnogo toga prošli zajedno — pratila me kroz nekoliko gradova.

Zar to ne otkriva koliko godina radim?
Ova knjiga vrlo sveobuhvatno objašnjava sintaksu C++-a i njegove različite osobine; ako je istrajate do kraja, pomoći će vam mnogo. Ako imate dovoljno vremena, preporučujem da je pročitate barem dva puta. Ako vam je vreme ograničeno, barem je preletite jednom celom, uhvatite okvir, a zatim prema sopstvenoj situaciji izaberite ključna poglavlja za detaljnije čitanje.
Zatim „Effective C++", u prevodu profesora Hou Jie-a; ova knjiga govori o odredbama na koje treba paziti pri pisanju C++ koda i iz iste je serije kao i „Effective Java".

Treća knjiga je „Analiza izvornog koda STL-a", koju je napisao profesor Hou Jie; ona objašnjava internu implementaciju C++-a, uključujući implementaciju raznih kontejnera (vector, list, heap, deque, Red Black tree, hash table, set/map) i raznih uobičajenih algoritama (sortiranje, pretraga, permutacije i kombinacije, tehnike pomeranja i kopiranja podataka).

Četvrta knjiga „Duboko istraživanje modela objekata C++-a", u prevodu profesora Hou Jie-a; ova knjiga objašnjava mehanizme interne implementacije objektno-orijentisanih osobina C++-a. Iako je čitanje pomalo naporno, po završetku ćete razumeti „šta se zapravo dešava kada kod proradi".

Drugo, preporuke videa
Pošto su tri knjige profesora Hou Jie-a, zar ne bi bilo još bolje pogledati i njegova video predavanja? Međutim, zbog autorskih prava, na kineskim platformama Bilibili i AcFun skinuti su relevantni video resursi, uključujući:
- „Napredno objektno-orijentisano programiranje u C++-u"
- „STL"
- „Upravljanje memorijom u C++-u"
- „Nove osobine C++ 11"
- „Život i smrt C++ programa"

Preuzeo sam jednu kopiju sa interneta i sačuvao je lokalno.

Treće, projekti za vežbu
Imate knjige, imate video — preostaje da i sami kucate kod, posebno u početnoj fazi. Upamtite četiri velika znaka: samo je važna vežba.
Preporučujem jedan laki projekat za vežbu.
Ako tražite lakoću, moramo pomenuti open-source projekat workflow — jedan C++ open-source projekat koji je izuzetno pogodan za čitanje.
To je C++ serverski engine kompanije Sogou koji pokreće skoro sve njihove C++ online servise pozadine, uključujući sve servise pretrage, cloud metod unosa, online reklame itd.
Učenje mu je vrlo pristupačno — na primer, postavljanje HTTP servera zahteva samo nekoliko linija koda:
#include <stdio.h>
#include "workflow/WFHttpServer.h"
int main()
{
WFHttpServer server([](WFHttpTask *task) {
task->get_resp()->append_output_body("<html>Hello World!</html>");
});
if (server.start(8888) == 0) { // pokretanje servera na portu 8888
getchar(); // pritisni "Enter" za kraj.
server.stop();
}
return 0;
}Pored toga, možete i da:
- Implementirate klijent/server sa sopstvenim protokolom i izgradite sopstveni RPC sistem
- Gradite asinhroni tok zadataka
- Koristite ga kao alat za asinhroni IO datoteka
- Koristite ga kao alat za paralelno računanje
- Gradite sistem mikroservisa
GitHub link: https://github.com/sogou/workflow
Najnovija master grana može biti prezahtevna za početnike. Zato ću ovde podeliti nekoliko sitnih saveta koje sam godinama skupljao čitajući open-source projekte, u nadi da će vam makar malo pomoći.
Dobri open-source projekti imaju i desetine hiljada linija izvornog koda; iako su blago, bez veštine će uloženo vreme doneti malo rezultata.
Nesumnjivo, čitanje izvornog koda kvalitetnih open-source projekata jedan je od najboljih načina da programer poboljša sopstvenu sposobnost programiranja.
Ali, iskreno, čitanje tuđeg izvornog koda nikada nije laka stvar.
Pre svega, obavezno pronađite dobar open-source projekat. Broj zvezdica jeste važan kriterijum za dobar projekat — projekti poput docker-a, Spring Boot-a, Redis-a, workflow-a imaju vrlo impozantan broj zvezdica i svi su odličan materijal za učenje.
Kvalitetni open-source projekti pažljivo su osmišljeni od strane autora i sam kod im je izuzetno dobar. Ali mnogi imaju predrasudu da je kod dokumentacija. Po mom mišljenju, projekat bez detaljne dokumentacije ne može biti kvalitetan.
Kada projekti velikih razmera ostanu bez objašnjenja u dokumentaciji, postaju zastrašujući. Dakle, dobar open-source projekat obavezno mora imati potpunu dokumentaciju.
Na primer, dokumentacija workflow-a je prilično solidna.
Osnove klijenta
Osnove servera
Paralelni zadaci i radni tokovi
Nekoliko važnih tema
Zadaci računanja
Zadaci asinhronog IO datoteka
Osnove korisnički definisanih protokola
Ostali važni zadaci i komponente
Upravljanje servisima
Korišćenje konteksta veze
Ugrađeni klijenti
Drugo, krenite od niže verzije. Na primer, kada učimo workflow, možemo početi od verzije v0.9.0 kao završne release verzije.

Zatim se penjite sloj po sloj; efekat učenja biće sigurno bolji, posebno za početnike.
Konačno, budite strpljivi. Tokom čitanja open-source projekta obavezno ćete naići na kod koji ne razumete — to je normalno. Nemojte paničiti, a kamoli odustati.
Kao kada učimo fiziku ili matematiku — naiđete na poglavlje koje stvarno ne možete da savladate u tom trenutku, možete ga preskočiti, jer autor pri slaganju gradiva lako može prevideti osećaj početnika: on misli da je lakoća na početku, ali za čitaoca je možda baš suprotno.
Možete to zabeležiti, pa kada razumete veći blok koda, vratite se i pročitate nesignalizovane delove. Kada se vratite i čitate, vrlo je verovatno da će se problem sam rešiti.
Stisnite zube i istrajte, raspetljajte konac po konac — na kraju ćete postati onakvi kakvi želite da budete.
Ranije sam pomenuo da postoje dva načina da poboljšate sposobnost programiranja:
- Pravite sopstvene točkove
- Rastavljate tuđe točkove
Čitanje izvornog koda jeste proces rastavljanja tuđih točkova; proučavanje kako su drugi napisali kod doneti će veliki skok u vašoj programerskoj veštini.
Četvrto, pokoja misao iz iskustva
Učenje nije stvar jednog dana — zapamtite, važno je samo istrajati.
Na kraju, preporučujem još jedan repozitorijum koji je vrlo pogodan za početnike koji žele da idu od ulaska do napretka; rešava pitanje kako kandidati na intervjuu i učenici mogu da prodube C++ i kako da uđu u C++. Obuhvata analizu izvornog koda, višenitno konkurentno programiranje i druga znanja — prilično sveobuhvatan repozitorijum za učenje C++-a od ulaska do napretka.
GitHub - Light-City/CPlusPlusThings: Stvari o C++-u
- Stvari o const
- Stvari o static
- Stvari o this
- Stvari o inline
- Stvari o sizeof
- Stvari o pokazivačima na funkcije
- Stvari o čisto virtuelnim funkcijama i apstraktnim klasama
- Stvari o vptr_vtable
- Stvari o virtual
- Stvari o volatile
- Stvari o assert
- Stvari o bit poljima
- Stvari o extern
- Stvari o struct
- Stvari o struct naspram class
- Stvari o union
- Stvari o C implementaciji C++ polimorfizma
- Stvari o explicit
- Stvari o friend
- Stvari o using
- Stvari o ::
- Stvari o enum
- Stvari o decltype
- Stvari o referencama i pokazivačima
- Stvari o makroima
