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

23. november 2016 kl. 12:134
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.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

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.

Artiklen fortsætter efter annoncen

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.

Remote video URL

4 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
4
24. november 2016 kl. 14:06

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++.

3
23. november 2016 kl. 15:58

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.

2
23. november 2016 kl. 14:28

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.

1
23. november 2016 kl. 14:12

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.