Bjarne Stroustrup: C++ vil blive ved med at vokse så længe ingen bygger et bedre sprog

Der er stadig ingen andre sprog, der gør det bedre end C++, når det gælder specialiseret hardware, som skal bruges til Internet of Things, mener Bjarne Stroustrup.

C++ er ikke det programmeringssprog, der får mest opmærksomhed i disse år, men sproget er ifølge dets oprindelige skaber, mere relevant end nogensinde. Ifølge Bjarne Stroustrup, er der nemlig ingen andre sprog, der gør det bedre end C++, når det gælder de ting, C++ er særlig godt til.

»Indtil der er nogen, der bygger et bedre sprog, så vil C++ blive ved med at vokse,« siger Bjarne Stroustrup i et videointerview i forbindelse med et besøg hos Alexandra Instituttet.

Dermed ikke sagt, at C++ er bedst til alt, men ifølge Bjarne Stroustrup er der visse anvendelsesområder, hvor C++ ifølge hans mening stadig er bedst.

»Hvis du har et programmeringssprog, der skal køre på en virtuel maskine, hvilket sprog skriver du så den virtuelle maskine i? Eller hvis du har et lille stykke hardware til for eksempel Internet of Things eller et netværkskort, så har du brug for noget, der kan håndtere hardwaren og kompleksiteten, og der er C++ almindeligt og bliver mere almindeligt til disse formål,« siger Bjarne Stroustrup.

Den første officielle udgave af C++ udkom i 1985, og lige nu er den kommende C++17-standard under færdiggørelse.

Sproget har i mange år været standard for applikationsudvikling på flere platforme, men er på eksempelvis Windows-desktoppen blevet udfordret af Microsofts C# og på serverplatformene af Oracles Java. Begge sprog trækker dog i større eller mindre grad på C++.

Det gælder også en række nyere programmeringssprog, som giver mulighed for at inkludere biblioteker fra C++ til at dække de områder, sprogene endnu ikke selv har biblioteker til at håndtere.

Trækker tråde til C med potentielle sikkerhedshuller

En af udfordringerne ved C++ er, at det stadig trækker tråde tilbage til C, som ganske vist giver C++ en del af sprogets fordele, men også visse ulemper, som eksempelvis manglende beskyttelse af hukommelsen, som kan føre til sikkerhedshuller. Derfor er der opstået sprog som Rust, Go og D, der alle forsøger at nå samme ydelse som C++ men med færre af problemerne.

»Intet sprog holder evigt, men der er ikke ret megen konkurrence lige nu. Folk vil altid gerne bygge et sprog, der er enklere og nemmere at bruge, og så ender de med at være afhængige af et sprog som C++ for rent faktisk at fungere,« siger Bjarne Stroustrup.

Ifølge Bjarne Stroustrup vokser miljøet omkring C++ stadig med op mod 100.000 udviklere årligt. Og han vurderer, at det vil fortsætte, fordi sådan noget som Internet of Things giver C++ hjemmebanefordel, når det gælder systemer med begrænsede ressourcer.

»Systemer med nogle få hundrede kilobyte hukommelse, der er ikke mange sprog, der kan arbejde inden for sådanne rammer,« siger Bjarne Stroustrup.

Han peger også på, at man ganske rigtigt kan opnå resultater med specialiserede sprog, men det sætter til gengæld grænser for at samarbejde på tværs af platforme.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (4)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Torben Mogensen Blogger

Efter min mening sætter C++ sig mellem to stole: Til programmering på små enheder og til virtuelle maskiner (som han nævner) er C mere egnet, da det har et mindre køretidssystem. Til opgaver, hvor man har behov for abstraktioner i stil med templates eller klasser, er der sprog, der har bedre mekanismer for dette, og som ikke har alle de sikkerhedshuller, som C++ har.

Jeg vil betragte Rust som et udmærket alternativt til C og C++ til systemprogrammering: Der er væsentligt bedre styr på ressourcer, og der er færre måder at skyde sig selv i foden.

  • 2
  • 0
#2 Troels Henriksen

Til programmering på små enheder og til virtuelle maskiner (som han nævner) er C mere egnet, da det har et mindre køretidssystem. Til opgaver, hvor man har behov for abstraktioner i stil med templates eller klasser, er der sprog, der har bedre mekanismer for dette, og som ikke har alle de sikkerhedshuller, som C++ har.

C++ er interessant fordi ingen af de to ting du her nævner (klasser og templates) kræver et køretidssystem større end hvad C har - forudsat at du ikke bruger RTTI eller undtagelser. Den oplagte vtable-baserede oversættelse af C++-klasser er meget lig hvad man ville være nødt til at skrive i hånden i C, og har generelt meget forudsigelige omkostninger.

Problemet med C++ er ikke om det er hurtigt eller ej (det er det), men om at det som sprog er meget kompliceret, med subtile interaktioner mellem forskellige features. Jeg foretrækker selv C til mindre opgaver fordi jeg synes det er enklere, og i særdeleshed har jeg nemmere ved at vurdere kvaliteten af et design. C++ har for mange muligheder, og jeg har tit svært ved at afgøre om et valg jeg har truffet vil have negative konsekvenser jeg ikke kan gennemskue.

  • 8
  • 0
#3 Ivo Santos

Et af de muligheder jeg savner i C sproget er muligheden for at kalde en funktion som returnere størrelsen på den pågældende pointer, eller nul hvis den pågældende pointer er ugyldig.

Det er nemt nok at holde styr på buffer størrelser sålænge man har fuld kontrol med den hukommelse man selv allokere, men når man arbejdere med tredjeparts ting så kan det være umuligt at vide hvor stor bufferen er, og her ville en system funktion være nyttig til at returnere størrelsen af en buffer ved at man bruger en pointer som argument og evt. hvad start adressen på den pågældende pointer er.

  • 0
  • 0
#4 Morten V. Christiansen

Enig i at C umiddelbart er bedst til meget små enheder. Men så skal man liige lave en lille ting, hvor man har brug for en enkelt C++ feature. Vectors eller en eller anden form for smart pointers, måske. Og så ender det alligevel som et C++ projekt, der i realiteten er 97% ren C og 3% ++. Det har jeg i det mindste set et par gange. Den stærkeste feature ved C++ er nok stadig, at man kan skrive C programmer og kalde det for C++.

  • 4
  • 0
Log ind eller Opret konto for at kommentere