Kris van Rens (Trainer)
Ondanks een groot aantal opkomende alternatieven is C++ nog steeds een kracht om rekening mee te houden, zeker in de door legacy geplaagde high-tech industrie. In een serie artikelen plaatst High Tech Institute trainer Kris van Rens de taal in een modern perspectief. In onze nieuwe 4-daagse training laat Kris van Rens deelnemers kennismaken met de basisprincipes van de taal en essentiële best practices.
Afgelopen juli werd de programmeertaal Carbon officieel aangekondigd tijdens de CppNorth C++ conferentie in Toronto, Canada. Carbon wordt gepresenteerd als “een experimentele opvolger van C++” en is gestart als een open-source project, nota bene door Google. Wacht… Google gaat een C++-opvolger maken? Tot voor kort was het bedrijf sterk betrokken bij de ontwikkeling van de C++ taal en de ontwikkeling van de Clang C++ front-end voor de LLVM compiler. Met tienduizenden engineers binnen Google die werken aan miljarden regels code, lijkt het kiezen van een compleet nieuwe taal nogal gewaagd.
Waarom zou een enorm bedrijf als Google zich wagen aan zo’n gewaagd project? Nou, het is een symptoom van de staat en ontwikkeling van C++. Voor degenen die nog niet op de hoogte zijn van de evolutie van de taal in de afgelopen jaren: er zijn enkele grote discussies geweest. Natuurlijk is het voeren van discussies het hele doel van de C++ commissievergaderingen, maar één onderwerp duikt steeds weer op zonder dat er een oplossing voor is: of het al dan niet de moeite waard is om het taalontwerp te verbeteren ten koste van achterwaartse compatibiliteit.
Slanker bestuur
C++ bestaat nu ongeveer veertig jaar en wordt over de hele wereld gebruikt om prestatiegerichte software te maken. Na een periode van relatieve rust na de eerste ISO-standaardisatie in 1998, is de commissie er sinds 2011 in geslaagd om elke drie jaar grote verbeteringen door te voeren. Als gevolg daarvan is de taal heel anders geworden dan diegenen onder ons die oud genoeg zijn om er in de jaren negentig en negentig mee te werken. Alleen al de toevoeging van functies zoals concepten, bereiken en modules in C++20 is een krachtige slag.
Tegelijkertijd staat het evolutieproces van de C++ taal echter bekend als extreem uitdagend. Het gewicht van decennia aan technische schuld met behoud van achterwaartse compatibiliteit is aanzienlijk – te veel voor sommigen, lijkt het. Proberen om een belangrijke taalfunctie toe te voegen kan wel tien jaar aan lobbyen, discussies, reviews, testen, meer reviews en nauwgezette formulering kosten. Natuurlijk is het introduceren van aanzienlijke veranderingen in een project met zoveel belanghebbenden geen sinecure, maar tien jaar is in de huidige technische wereld letterlijk een mensenleven. Een andere uitdaging is dat het ISO comité overwegend westers is, met een zware ondervertegenwoordiging van grote Aziatische C++ gebruikers zoals India of China. Deze nadelen zien er niet goed uit, zeker niet in het licht van snelgroeiende, moderne, openlijk bestuurde (en relatief jonge) talen als Rust of Swift.
Sigasi uitbreiding voor Visual Studio Code
Sigasi kondigt de release aan van de VS Code Extension met uitgebreide ondersteuning voor SystemVerilog, Verilog en VHDL. Onze uitbreiding biedt functies en taalondersteuning zoals codenavigatie, projectbeheer, linting, codeopmaak, tooltips, outline, autocomplete, hover en nog veel meer!
''Still, I think right now is a very important time for C++ to consider its position in the systems programming universe; it can’t ignore the signals any longer.''
Is de technische schuld van de C++ taal echt zo gigantisch dat het bijna onmogelijk is om nieuwe krachtige functies toe te voegen? Eenmansleger Sean Baxter van de Circle C++ compiler heeft aangetoond dat dit niet zo is. Alleen al in de afgelopen maanden heeft hij in zijn eentje aangetoond dat het mogelijk is om aanzienlijke functies toe te voegen, zoals een echt somtype en tuples op taalniveau. Toegegeven, een implementatie in een enkele compiler van een C++ dialect zonder een grondig herzien voorstel is verre van een officiële C++ taalfunctie, maar het laat in ieder geval zien hoeveel speelruimte en mogelijkheden er zijn in de syntaxis en de taal als geheel – als we er echt onze zinnen op zetten. Het laat ook zien dat de last van de technische schuld alleen niet de beperkende factor is in de taalontwikkeling.
Het bestuursmodel van C++ zal waarschijnlijk niet snel veranderen, omdat het zo verbonden is met het ISO-proces en de belanghebbenden van de commissie. Toch denk ik dat dit een zeer belangrijk moment is voor de taal om na te denken over haar positie in het universum van systeemprogrammering; ze kan de signalen niet langer negeren. Misschien zal een slankere bestuursstructuur helpen, of het toestaan van brekende veranderingen om de technische schuld in een toekomstige versie weg te werken – wie weet. Helaas zullen dergelijke substantiële wijzigingen in het proces waarschijnlijk ook jaren duren.
Afwachten
Zullen de nadelen ertoe leiden dat C++ binnenkort wordt afgeschaft? Nee, zeker niet. Het momentum van de bestaande code en gebruikers is overweldigend. ‘Gewoon’ overstappen naar een andere taal is niet voor iedereen een optie, zelfs niet voor Google. Daarvoor is echte interoperabiliteit met C++ (niet alleen C) nodig, en daar schieten alternatieven als Rust en Swift nog tekort. Niet voor niets adverteert Google met C++ interoperabiliteit als een belangrijk kenmerk van Carbon, waardoor het mogelijk wordt om de taal stap voor stap over te nemen vanuit een grote bestaande C++ codebase.
Op dit moment is Carbon echter niet veel meer dan een ruwe specificatie en een aankondiging. We zullen moeten afwachten of het aan de verwachtingen kan voldoen. In de tussentijd zal C++ ook evolueren, hopelijk positief geïnspireerd door de mogelijkheden van Circle en andere talen op dit gebied.