Zašto se C++ ne koristi u razvijanju veštačke inteligencije?

Posle uvođenja novih i modernih jezika, C++ je postao suvišan. Okolnosti su još nepovoljnije ako uzmemo u obzir da skoro uopšte nije korišćen u razvijanju veštačke inteligencije.

C++ je krajem dvadesetog veka bio na vrhuncu razvoja i upotrebe i na čelu tehnološkog napretka, posebno u istraživanju svemira. Međutim, kad su se pojavili novi i vizuelno privlačniji programski jezici, niko više nije obraćao panju na C++.

Na samitu AI+Data 2024, stručnjaci su izjavili da više ne koriste jezik za razvijanje veštačke inteligencije.

Dakle, da li C++ postaje relikvija iz prošlosti?

Nema mnogo prednosti koje bi ga približile veštačkoj inteligenciji

Iako C++ poseduje neke napredne performanse i mogao bi da se primeni u različitim oblastima veštačke inteligencije, kao što su prepoznavanje govora i kompjuterski vid, nije jezik koji se koristi za razvoj veštačke inteligencije.

Najveći problem predstavljaju njegova složenost i činjenica da je onima koji žele da ga koriste potrebno mnogo vremena da bi ovladali njime. S druge strane, karakteristike Python-a, kao što je potpuna prilagođenost korisniku, opsežne biblioteke i velike zajednice programera, doveli su ga u prvi plan programiranja u oblasti veštačke inteligencije.

Štaviše, C++ podrazumeva ručno upravljanje memorijom, što može da dovede do curenja memorije i pojave grešaka ako se taj proces ne obavi kako treba. To može da bude značajan problem, posebno u velikim programima veštačke inteligencije.

Kompanija Microsoft je istakla taj problem kada je otkrila da se 70 procenata ažuriranja u prethodnih 12 godina odnosilo na rešavanje grešaka u bezbednosti memorije, zahvaljujući tome što je Windows uglavnom napisan u jezicima C i C++.

I u kompaniji Google, tim koji se bavi Chrome pregledačem objavio je sopstveno istraživanje, koje je otkrilo da nedostaci u upravljanju memorijom i u bezbednosti predstavljaju 70 procenata svih glavnih bezbednosnih grešaka u bazi kodova Chrome. I on je uglavnom napisan u jeziku C++.

C++ takođe nema ugrađenu podršku za sakupljanje smeća, pristup bazi podataka i niti, što može da zahteva dodatni trud pri programiranju.

To može da bude posebno teško u veštački inteligentnim aplikacijama koje zahtevaju istovremenu obradu podataka i zadataka, kao što su duboko učenje i neuronske mreže, sistemi u realnom vremenu i ugrađeni sistemi, obrada podataka i nauka o podacima.

Programeri, da bi prevazišli ta ograničenja, često koriste biblioteke i okvire nezavisnih proizvođača koji pružaju podršku za niti, kao što su OpenMP ili Boost. Međutim, te biblioteke mogu još više da iskomplikuju kôd, ali i dovedu do dodatnih troškova, što bi bila prednost samo za mali broj aplikacija.

C++ je komplikovan

Ako ste posetili stranicu koja sadrži najčešće postavljana pitanja u vezi sa C++ jezikom, shvatićete koliko može da vam bude teško da ga savladate. U ranijim verzijama jezika zarez koji ste stavili na pogrešno mesto mogao je da dovede do stotina grešaka pri kompajliranju.

Jezik je unapređen u verziji C++ 11, u kojoj se pojavljuje semantika pomeranja za prenos vlasništva i referenca rvalue. I pored toga, teško ga je savladati.

Razvoj novih jezika

Poslednjih godina videli smo da se pojavljuje priličan broj različitih programskih jezika koji potencijalno zamenjuju C++ za sistemske zadatke niskog nivoa, kao što je Rust, koji obezbeđuje sigurnost i bezbednost eliminisanjem prelivanja bafera i curenja memorije (i mnogo je lakši za učenje nego C++).

Kada uporedite skupove funkcija modernih jezika kao što su C++, Python i Rust, C jezik počinje da izgleda kao dinosaurus. Standardno izdanje C jezika nije dobilo nijednu novu funkciju još od 2011. godine.

Standardno izdanje iz 2017. obuhvatilo je tehničke ispravke i pojašnjenja, a ni standardno izdanje iz 2023. godine nije donelo neke zapanjujuće novine.

Da li C++ gubi popularnost?

Mnogi stručnjaci tvrde da programeri treba da prestanu da kreiraju kôd u programskim jezicima C i C++ i da bi u privredi te računarske jezike trebalo smatrati „zastarelim“.

Ken Tompson, stručnjak iz kompanije Bell Labs, koji je stvorio originalni Unix operativni sistem, nazvao ga je „lošim jezikom“ koji je „suviše veliki i suviše složen“ i „da ga je očigledno stvarala velika grupa ljudi bez jedinstvenog smisla i cilja“.

Hosting servis GitHub je sastavio listu deset najpopularnijih programskih jezika za mašinsko učenje. Python je najpopularniji jezik u repozitorijumima mašinskog učenja, a C++ zauzima šesto mesto.

Prema anketi koju je organizacija Stack Overflow sprovela među programerima, ljudi koji počinju da kodiraju verovatnije će se pre opredeliti za Python, nego za C++, što profesionalci ne bi uradili.

Iako C++ ima nekih prednosti u pogledu brzine i upravljanja memorijom, ima i nedostatke, kao što su nedostatak pomoći zajednice i njegova složenost, zbog čega ga je teško naučiti.

Uprkos svim izazovima, C++ može da bude izuzetan izbor za pravljenje aplikacija u mašinskom učenju koje zahtevaju obradu visokih performansi i napredno upravljanje memorijom. Izbor između C++ i Python-a za mašinsko učenje na kraju zavisi od specifičnih potreba aplikacije i nivoa stručnosti programera.