Citat:
Mihajlo Cvetanović: Postoje drugi jezici koji su zamenili C++ kao jezik opšte namene. Tu su Java i C#, ali i Python i Perl. C++ sada koriste samo oni koji ga već dobro znaju i ne žele da prelaze na drugo, ili ako se radi na postojećem projektu koji je već pisan u C++. Jezik je ostao dobar za neke specijalne slučajeve. Što si bliže hardveru to je korisniji, ali čak i tada kad se opasno približiš hardveru (pišeš drajver) možda je C bolji od C++. U svim ostalim slučajevima bolje je odabrati jezike koji su udobniji za rad, i kojima se brže i jeftinije dolazi do rezultata.
Ne bih mogao u potpunosti da se se složim.
C++ je nekada ranije bio težak za učenje što jer je skoro sve nasledio od C-a, a samim tim su i prvi koraci u njegovom učenju bili identični kao kod C-a. Još uvek se i na fakultetima primenjuje slična metodologija, tj. uči se kao da je u pitanju "C sa klasama".
Kako su se pojavljiavli VM jezici poput Jave i C#-a koji su u samom startu imali GC, imali bolja okruženja i framework-e sa GUI toolkitima, koji su korisnika oslobađali razmišljanja o pokazivačima, tako je C++ postajao sve manje popularan, što je u principu i normalno, ali se tu ipak i preterivalo (a i marketing je uradio svoje) pa je na kraju postao i bauk.
Međutim, ni veliki igrači (MS, Google, Facebook, ...) ga nisu napustili, šta više. Pored Qt-a kao odličnog cross-platform toolkita i novog standarda (nove mogućnosti jezika, još bolja izražajnost, nove biblioteke...) opet mnogima postaje izbor #1.
E sada, ono što definitivno treba promeniti, to je metodologija učenja (za počekat, putpuno izbacivanje C-olikog razmišljanja).
I da, čak i kad su low level poslovi u pitanju, i tu je C++ u opštem slučaju bolji od C-a (a to je prevashodno zbog mnogo čistijeg type sistema i postojanja templejta, statičkog polimorfizma...)
Daću dva primera:
1. Početnike još uvek uče da se dinamička alokacija vrši isključivo ovako:
Code:
Tip *x = new Tip;
i to treba znati, ali ako se forwardujemo u 2012. godinu imamo ovo:
Code:
auto x = make_shared<T>();
2. Jedna od stvari koje se još uvek uveliko uče u okviru mnogih C++ kurseva su pokazivači na funkcije i nekako neizbežni qsort. A poznato je da je std::sort višestruko brži od qsorta (koristi se specijalizacija templejta, functor-i ili lambde umesto pokazivača na f-je pa nema više nikakvih indirekcija... bolji inline koda, itd...)