Zašto naučiti C++?

Od svih jezika, zašto savladati baš ovaj? Koje su mogućnosti zaposlenja? Koliko ga je teško naučiti?


C++ se kroz svoju dugogodišnju prošlost pokazao kao vrlo moćan alat za izradu velikog broja aplikacija, igara iIi programa. 

C ++ omogućava iznimnu kontrolu nad načinom korištenja računalnih resursa te u velikom broju slučajeva (i naravno u iskusnim rukama) može nadmašiti performanse ostalih programskih jezika. 

Zahvaljujući tome, C + + se često koristi za razvoj game enginea poput Unityja i Unreal enginea koji pokreću mnoge poznate i uspješne video igre. Osim što nam C++ svakodnevno olakšava (a u slučaju video igara i uljepšava) život, imao je veliki utjecaj na evoluciju programskih jezika. 

Je li teško naučiti C++?

C++ spada u kategoriju „mid level“ programskih jezika, to jest jezici koji su na granici između mašinskog koda (binarni sustav nula i jedinica koje računalo razumije) i ljudske logike rečenica i kontekstualnog razumijevanja. 

Uzmimo kao primjer izradu čaja – kada govorimo osobi da napravi čaj, dali bismo im instrukcije da zakuhaju vodu, stave vrećicu čaja u šalicu i izliju vodu u šalicu.
C++u bi trebali objasniti sve detalje: gdje i kako stavljamo vodu u kuhalo, koje temperature voda mora biti, gdje stoje vrećice za čaj, koja je procedura stavljanja vrećice čaja u šalicu, pod kojim kutem izlijevamo vodu iz kuhala u šalicu, itd.
U mašinskom kodu bi iste naredbe izgledale kao nekoliko stranica teskta punih jedinica i nula – kompletno nečitljivo velikoj većini ljudi.

Brzina, kontrola i moć

Ovakav detaljan pristup instrukcijama omogućava C++u da bude efikasan i prilagodljiv, no za početnike ovakav pristup često zna biti vrlo kompleksan. Programer početnici moraju razmišljati ne samo o tome što želi da računalni program radi nego moraju svoj način razmišljanja prilagoditi načinu rada računala te biti vrlo precizni koje će sve instrukcije procesor provoditi te na kojem dijelu memorije će se one izvoditi.

Kad tome pripojimo i činjenicu da je potrebno puno programiranja da bi se stvorio program koji se može pokrenuti i vidjeti kako funkcionira, izgleda da početnicima nije mudro počinjati s C++ ... Ili?

Kompleksnost i skalabilnost

C++ zahtijeva puno koda, te je veća šansa da će se mladim developerima dogoditi bugovi. U smislu recruitmenta, iskusnog C++ programera nije lako (a ni jeftino) naći.

Problem učenja C++a nije u tome da je težak ili zahtjevan već da je iznimno širok i moćan. Početnici često zalutaju u funkcije jezika koje im na početničkoj razini nisu uopće potrebne. Takvim lutanjem pada motivacija koja često zna dovesti i do kompletnog odustajanja od učenja.

Rješenje tog problema je učiti s mentorom koji će točno znati objasniti svaki dio jezika te usmjeriti početnika prema funkcijama i mogućnostima koje su im bitne za manje zahtjevne projekte. Mentor također zadaje manje projekte koji omogućuju početnicima da čim prije vide napredak svog znanja na konkretnim primjerima te da se održi razina motivacije za učenje i razvoj.

Mentore za C++ pak možemo naći svugdje – na fakultetima, na forumima, u krugu svojih prijatelja ili dapače na tečaju C++a Machine.

Gdje mogu raditi kao C++ programer?

Ako stavimo dva C++ progamera s njihovim radnim mjestima jednog pored drugog, nećemo vidjeti prevelike razlike - veliki stol s udobnom stolicom, računala s više od jednog monitora, hrpe bijelih pozadina s puno crnog teksta, šalice s ostacima kave, itd. 

No, ono na čemu rade se ne može više razlikovati – jedan programer radi na game engineu za najnoviju video igru dok drugi programira algoritam prepoznavanja balistike projektila za ratne brodove

Prava moć C++ jezika je u iznimnoj prilagodljivosti i širokom rasponu primjena, a ovo su samo neki od njih:

1.) Video igre

Kada bi slagali listu svih video igara koje su napravljene u C++u ili uz pomoć C++a, lagano bi složili jednu knjigu s nekoliko desetaka ili stotina stranica. Najbolji početak te liste bila bi svi game enginea koji su pisanu u C++ a neki od najpoznatijih primjera su: Unity 3D, Unreal Engine, CryEngine, FrostBite, SourceEngine, AnvilNext, RAGE i još mnogi drugi. Usprkos tome što su svi oni pisani u C++u, nije nužno da sam game engine koristi C++ za programiranje video igara, kao što recimo Unity 3D koristi C# umjesto C++a, a Unreal Engine nudi mogućnost izrade igara putem Blueprints sustava koji ne zahtjeva znanje programiranja.

Listu nastavljamo svim igrama koje su ikada napravljene u bilo kojem od navedenih game engine-a... i od te liste nam se već lagano vrti u glavi jer uključuje skoro pa sve velike video igre u zadnjih dvadeset godina: Grand Theft Auto serijal, Assassin Creed serijal, sve Blizzard igre, sve Valve igre, Elder Scrolls serijal, i još mnogi drugi.

