Језик C++: од прошлости до будућности

Језик С ++

Језик C++: од прошлости до будућности.

Творац C++ Бјерн Страуструп говорио је о скривеним могућностима овог кода

Могућности језика C++, развијеног 80-их година XX века, и даље остају једне од најпопуларнијих у развоју софтвера, али те могућности се могу многократно унапредити ако се одустане од старих начина писања кода. Ово је 4. фебруара написао творац језика Бјерн Страуструп у чланку на сајту Communications of the ACM. Анкетирани стручњаци у индустрији за „Експерт“ изнели су предности и проблеме кодирања уз помоћ C++. Он и даље остаје један од најпопуларнијих и најтраженијих језика на свету.

C++ стабилно држи водеће позиције у TIOBE — једном од најпознатијих рејтинга популарности језика програмирања. Оценjuje се на основу упита на претраживачима. У периоду од 2001. до 2024. године C++ није пао ниже од пете позиције у овом рејтингу, који прати 50 језика. На C++ су написани савремени системи као што су програмски пакет Adobe, главни производи Microsoft-а (Office, Visual Studio), претраживачка платформа Google, велики део MacOS-а, унутрашњи системи Facebook-а и Siemens-а. C++ је познат по високој перформанси и широкој употреби, али се такође сматра једним од најтежих језика за учење.

У свом чланку, Страуструп истиче да значајно може да убрза рад програма написаних на C++ захваљујући средствима која су у овом језику готово од самог његовог покретања 1983. године.

Да би користио неке од раније припремљених функција у језику (библиотеке), на пример за математичке израде, програмер мора прво да их „прикачи“ на свој код. У C++ традиционално се користи команда #include (на почетку кода пишемо: #include). Како Страуструп пише, замена #include са савременијом командом import може убрзати рад кода готово 25 пута, а такође смањује број грешака.

Један од већих проблема C++ је рад са меморијом. Док се у већини савремених језика програмирања овај процес обавља аутоматски, у C++ програмер мора сам да брине о меморији и ослобађа је када није потребна. То је као да након сваког копирања помоћу Ctrl+C морамо сами да обришемо копирану садржину — у супротном би дошло до „цурења“ меморије. Страуструп инсистира на одустајању од традиционалних C++ алата за рад са меморијом попут сакупљача смећа — они аутоматски ослобађају меморију. Сакупљачи смећа често раде неефикасно и са грешкама, а приступи попут RAII (Resource Acquisition Is Initialization) могу значајно да смање рачунарско оптерећење и обезбеде безбедност кода, каже Страуструп.

Ови и многи други начини побољшања кода већ постоје у C++, али главни проблем је то што се готово никада не користе, уверено тврди Страуструп. „Избегавати неоптималне методе је тешко. Стари задаци се тешко напуштају. Навике често мешамо са једноставношћу. На интернету и у наставним материјалима круже многи збуњујући и застарели подаци“, написао је Страуструп.

Још један важан правац развоја C++ језика је његово постепено кретање ка одустајању од старих функција и увођењу поједностављених варијација основних алата, чиме би језик постао лакши за почетнике, сигурнији и ефикаснији — „C++ на стероидима“, како Страуструп пише у свом чланку.

C++ и даље остаје актуелан јер је значајан део примењеног софтвера — базе података, оперативни системи и критични делови савременог ИТ-а — написан на њему, истиче директор за развој производа компаније „КомјуниТиХе” (CommunityTech) Игор Горјачев у коментару за „Експерт“. Међутим, језик има и проблема. Један од највећих је рад са меморијом на ниском нивоу, који може довести до грешака у коду, наводи аналитичар. Око 80% ујазивости које се користе за хаковање рачунарских система односи се на погрешан рад са меморијом, додаје он.

Један од главних проблема C++ језика је и брзо појављивање нових стандарда (свака три године), након готово деценије паузе између стандарда из 2003. и „нове ере C++“, коју је отворио стандард C++11 2011. године, сматра академски руководилац магистарског програма „Системска и програмска инжењерија“ на Факултету за компјутерске науке НИУ ВШЕ Сергеј Шершаков. У последњим годинама језик се креће ка поједностављењу: појављују се конструкције које имају за циљ да олакшају решавање применљивих задатака, рекао је Шершаков за „Експерт“. Међутим, имплементација и подршка ових конструкција — тако да се задржи основна идеја језика: „принцип нултих додатних трошкова“ (Zero-Overhead Principle) — веома су сложени, а ова сложеност није само на програмерима компајлера и алата за дизајнирање, већ и на програмерима библиотека који желе да одрже код у релативно „свежем“ стању.

Главни проблем и уједно предност C++ језика је огроман број функција и библиотека, сматра директор за развој програма у компанији „АЛМИ Партнер“ Сергеј Аксенов. То омогућава имплементацију исте логике на више начина, али то такође чини језик тешким за учење и повећава вероватноћу да ће програмер направити грешку, објаснио је он за „Експерт“.

C++ је прилично сложен због великог броја функционалности, али поједностављење језика и уклањање старих метода и синтаксе може угрозити компатибилност и лишити језик његових основних предности, уверено сматра Аксенов.

„Говорити о смањењу ‘прагa уласка’ за почетак рада са оваквим системима исто је као говорити о смањењу ‘прагa уласка’ у професију лекара, на пример, уклањањем дела органа из људског тела: то заиста олакшава систем у целини“, каже Шершаков.

Да би се смањио праг уласка за почетнике, требало би, на пример, развијати интуитивније библиотеке или алате који сакривају сложене детаље о управљању меморијом, дозвољава Горјачев.

Главна предност C++ језика је максимално искоришћавање рачунарских ресурса система за који се развија софтвер, уверен је Шершаков. Овај језик подржава многа програмска парадигма (процедурално, објектно-оријентисано програмирање и др.), може да комуницира како са бројним високим системима тако и директно са процесором и меморијом.

Област примене језика је веома широка: то су и системске апликације, и десктоп пакети, програми за обраду графике и мултимедије, серверске апликације (посебно у области високо оптерећених система), код за микроконтролере, набраја Шершаков. Сва рачунарска језгра за данас толико тражени вештачки интелигентни системи написана су на C++, док је Python у овом случају само омотач, иако за многе људе он представља једину видљиву програмску везу са ВИ, додаје он. C++ се активно примењује за развој мобилних апликација, посебно оних које имају повећане захтеве за перформансама, а чак и за веб апликације, иако се ова област традиционално сматра територијом других језика.

Експерт.ру

 

Бонус видео