kompetanseguiden
Hva er C++?
Hva er C++ – og hvor kan du lære det? I denne artikkelen får du en rask introduksjon til hva C++ er og hvordan det brukes, mens du i verktøyet øverst kan finne ut hvor og hvordan du kan lære det – basert på dine egne kriterier for læringen.
Tilbake til kompetanseguidens hovedside
C++ er en utvidelse av C, og er et generelt programmeringsspråk som kan bli – og blir – brukt til det aller meste: alt fra operativsystemkjerner til dataspill.
Rune Dalmo er førsteamanuensis ved Institutt for datateknologi og beregningsorienterte ingeniørfag på Universitetet i Tromsø, og underviser i C++. I dette intervjuet gir han oss en liten introduksjon til språket.
Hva er det overordnede bruksområdet for dette C++ i 2020?C++ brukes nær sagt til det meste. Spesielt til implementering av store og små programsystemer hvor ytelse, sikkerhet og robusthet er viktig.
Noen eksempler er datamaskingrafikk, brukergrensesnitt, kjerner, databaser, operativsystemer, mikrokontrollere og kommunikasjon.
C++ brukes ofte til å lage de underliggende bibliotekene i andre språk, herunder Python.
Hva er fordelen med C++?C++ består av selve språket, samt et standardbibliotek som tilbyr kontainere, algoritmer, iteratorer m.m. Egenskaper som sterk typesikkerhet og tilgang til maskinvare gjennom direkte mapping uten overhead gjør det mulig å oppnå høy ytelse og sikkerhet, samt kontrollere datamaskinen og dens ressurser. C++ støtter generisk programmering gjennom meta-programmering.
En annen stor fordel er at det er mulig å kombinere ulike paradigmer innen programmering, for eksempel objektorientert og datadrevet tilnærming, og med moderne C++ også funksjonell programmering.
C++ har eksistert i snart fire tiår. Bibliotekene har blitt brukt av svært mange utviklere over lang tid, og det finnes mange av dem. Dessuten finnes det flere aktive og konkurrerende produsenter av kompilatorer, som alle er uavhengige av C++-komiteen. Dette bidrar til å gjøre kompilatorene bedre.
Foreløpig mangler C++ refleksjon, som vanligvis finnes i interpreterte språk, men det ser ut til å komme i neste standard. I motsetning til interpreterte språk, som for eksempel Python, er det ikke nødvendig å ta vare på meta-informasjonen som brukes til blant annet refleksjon utenfor kompilatoren.
Det er viktig at de som lærer seg språket nå fokuserer på moderne C++
Hva er ulempene eller begrensningene?Språket er stort, og det eksisterer mye «legacy kode» skrevet i gammel C++. Det er imidlertid viktig at de som lærer seg språket nå fokuserer på moderne C++.
Hva er typisk å utvikle med C++, og hvilke teknologier er vanlig å bruke for å oppnå det?Kritiske programsystemer, kontrollere, frontend, backend, algoritmer og biblioteker, for å nevne noe.
Hva er kjente eksempler på populære programmer, nettsider eller funksjoner som er utviklet med C++?Dataspill, Microsoft Windows, Facebook, Office, Internet Explorer, Mozilla Firefox, Google Chromium, Adobe Photoshop, Maya 3D, deler av Apple OS X, samt MySQL- og Postgres-databaser, for å nevne noe.
Hvilke teknologier eller verktøy er det viktig å mestre for å utnytte potensialet i C++?Ut over hva som er viktig å kunne for ethvert programmeringsspråk, er det en fordel å ha kjennskap til datamaskinens oppbygning og virkemåte.
Hvilke språk ligner, eller er nært knyttet til C++?C++ inngår i familien av såkalte C-style språk, som er designet for å lage programvare for et bredest mulig spekter av anvendelser. Syntaksen til både Java og C# er sterkt påvirket av C++.
Hvordan er vanskelighetsgraden og læringskurven? Hvilke forkunnskaper er det en eventuelt en fordel å ha?Legacy C++ har fått kritikk for å være et vanskelig språk å lære, hovedsakelig grunnet håndtering av minne gjennom pekere. Moderne C++ er imidlertid fullt på høyde med andre moderne programmeringsspråk.
Microsoft, som er en av verdens største produsenter av programvare, bidrar sterkt til utviklingen av grafiske verktøy. Det hjelper på brukervennligheten. I tillegg lager en av de største produsentene av kryssplattform-applikasjoner, Qt, rammeverk for C++ som gjør det lettere for brukere.
Kan du si noe om utviklingen og forhistorien til C++?Forløperen til C++ ble opprinnelig laget som en utvidelse av C. I dag betraktes C++ før C++11 som legacy. C++11 kan best betraktes som et nytt språk sammenlignet med eldre versjoner. Den nye standarden C++20 markerer et nytt stort skille.
Hvilke råd kan du gi til en som ønsker å lære seg C++?Begynn med å programmere ut fra interesse, gjerne noe grafisk, for eksempel ved å bruke Qt eller Unreal Game Engine. Det er alltid motiverende å lage noe som vises på skjermen og kan bevege seg.
- Programmér uten pekere og fokusér på typesikkerhet.
- Se på moderne kodeeksempler.
- C++ opp til C++11, fra C++11 til C++17 og C++20 er tre forskjellige programmeringsspråk. Still inn kompilatoren på C++20.
- Bruk etablerte programmeringsbiblioteker som STL og Qt.