Ukratko, ako planirate ući u industriju video igara kao programer, C++ je jedan od najtraženijih programskih jezika jer tvori okosnicu skoro svih game enginea.

2.) Dizajnerski programi

Adobe Photoshop? Pisan u C++. Adobe Illustrator? Također. AutoDesk Maya 3D? O da. Microsoft Office? Yes.

Programi za dizajnere su objeručke prihvatili C++ kao svoju bazu jer im jezik omogućava da čim efikasnije koriste sve resurse različitih računala. Svatko tko je ikada probao raditi na iole većem projektu na slabijem računalu zna muku čekanja nekoliko sekundi ili minuta da se i najmanja promjena dogodi.
Ono što C++ donosi u takvim slučajevima je mogućnost da se takav program instalira na slabijim računalima i da uopće može otvoriti zahtjevnije projekte. 

Na moćnijim računalima i pri izračunu kompleksne računalne grafike smanjuje vrijeme čekanja s nekoliko sati na „ček, idem samo po kavu dok ovo završi“.

3.) Operativni sustavi

Svaki dan koplja se lome na internetu o tome da li je Apple OSX ili Microsoft Windows bolji pa je teško zamisliti da bi se te dvije grupe ljudi mogle složiti oko bilo čega. No kada bi znali da i jedan i drugi operativni sustav se naslanjaju na C++ kako bi poboljašli svoje performanse, možda bi malo omekšali svoje stavove... ne, dobro, ne bi, ali svejedno nije zanemarivo da C++ tvori bazu dva najveća operativna sustava.

4.) Web browseri

Da, svi su pisani u C++u. Od starog Internet Explorera pa do modernijeg Chromea, Firefoxa i Safarija.

5.) Financije

C++ se koristi za izradu i održavanje aplikacija i sustava za upravljanje računa u bankama te općenito financijskim sektorima. Upravo zbog svoje moćne infrastrukture, brzine i efikasnosti, mnogi programeri preferiraju koristiti C++ umjesto Jave ili Pythona.

Kako početi učiti C++?

Kao i bilo koju drugu vještinu, programiranje u C++ možeš savladati samostalno ili uz pomoć mentora. Samostalno učenje uz pomoć raznih tutoriala i vodiča obično traje jako dugo; ponekad ćeš imati bugove i rpobleme za koje ti Google možda neće davati rješenje. Pa da krenemo redom:

1.) Forumi

Forumi poput c plus plusDream In CodeStack Overflow i slični biti će ti od koristi kada naiđeš na konkretan i specifičan problem ili želju da nešto napraviš za što ne nailaziš tutorial ili vodič. Također, ukoliko koristiš Reddit, na subredditima r/programmingr/learnprogramming sigurno ćeš pronaći brdo korisnih linkova i materijala.

2.) Web-vodiči

Stranice poput LearnCpp.com ude ti savjete, vježbe i vodiče za učenje od samih osnova ovog jezika.

3.) Online tutoriali

Youtube, Udemy, Coursera...prepuni su kraćih i duljih tutoriala za učenje mnogih programerskih jezika.

4.) Tečajevi

Ukoliko misliš da bi ti učenje ipak bilo lakše uz mentora koji će ti pomoći da savladaš osnove i postaviš dobre temelje za daljnji razvoj, te ti pomoći u rješavanju konkretnih problema, tečaj je odličan izbor. Naš tečaj C++ programiranja kreće krajem srpnja 2017., te ponovno u studenom,  a prijaviti se možeš na machina@machina.hr

5.) Fakulteti

Ukoliko želiš steći određenu širinu prije nego se ˝specijaliziraš˝ za jedan jezik, ustanove visokog obrazovanja nude široke mogućnosti ovisno o tome što te najviše zanima.

Koji način učenja ćeš odabrati je na tebi, no svakako je bitno da si daš vremena i budeš ustrajan te se ne ustručavaš tražiti pomoć!


Prošlost, sadašnjost i budućnost C++

Iako se uvelike vode rasprave oko pitanja koji programski jezik najbolje učiti, čini se kako je C++ evergreen među programskim jezicima, čija se funkcionalnost ni danas ne dovodi u pitanje, a znanje C++ programskog jezika je i dalje traženo te se brojni pojedinci razvijaju u smjeru C++ programera.

Ukoliko se dvoumiš oko izbora koji programski jezik učiti, s C++-om teško da možeš pogriješiti jer je i dalje jedan od najraširenijih u upotrebi te je baza mnogim drugim jezicima koje će ti biti lakše učiti ukoliko si prethodno svladao C++.

Kao C++ programer, sigurno nećeš dugo sjediti besposlen, a širok izbor industrija u kojima možeš raditi je samo dodatan plus koje ti znanje ovog programskog jezika može donijeti.

Ukoliko te zanima više o ovom jeziku svakako preporučamo da poslušaš podcast originalnog tvorca C++, Bjarne Stroustrua, a možeš nam se javiti i na machina@machina.hr sa svim pitanjima na koja smo možda propustili odgovoriti u ovom blogu!