Mener mange misforstår C++: «Det er ofte en god grunn til at man velger C++»

Anders Schau Knatten mener det er mange gode argumenter både for og imot å bruke C++, og at språket har de kuleste jobbene. Nå har han gitt ut bok.

Anders Schau Knatten har lang erfaring som C++-programmerer, og mener det er språket med de kuleste jobbene. 📸: Kurt Lekanger
Anders Schau Knatten har lang erfaring som C++-programmerer, og mener det er språket med de kuleste jobbene. 📸: Kurt Lekanger Vis mer

– Grunnen til at jeg liker C++, er at det er så mange kule ting du kan gjøre med språket. Og veldig mange av de kule jobbene er med C++!

Det sier Anders Schau Knatten entusiastisk. Han jobber til daglig som Principal Engineer i Ascenium, der han blant annet utvikler en simulator for et nytt CPU-design selskapet lager.

Knatten har 22 års erfaring med flere ulike programmeringsspråk og holder ofte foredrag om C++.

– Grunnen til at jeg skriver C++ nå er fordi jeg skriver simulatorer. Kompilatoren vår er en LLVM-backend, som er skrevet i C++. Skal du integrere noe mot LLVM, så må du skrive i C++. Og simulatoren integrerer mye mot LLVM, sier Knatten.

Mange misforståelser om C++

De siste årene har mange gått ut og oppfordret til å bytte ut C++ med mer minnesikre og moderne språk som for eksempel Rust. Både det Hvite hus og NSA har frarådet bruken av C++, noe som fikk C++-skaperen Bjarne Stroustrup til å se rødt.

Knatten har selv erfaring med flere andre språk, som C# og Java, og sier han ikke har noe "religiøst" forhold til C++.

– Det er ingen tvil om at Rust er et mer minnesikkert språk enn C++, med "borrow checker" og andre ting. Skal du lage en applikasjon fra scratch, kan det være at Rust eller C# er et bedre språk.

– Og hvis det ikke er noen grunn til at du skal bruke C++, så ikke gjør det. Skal du skrive en web-backend, ikke bruk C++. Men ofte er det en god grunn til at man velger C++.

«Hvis du bruker moderne C++ trenger du ikke å tenke på minnelekkasjer og slike ting.»

Samtidig mener han det er mange misforståelser ute og går om C++.

– Jeg tror mange tror at C++ er et språk hvor man må "manage" minnet selv. Men det er ingen som har gjort det de siste ti årene. Hvis du bruker moderne C++ trenger du ikke å tenke på minnelekkasjer og slike ting.

Veldig mange av de minnerelaterte bugsene som det ofte refereres til i rapporter, er relatert til kode skrevet med det Knatten kaller "eldgamle C++-standarder".

– Hvis man bruker testing, lintere, sanitizere og moderne C++-standarder så er man mye tryggere, selv om man ikke er helt der Rust er.

– I praksis ser jeg heller ikke så ofte de bugsene som Rust ville tatt. Det er mye oftere logikk-bugs eller andre ting.

Klar med bok om C++

Nå er Knatten klar med en bok med navnet C++ Brain Teasers, utgitt hos The Pragmatic Programmers.

Boken består av 25 korte programmer skrevet i C++, og så er poenget at leseren skal gjette hva outputen til programmet er for noe. Ofte kan det være ting som er overraskende eller kanskje noen særtrekk ved programmeringsspråket – og så får du en forklaring etterpå.

Det hele er inspirert av nettstedet CppQuiz.org, som Knatten også står bak.

Boken C++ Brain Teasers er basert på spørsmål hentet fra kodequiz-nettstedet til Anders Schau Knatten. 📸: Privat
Boken C++ Brain Teasers er basert på spørsmål hentet fra kodequiz-nettstedet til Anders Schau Knatten. 📸: Privat Vis mer

– Jeg har hatt nettsiden siden 2013, og kjørt quizer på konferanser. I boken har jeg plukket ut spørsmål som lærer deg noe nyttig.

– Hvem er boken beregnet på?

– Du må kunne det grunnleggende. Men hvis du har skrevet litt C++ er det en grei bok, og nivået på spørsmålet er nok enklere enn på siten min.

I boken kommer han også med en del praktiske tips som kan være nyttige for utviklere å kunne, uansett hvilket nivå man befinner seg på.

Anbefaler å lære det

– Vil du anbefale folk å lære seg C++ i dag, eller bør man gå for andre språk som Rust?

– Ja, jeg synes jo det. Ikke fordi C++ nødvendigvis er et veldig bra språk. Ingen vil si at det er bedre enn for eksempel Haskell. Språket er det det er, verdens nest mest brukte programmeringsspråk, ifølge Tiobe-indeksen.

Han trekker frem alle de morsomme jobbene man kan få hvis man kan C++.

– Jeg jobber med CPU-simulatorer. I den forrige jobben min drev jeg med 3D-kameraer, der vi brukte C++ både på kameraet og i SDK-ene. C++ brukes innenfor spillutvikling, til det meste innenfor musikk, video og lydproduksjon, romfart, biler, finans og mye annet.

Knatten har selv jobbet med rekruttering av utviklere, og forteller at det er ganske vanskelig å rekruttere utviklere i Norge som kan C++.

– Det er ikke lett å finne C++-utviklere som ikke allerede har en jobb de er veldig fornøyd med.

Han mener imidlertid at det er mye C++-jobber der ute for folk som har lyst til å lære seg språket – eller som kan det fra før.

– Og språket har stor utvikling, selv om det er en litt tungrodd prosess siden C++ er en ISO-standard. Men det kommer en ny standard hvert tredje år.

Løser ting raskere i C++ enn i Rust

I sin egen jobb opplever Knatten at veldig mye går raskere å løse i C++ enn i Rust, rett og slett fordi du ikke trenger å være så nøye og omstendelig med alt.

– Mange bugfrie programmer ville trigget borrow-checkeren, selv om det ikke er noe galt med programmet.

Den viktigste grunnen til å bruke C++ mener han er hvis du allerede har et prosjekt som bruker det, eller som integrerer mot noe annet som er skrevet i C++.