Waarom C++ nog steeds beter is dan Rust in het AI tijdperk

Waarom C++ nog steeds beter is dan Rust in het AI tijdperk

Waarom C++ nog steeds beter is dan Rust in het AI tijdperk

Invoering

Argumenten over programmeertalen worden vaak moreel theater, lang voordat ze technisch worden. De ene taal wordt omschreven als schoon, de andere als belast. De een wordt voorgesteld als de toekomst, de ander als bagage uit het verleden. Deze verhalen zijn emotioneel bevredigend omdat ze ervoor zorgen dat de geschiedenis netjes aanvoelt. Ze misleiden ook teams die systemen moeten leveren onder deadlines, budgetten, integratiebeperkingen en nu een extra kracht die tien jaar geleden niet op dezelfde manier bestond: AI codeerassistenten en agenten.

Zodra het genereren van code onderdeel wordt van de dagelijkse levering, verandert de vraag. Het is niet langer alleen maar 'Welke taal is elegant?' of "Welke taal is standaard veilig?" De moeilijkere en meer praktische vraag wordt deze: als een team verwacht dat AI-systemen zullen helpen bij het schrijven, refactoren, benchmarken, integreren en debuggen van productiecode, welke taal geeft deze systemen momenteel de rijkste omgeving waarin ze bruikbaar kunnen zijn? Mijn antwoord blijft C++, en de kern van het betoog is noch nostalgie, noch machismo. Het is dichtheid.

C++ bevindt zich nog steeds in een dichtere wereld van publieke code, geïmplementeerde infrastructuur, tooling van leveranciers, platformvoorbeelden, optimalisatiefolklore en echte productielittekens dan Rust. AI modellen leren van die dichtheid. Ze leren syntaxis, hoe mensen grote systemen aan elkaar hebben genaaid, hoe bouwbestanden zijn geëvolueerd, hoe lelijke integraties zijn gemaakt om te werken, hoe bugs op laag niveau zijn gediagnosticeerd en hoe prestatiegevoelige code eigenlijk uit woede is geschreven in plaats van uit theorie. Wanneer die modellen later worden gevraagd om te helpen bij echte engineering, is de vorm van dat historische geheugen van belang.

Dit betekent niet dat Rust zwak, niet serieus of irrelevant is. Integendeel, Rust heeft een gezonde druk uitgeoefend op de systeemprogrammering. Het maakte geheugenveiligheid onmogelijk om te negeren, verbeterde de toon van veel technische gesprekken en produceerde werkelijk krachtige tools en bibliotheken. Maar het bestaan ​​van de sterke punten van Rust doet niet automatisch de huidige voordelen van C++ op het gebied van door AI ondersteunde levering teniet. Volwassen techniek vereist vaak het vasthouden aan beide waarheden tegelijk.

Eerst bewijs, later slogans

Een zorgvuldig betoog begint met het scheiden van wat publiekelijk kan worden waargenomen en wat moet worden afgeleid. Openbare datasets die worden gebruikt in codemodelonderzoek, zoals The Stack, laten substantieel meer C++ zien dan Rust. Uit onderzoeken onder publieke ontwikkelaars en GitHub-taaltrends blijkt nog steeds een breder absoluut gebruik van C++ in de hele sector. De publieke AI-infrastructuur, van leverancier SDKs tot geoptimaliseerde inferentieruntimes tot wiskundebibliotheken op laag niveau, legt nog steeds een wereld bloot die diep C- en C++-vormig is. Publieke benchmarking-inspanningen zoals CRUST-Bench suggereren ook dat de huidige modellen nog steeds moeite hebben om op consistente wijze veilige, idiomatische Rust te genereren in de sterke zin die Rust-gemeenschappen waarderen.

Uit deze feiten trekken we een gevolgtrekking, geen dogma. De gevolgtrekking is dat AI-systemen momenteel in veel systeemdomeinen waarschijnlijk productie-nuttige, integreerbare en optimaliseerbare C++ genereren, omdat de omringende omgeving voor C++ rijker is. Dit is geen magie. Het is exposure gecombineerd met feedback. Een taal met meer repository's, meer build-scripts, meer hardwaregerichte voorbeelden, meer leveranciersintegraties, meer openbare bugfixes, meer prestatieonderzoeken en meer productieoorlogsverhalen biedt een model meer manieren om ongeveer gelijk te hebben voordat een menselijke ingenieur het zelfs maar begint te corrigeren.

Dit punt wordt vaak tegengesproken omdat het niet genereus klinkt tegenover het nieuwere taalgebruik. Maar het is geen belediging voor Rust om te zeggen dat het minder tijd heeft gehad om publieke technische sedimenten te verzamelen. C++ is al tientallen jaren ingebed in besturingssystemen, browsers, databases, mediastacks, beveiligingstools, game-engines, telecom, wetenschappelijk computergebruik, ingebedde producten en financiële systemen. Rust is snel en bewonderenswaardig gegroeid, maar groei is niet hetzelfde als geologische diepte. AI modellen absorberen diepte.

Waarom corpusgrootte belangrijker is dan mensen toegeven

Ingenieurs behandelen de hoeveelheid trainingsgegevens soms alsof het een grof gespreksonderwerp is. In de praktijk is het op een veel menselijkere manier van belang. Een AI-agent die in een productiecodebase werkt, bedenkt meestal geen perfect algoritme op basis van de eerste principes. Het doet iets slordigers. Het kan gaan om het updaten van een CMake-bestand, het aanpassen aan een compiler-klacht op één platform, het vervangen van een hot-path container, het inpakken van een leverancier API, het converteren van afbeeldings- of tensor-lay-outs, het oplossen van een ABI-mismatch, of het iets minder pijnlijk maken van een oud native subsysteem zonder alles eromheen kapot te maken.

Deze taken belonen bekendheid met gewone, onvolmaakte, geleefde code. De agent profiteert van het zien van duidelijke schoolvoorbeelden en duizenden echte pogingen om aangrenzende problemen op te lossen. C++ biedt modellen veel meer van dat materiaal. Er is modernere C++, meer verouderde C++ die langzaam wordt gerepareerd, meer benchmarkgestuurde C++, meer gênante C++ die op de een of andere manier nog steeds belangrijke bedrijven runt, en meer voorbeelden van mensen die precies het soort compromissen navigeren waar echte systemen om vragen.

Dit is de reden waarom ‘rommelige productie C++’ nog steeds waardevolle trainingsgegevens zijn. Sommige ingenieurs horen die zin en stellen zich voor dat dit de zaak verzwakt. In werkelijkheid versterkt het het. Productiesystemen bestaan ​​niet uitsluitend uit elegante greenfield-modules. Ze omvatten verouderde interfaces, vreemde ABI aannames, platformvoorwaarden, hardware-eigenaardigheden, gedeeltelijke migraties en code die overleefde omdat hij nuttig was voordat hij mooi werd. Als een AI systeem in C++ veel meer voorbeelden van dat landschap heeft gezien, is het simpelweg beter voorbereid om in zo’n landschap te helpen.

Het is de moeite waard om openlijk een tegenvoorbeeld te geven. Als een team een ​​kleine greenfield-service bouwt met een sterke Rust expertise, duidelijke veiligheidseisen, bescheiden integratiebehoeften en geen zwaar inheems ecosysteem eromheen, kan Rust een betere lokale keuze zijn. In die situatie is het argument van de corpusgrootte minder doorslaggevend omdat de omringende technische context eenvoudiger is en het menselijke team het systeem binnen een smallere band van complexiteit kan houden. Het punt is niet dat C++ elk argument wint. Het punt is dat naarmate het probleem ouder, vreemder, prestatiegevoeliger en meer verstrikt raakt in de bestaande eigen infrastructuur, C++ in toenemende mate de gemakkelijkere taal wordt voor AI systemen om effectief mee te helpen.

De AI infrastructuurwereld heeft nog steeds een C++ vorm

Zelfs als we het volume aan trainingsgegevens volledig zouden negeren, zou er nog steeds een tweede kracht zijn die de standaard richting C++ trekt: de infrastructuur onder moderne AI-producten blijft sterk native. CUDA, geoptimaliseerde wiskundebibliotheken, ONNX Runtime internals, oneDNN, OpenVINO, tokenizer-implementaties, multimedia-voorverwerkingspijplijnen, model-serving accelerators, hardwareleverancier SDKs, en veel implementatieruntimes zijn geschreven in C of C++ of tonen daar hun meest serieuze interfaces. Dit betekent niet dat Rust geen beroep op hen kan doen. Het betekent dat het kortste pad door het landschap meestal nog steeds een C- of C++-pad is.

Dat is van belang omdat AI codeermiddelen niet bruikbaar zijn in een vacuüm. Ze zijn nuttig in afhankelijkheidsgrafieken. Een model dat wordt gevraagd om te helpen bij het integreren van een runtime, het debuggen van een build, het afstemmen van een hot path of het redeneren over eigendom over de SDK-grens van een leverancier heen, heeft het voordeel als het veel aangrenzende voorbeelden in dezelfde taalfamilie heeft gezien. C++ profiteert nog steeds meer van die bekendheid met de omgeving dan Rust bij de meeste prestatiekritieke AI infrastructuurwerkzaamheden.

Dit is ook waar het gesprek over feedbackloops belangrijk wordt. Door AI gegenereerde code wordt pas echt waardevol als mensen deze snel kunnen verifiëren. C++ biedt teams vaak rijkere lokale verificatie in deze domeinen omdat het ecosysteem rond benchmarking, profilering, herhaling, ontsmettingsmiddelen, hardwaretellers en laag-niveau-diagnostiek zo volwassen is. Wanneer een agent een wijziging voorstelt in een C++ gevolgtrekkingspad, kan een team dit vaak compileren, profileren, het toewijzingsgedrag inspecteren, latentieverdelingen vergelijken en snel itereren. Rust beschikt absoluut ook over sterke tools, maar in veel AI-aangrenzende native systemen maakt de gecombineerde dichtheid van bibliotheken, voorbeelden, profilers en bestaande praktijken C++ nog steeds de gemakkelijkere plek om strakke 'human-in-the-loop'-correctielussen uit te voeren.

Waarom teams vaak sneller handelen met C++, zelfs als Rust er overzichtelijker uitziet

Dit is het punt dat de ideologie neigt te beledigen, omdat het onbeleefd klinkt in de zin van reinheid. Rust ziet er vaak netter uit op het whiteboard. Eigendom is expliciet. De compiler bewaakt belangrijke fouten. De cultuur rond correctheid is bewonderenswaardig. Maar productiesnelheid is niet identiek aan taalelegantie. De werkelijke leveringssnelheid komt voort uit de hele cyclus: bestaande codebase, beschikbare bibliotheken, talentenpool, debugging-tools, implementatiebeperkingen, AI kwaliteit van de ondersteuning en de kosten van nog een wijziging volgende maand.

C++ wint momenteel die bredere lus in veel systemen uit het AI-tijdperk, omdat teams meer van de omringende wereld kunnen vragen zonder de taal te verlaten. Ze kunnen oude native bibliotheken integreren, profilers toevoegen die zijn gebouwd met native prestatiewerk in gedachten, allocators afstemmen, platformspecifieke faciliteiten exploiteren en putten uit een veel grotere hoeveelheid openbare voorbeelden als er iets misgaat. AI assistenten profiteren van precies dezelfde realiteit. Wanneer de wereld rondom het model compact en goed bereisd is, verbeteren de ruwe ontwerpen van het model sneller.

Stel je voor dat twee teams een latentiegevoelige inferentieservice bouwen met wat aangepaste voorverwerking, een ingewikkelde implementatiematrix en de behoefte aan herhaalde afstemming van de prestaties. Het Rust-team kan een kleinere reeks geheugenveiligheidsbugs produceren, en dat is niet triviaal. Maar als het C++-team het ecosysteem directer kan integreren, sterkere AI-suggesties kan krijgen in de daadwerkelijke codebase die ze hebben, en prestatieveranderingen sneller kan verifiëren met volwassen native tooling, kan het algehele resultaat nog steeds in het voordeel zijn van C++. In zakelijke termen is dat belangrijker dan de vraag of één taal online een filosofisch betoog heeft gewonnen.

Een nuttig tegenvoorbeeld houdt ons eerlijk. Wanneer geheugenveiligheid in een nieuwe dienst met relatief eenvoudige afhankelijkheden het dominante risico is, kan Rust absoluut betere organisatorische resultaten opleveren. De fout is om die waarheid te nemen en deze zonder onderscheid te exporteren naar elk AI-aangrenzend systeemprobleem. Talen winnen in contexten, niet in preken.

Wat Rust nog steeds goed gaat

Rust verdient respect, en het argument voor C++ is zwakker als het een karikatuur is van Rust. Rust is uitstekend in het zichtbaar maken van onveilige aannames. Het creëert een sterke discipline rond eigendom en levens. Het is vaak een overtuigende keuze voor een greenfield-infrastructuur waarbij correctheid en onderhoudbaarheid domineren boven compatibiliteit met een bestaande inheemse wereld. In sommige teams verbetert Rust ook de duidelijkheid over de werving, omdat de codebase zelf een bepaald soort technische ernst afdwingt.

Het is ook belangrijk om duidelijk te zeggen dat leeftijd alleen niet voldoende is. Ongedisciplineerd C++ blijft gevaarlijk. Als een team een ​​zwakke beoordelingscultuur heeft, geen profileringsgewoonte, slechte tests en geen respect voor waarneembaarheid, dan zullen grotere corpora en rijkere tools het niet redden. AI systemen kunnen die chaos net zo gemakkelijk vergroten als ze goede engineering kunnen versnellen. De echte claim is beperkter en praktischer: gegeven gedisciplineerde teams die prestatiegevoelige, integratiezware systeemproblemen uit het AI-tijdperk oplossen, is C++ vandaag de dag nog steeds de sterkste standaardinzet omdat agenten, tools en de zwaartekracht van het ecosysteem deze allemaal versterken.

Dit is de reden waarom ik de voorkeur geef aan de zinsnede standaardinzet in plaats van universele winnaar. Een standaardweddenschap is wat u kiest als de bewijslast nog niet naar elders is verschoven. Rust kan die dienst verdienen in specifieke projecten. Maar C++ begint nog steeds met meer bewijs in zijn voordeel wanneer het werk diep verweven is met de eigen AI infrastructuur, prestaties op laag niveau, langlevende productiesystemen of het soort codebase dat AI agenten in grote publieke hoeveelheden hebben gezien.

Een praktische manier om te beslissen

Als het hot path native is, de afhankelijkheidsgrafiek native is, het profileringsverhaal ertoe doet, en je verwacht dat AI assistenten helpen bij rommelige echte productiecode, verdient C++ het om je eerste serieuze taaldiscussie te zijn. Als het systeem een ​​greenfield-systeem is, de veiligheidssituatie domineert, het omliggende ecosysteem al Rust-vormig is en het probleem niet sterk afhankelijk is van oude inheemse lagen, wordt Rust aantrekkelijker. Als het systeem beide werelden bevat, wat velen doen, is het volwassen antwoord vaak hybride architectuur in plaats van tribale zuiverheid.

Dit raamwerk kalmeert het gesprek omdat het de beslissing om te werken teruggeeft in plaats van identiteit. Een native inference runtime binnen een bestaand C++ platform is niet hetzelfde probleem als een nieuwe control-plane service. Een mediapijplijn met lage latentie is niet hetzelfde probleem als een backend API. Een model-serving edge-component is niet hetzelfde probleem als een keten-native state-transition engine. Zodra we het eigenlijke werk een naam geven, ziet de taalkeuze er doorgaans minder ideologisch en meer voor de hand liggend uit.

Er zit ook een menselijk voordeel aan het op deze manier nemen van de beslissing. Teams worden coöperatiever als ze niet langer vragen welke taal bewondering verdient, maar beginnen te vragen welke taal het huidige systeem de beste kans geeft om betrouwbaar, begrijpelijk en voor verbetering vatbaar te worden. AI hulp maakt dit nog belangrijker. Agenten zijn krachtig als ze zijn ingebed in een cultuur van verificatie, niet als ze worden gebruikt om taalfandom met synthetisch vertrouwen te versieren.

De echte kans

De diepere mogelijkheid in het AI-tijdperk is dat agenten nu kunnen deelnemen aan de hele feedbackloop rond volwassen systemen: oude code lezen, bewerkingen voorstellen, benchmarks verbeteren, profiler-aanwijzingen naar boven halen, ruwe ideeën vertalen in compileerbare experimenten en ingenieurs helpen om sneller dan voorheen van vermoeden naar meten te gaan. In die wereld is de taal die er het meeste baat bij heeft niet noodzakelijkerwijs degene met het mooiste theoretische verhaal. Het is degene met het dikste web van publieke, praktische, beproefde realiteit.

Tegenwoordig is die taal voor een grote groep ernstige systeemproblemen nog steeds C++. Dat is goed nieuws, omdat teams gebruik kunnen maken van de enorme hoeveelheid bestaande kennis en tegelijkertijd kunnen blijven leren van Rust. De meest productieve houding is niet triomfalisme. Het is dankbaarheid. C++ heeft tientallen jaren echt technisch geheugen verzameld, en AI-systemen maken dat geheugen nu gemakkelijker te gebruiken. Verstandige teams zullen hiervan profiteren.

Hands-On Lab: bouw en verbeter een native scoringspijplijn

Als een artikel over de taalkeuze uit het AI-tijdperk geen code bevat, bestaat het risico dat het een preek wordt.

Laten we dus een klein native C++ hulpprogramma bouwen, van het soort dat AI agenten in echte bedrijven voortdurend wordt gevraagd te verbeteren: een pijplijn voor het scoren van tekst die gegevens laadt, eenvoudige functies berekent, de resultaten sorteert en de bovenste rijen afdrukt.

Het is met opzet bescheiden. De meeste productie-engineering is bescheiden.

main.cpp

#include <algorithm>
#include <chrono>
#include <cctype>
#include <fstream>
#include <iostream>
#include <string>
#include <string_view>
#include <vector>

struct Sample {
    std::string text;
    double score = 0.0;
};

static int count_digits(std::string_view s) {
    int n = 0;
    for (unsigned char c : s) {
        n += std::isdigit(c) ? 1 : 0;
    }
    return n;
}

static int count_upper(std::string_view s) {
    int n = 0;
    for (unsigned char c : s) {
        n += std::isupper(c) ? 1 : 0;
    }
    return n;
}

static int count_punct(std::string_view s) {
    int n = 0;
    for (unsigned char c : s) {
        n += std::ispunct(c) ? 1 : 0;
    }
    return n;
}

static double score_line(std::string_view s) {
    const auto len = static_cast<double>(s.size());
    const auto digits = static_cast<double>(count_digits(s));
    const auto upper = static_cast<double>(count_upper(s));
    const auto punct = static_cast<double>(count_punct(s));
    return len * 0.03 + digits * 0.7 + upper * 0.15 - punct * 0.05;
}

int main(int argc, char** argv) {
    if (argc < 2) {
        std::cerr << "usage: scorer <input-file>\n";
        return 1;
    }

    std::ifstream in(argv[1]);
    if (!in) {
        std::cerr << "cannot open input file\n";
        return 1;
    }

    std::vector<Sample> rows;
    rows.reserve(200000);

    std::string line;
    while (std::getline(in, line)) {
        rows.push_back({line, 0.0});
    }

    const auto t0 = std::chrono::steady_clock::now();
    for (auto& row : rows) {
        row.score = score_line(row.text);
    }
    std::sort(rows.begin(), rows.end(), [](const Sample& a, const Sample& b) {
        return a.score > b.score;
    });
    const auto t1 = std::chrono::steady_clock::now();

    const auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(t1 - t0).count();
    std::cout << "processed " << rows.size() << " rows in " << ms << " ms\n";

    const size_t limit = std::min<size_t>(5, rows.size());
    for (size_t i = 0; i < limit; ++i) {
        std::cout << rows[i].score << " | " << rows[i].text << "\n";
    }
}

Bouwen

Op Linux of macOS:

g++ -O2 -std=c++20 -o scorer main.cpp
./scorer sample.txt

Op Windows met MSVC:

cl /O2 /std:c++20 main.cpp
.\main.exe sample.txt

Waarom dit kleine programma nuttig is

Omdat het precies het soort code is waarin AI-ondersteunde engineering tastbaar wordt:

  • het is inheems
  • het raakt snaren en geheugen
  • het heeft een meetbare looptijd
  • het kan worden geprofileerd
  • het kan stapsgewijs worden verbeterd

Dat is tegenwoordig de echte habitat van veel C++-agenten: gewone native programma's die beter moeten worden zonder opnieuw uitgevonden te worden.

Testtaken voor liefhebbers

Als je van het artikel een praktische oefening wilt maken, probeer dan deze:

  1. Vraag uw favoriete codeeragent om het programma te optimaliseren zonder de uitvoer te wijzigen. Controleer of het dubbele passen of onnodige tijdelijke contracten vermindert.
  2. Voeg afzonderlijke timing toe voor het laden, scoren en sorteren van bestanden. Controleer waar de tijd werkelijk naartoe gaat.
  3. Vervang de invoer door een miljoen regels en vergelijk de kwaliteit van de optimalisaties die door verschillende agenten worden voorgesteld.
  4. Port het hulpprogramma naar Rust en vergelijk de ervaring eerlijk: wat voelde duidelijker, wat voelde zwaarder, en welke omringende gereedschappen volwassener aanvoelden voor deze exacte taak.
  5. Voer de C++-versie uit onder een profiler en noteer of uw eerste gok over de hotspot daadwerkelijk juist was.

Dit is een kleine oefening, maar juist daarom nuttig. De meeste technische debatten worden waarheidsgetrouwer als ze gedwongen worden het contact met een klein, echt programma te overleven.

Samenvatting

Rust verdient het respect dat het ontvangt. Het verhoogde de standaard voor veiligheidsgesprekken en gaf systeemprogrammering een gezondere reeks standaardinstellingen. Maar het AI-tijdperk beloont niet alleen wanbetalingen. Het beloont de taal die centraal staat in het grootste levende corpus van echte code, het diepste ecosysteem van integraties op laag niveau, de rijkste optimalisatiecultuur en de snelste praktische lus van gegenereerd concept naar meetbaar productieresultaat. Tegenwoordig beschrijft dat nog steeds C++ sterker dan Rust.

Dat maakt C++ niet moreel superieur, en het maakt Rust niet irrelevant. Het betekent eenvoudigweg dat, voor veel ernstige systeemproblemen, AI agenten nog steeds meer bruikbare grond onder hun voeten hebben als de doelwereld C++ is. Teams die dit begrijpen, kunnen betere beslissingen nemen zonder drama. Ze kunnen leren van Rust waar Rust het sterkst is, en toch het immense verzamelde geheugen van C++ gebruiken waar dat geheugen economisch het meest waardevol is.

Referenties

  1. GitHub oktober 2024: https://github.blog/news-insights/octoverse/octoverse-2024/
  2. GitHub oktober 2025: https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/
  3. Stack Overflow-ontwikkelaarsenquête 2023: https://survey.stackoverflow.co/2023
  4. Stack Overflow Developer Survey 2025 Technologiesectie: https://survey.stackoverflow.co/2025/technology/
  5. De Stack-datasetkaart: https://huggingface.co/datasets/bigcode/the-stack
  6. Het stapelpapier: https://arxiv.org/abs/2211.15533
  7. ICLR 2025-paper over de impact van codegegevens in pre-training: https://openreview.net/pdf?id=zSfeN1uAcx
  8. CRUST-Bench: een uitgebreide benchmark voor C-to-safe-Rust Transpilatie: https://arxiv.org/abs/2504.15254
  9. CUDA C++ Programmeerhandleiding: https://docs.nvidia.com/cuda/cuda-c-programming-guide/
  10. ONNX Runtime C/C++ API: https://onnxruntime.ai/docs/api/c/index.html
  11. PyTorch C++ frontend-documentatie: https://docs.pytorch.org/cppdocs/frontend.html
  12. C++ Kernrichtlijnen: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines

    Hoe dit eruit ziet als het systeem al onder druk staat

C++ versus rust in systemen uit het ai-tijdperk hebben de neiging urgent te worden precies op het moment dat een team hoopte op een rustiger kwartaal. Een functie is al zichtbaar voor klanten, of een platform heeft al interne afhankelijkheid, en het systeem heeft die specifieke week gekozen om te onthullen dat zijn elegante theorie en zijn runtime-gedrag beleefd gescheiden levens hebben geleid. Dit is de reden waarom zoveel serieus technisch werk begint met verzoening. Het team moet wat zij denkt dat het systeem doet, verzoenen met wat het systeem daadwerkelijk doet onder belasting, onder verandering en onder het soort deadlines dat iedereen iets creatiever en iets minder wijzer maakt.

Bij native infrastructuurplanning zijn de gevallen die er het meest toe doen doorgaans grote legacy-platforms, prestatiegevoelige AI backends en moderniseringsprogramma's in gemengde talen. Deze situaties hebben gevolgen op technisch gebied, budget, vertrouwen, routekaart en soms reputatie. Een technisch probleem wordt politiek groter op het moment dat verschillende teams ervan afhankelijk zijn, en niemand kan goed verklaren waarom het zich binnen de muren nog steeds als een wasbeer gedraagt: 's nachts luidruchtig, moeilijk te lokaliseren en duur om te negeren.

Daarom raden wij aan om het probleem te lezen door de lens van de werkdruk en de leveringsrealiteit. Een ontwerp kan theoretisch mooi zijn en operationeel ruïneus. Een ander ontwerp kan bijna saai zijn en toch het product jarenlang vooruit helpen, omdat het meetbaar en repareerbaar is en eerlijk is over de afwegingen. Serieuze ingenieurs leren de voorkeur te geven aan de tweede categorie. Het zorgt voor minder epische toespraken, maar ook voor minder noodretrospectieven waarbij iedereen passief spreekt en niemand zich herinnert wie de kortere weg heeft goedgekeurd.

Praktijken die consequent goed verouderen

De eerste duurzame praktijk is om één representatief pad constant te meten. Teams verzamelen vaak te veel vage telemetrie en te weinig signaal van beslissingskwaliteit. Kies het pad dat er echt toe doet, meet het herhaaldelijk en weiger de discussie te laten afglijden naar decoratieve verhalen. Bij het werk rond C++ versus Rust in systemen uit het AI-tijdperk zijn de bruikbare maatstaven meestal leveringssnelheid, interop-kosten, volwassenheid van de tooling en observatie van de runtime. Zodra deze zichtbaar zijn, worden de overige beslissingen menselijker en minder mystiek.

De tweede duurzame praktijk is het scheiden van bewijs en belofte. Ingenieurs worden vaak onder druk gezet om te zeggen dat een richting de juiste is voordat het systeem die conclusie heeft getrokken. Weersta die druk. Bouw eerst een nauwkeurig bewijs, vooral als het onderwerp dichtbij klanten of geld ligt. Een kleine geverifieerde verbetering heeft meer commerciële waarde dan een grote, niet-geverifieerde ambitie. Dit klinkt voor de hand liggend totdat een kwartaalafsluiting een hypothese in een deadline verandert en de hele organisatie optimisme als een planningsartefact begint te behandelen.

De derde duurzame praktijk is het schrijven van aanbevelingen in de taal van het eigenaarschap. Een paragraaf die zegt 'prestaties verbeteren' of 'grenzen versterken' is emotioneel prettig en operationeel nutteloos. Een paragraaf die zegt wie wat verandert, in welke volgorde, met welke terugdraaivoorwaarde, is degene die maandagochtend daadwerkelijk overleeft. Dit is waar veel technisch schrijven faalt. Het wil meer geavanceerd klinken dan dat het planbaar wil zijn.

Tegenvoorbeelden die tijd besparen

Een van de meest voorkomende tegenvoorbeelden ziet er als volgt uit: het team heeft een groot lokaal succes, gaat ervan uit dat het systeem nu wordt begrepen, en schaalt het idee vervolgens op naar een veel veeleisender omgeving zonder de meetdiscipline te upgraden. Dat is het technische equivalent van leren zwemmen in een hotelzwembad en vervolgens een zelfverzekerde TED-talk houden over het weer op zee. Water is water tot het dat niet meer is.

Een ander tegenvoorbeeld is de gereedschapsinflatie. Een nieuwe profiler, een nieuwe runtime, een nieuw dashboard, een nieuwe agent, een nieuwe automatiseringslaag, een nieuwe wrapper die belooft de oude wrapper te harmoniseren. Geen van deze dingen is inherent slecht. Het probleem is wat er gebeurt als hen wordt gevraagd een grens te compenseren die niemand duidelijk heeft benoemd. Het systeem wordt dan meer geïnstrumenteerd, indrukwekkender en slechts af en toe begrijpelijker. Kopers voelen dit heel snel. Ze formuleren het misschien niet zo, maar ze ruiken wel wanneer een stapel een dure vervanging voor een beslissing is geworden.

Het derde tegenvoorbeeld is dat menselijke beoordeling wordt beschouwd als een mislukking van de automatisering. In echte systemen is menselijke beoordeling vaak de controle die automatisering commercieel aanvaardbaar houdt. Volwassen teams weten waar ze agressief moeten automatiseren en waar ze goedkeuring of interpretatie zichtbaar moeten houden. Onvolwassen teams willen dat de machine alles doet, omdat 'alles' efficiënt klinkt in een slide. Dan doet zich het eerste ernstige incident voor en plotseling wordt handmatige beoordeling herontdekt met de oprechtheid van een conversie-ervaring.

Een bezorgpatroon dat wij aanbevelen

Als het werk goed wordt gedaan, zou het eerste resultaat de stress moeten verminderen door het team een ​​technisch inzicht te geven dat sterk genoeg is om te stoppen met ruzie maken in cirkels. Daarna zou de volgende begrensde implementatie één cruciaal pad moeten verbeteren, en de hertest zou de richting leesbaar moeten maken voor zowel engineering als leiderschap. Die volgorde is belangrijker dan de exacte gereedschapskeuze, omdat deze de technische vaardigheid omzet in voorwaartse beweging.

In praktische termen raden we een beperkte eerste cyclus aan: verzamel artefacten, stel één harde diagnose, verzend één begrensde verandering, test het echte pad opnieuw en schrijf de volgende beslissing in duidelijke taal. Duidelijke taal is belangrijk. Een koper heeft zelden spijt van duidelijkheid. Een koper heeft er vaak spijt van dat hij onder de indruk is voordat de bonnen arriveren.

Dit is ook waar de toon ertoe doet. Sterk technisch werk zou moeten klinken alsof het eerder aan de productie heeft voldaan. Kalm, nauwkeurig en enigszins geamuseerd door de hype in plaats van erdoor gevoed. Die toon draagt ​​een operationeel signaal over. Het laat zien dat het team de oude waarheid van systeemtechniek begrijpt: machines zijn snel, routekaarten zijn kwetsbaar, en vroeg of laat komt de rekening voor elke aanname die poëtisch mocht blijven.

De checklist die we zouden gebruiken voordat we dit klaar noemen

In de inheemse infrastructuurplanning is gereedheid geen stemming. Het is een checklist met consequenties. Voordat we het werk rond C++ versus Rust noemen in systemen uit het AI-tijdperk die klaar zijn voor een bredere uitrol, willen we dat een paar dingen op de best mogelijke manier saai zijn. We willen één pad dat zich voorspelbaar gedraagt ​​onder representatieve belasting. We willen één reeks metingen die zichzelf niet tegenspreekt. We willen dat het team weet waar de grens ligt en wat het zou betekenen om deze te doorbreken. En we willen dat de output van het werk zo duidelijk is dat iemand buiten de implementatieruimte er nog steeds een goede beslissing uit kan nemen.

De checklist die we zouden gebruiken voordat we dit klaar noemen

Dit is ook waar teams ontdekken of ze het echte probleem aan het oplossen waren of alleen maar de competentie in de algemene omgeving oefenden. Een groot aantal technische inspanningen voelt succesvol totdat iemand om herhaalbaarheid, productiebewijs of een beslissing vraagt ​​die van invloed is op het budget. Op dat moment wordt het zwakke werk wazig en wordt het sterke werk vreemd duidelijk. Gewoon is goed. Duidelijk betekent meestal dat het systeem niet langer op charisma vertrouwt.

Hoe wij aanbevelen om over het resultaat te praten

De uiteindelijke uitleg moet kort genoeg zijn om een ​​leiderschapsbijeenkomst te overleven en concreet genoeg om een ​​technische beoordeling te overleven. Dat is moeilijker dan het klinkt. Te technisch taalgebruik verbergt de volgorde. Al te vereenvoudigde taal verbergt risico's. De juiste middenweg is om het pad, het bewijsmateriaal, de begrensde verandering en de volgende aanbevolen stap te beschrijven op een manier die eerder kalm dan triomfantelijk klinkt.

Wij raden een dergelijke structuur aan. Vertel eerst welk pad is geëvalueerd en waarom dit ertoe doet. Ten tweede: zeg wat er verkeerd of onzeker was aan dat pad. Ten derde: zeg wat er is veranderd, gemeten of gevalideerd. Ten vierde: zeg wat onopgelost blijft en wat de volgende investering zou opleveren. Die structuur werkt omdat het zowel het engineering- als het koopgedrag respecteert. Ingenieurs willen details. Kopers willen sequencing. Iedereen wil minder verrassingen, zelfs de mensen die doen alsof ze ervan genieten.

Het verborgen voordeel van deze manier van spreken is van culturele aard. Teams die technisch werk duidelijk uitleggen, voeren het meestal ook duidelijker uit. Ze stoppen met het behandelen van dubbelzinnigheid als verfijning. Ze worden moeilijker te imponeren met jargon en gemakkelijker te vertrouwen met moeilijke systemen. Dat is een van de meer onderschatte vormen van technische volwassenheid.

Wat we nog steeds zouden weigeren te vervalsen

Zelfs nadat het systeem is verbeterd, houden volwassen teams de onzekerheid eerlijk in de eigen infrastructuurplanning. Zwakke metingen hebben duidelijker bewijs nodig, harde grenzen hebben duidelijke taal nodig en rustigere demo's hebben echte operationele paraatheid nodig. Enige onzekerheid moet worden verminderd; sommige moeten eerlijk worden genoemd. Door deze twee banen met elkaar te verwarren, worden respectabele projecten dure gelijkenissen.

Dezelfde regel is van toepassing op beslissingen rond C++ versus Rust in systemen uit het AI-tijdperk. Als het een team nog steeds ontbreekt aan een reproduceerbare benchmark, een betrouwbaar terugdraaipad of een duidelijke eigenaar voor de kritieke interface, dan kan de meest bruikbare uitkomst een scherpere nee of een smallere volgende stap zijn in plaats van een grotere belofte. Die discipline zorgt ervoor dat technisch werk in lijn blijft met de realiteit die het moet verbeteren.

Het geeft een vreemde opluchting om op deze manier te werken. Zodra het systeem niet langer afhankelijk is van optimistische verhalen, wordt het technische gesprek eenvoudiger, zelfs als het werk zwaar blijft. En dat geldt in de productie vaak als een ondergeschikte vorm van gratie.

Veldnotities van een echte technische beoordeling

Bij de levering van C++-systemen wordt het werk serieus wanneer de demo wordt geconfronteerd met echte levering, echte gebruikers en echte bedrijfskosten. Dat is het moment waarop een netjes idee zich als een systeem gaat gedragen, en systemen een beroemd droog gevoel voor humor hebben. Het maakt ze niet uit hoe elegant het aftrapdek eruit zag. Ze geven om grenzen, faalmodi, uitrolpaden en of iemand de volgende stap kan uitleggen zonder een nieuwe mythologie rond de stapel te verzinnen.

Voor Why C++ Still Beats Rust in the AI Era is de praktische vraag of het een sterker leveringstraject creëert voor een koper die al druk heeft op een roadmap, een platform of een beveiligingsbeoordeling. Die koper heeft geen behoefte aan een in mist gepoetste lezing. Ze hebben een technische kennis nodig die ze kunnen gebruiken.

Wat we eerst zouden inspecteren

We zouden beginnen met één representatief pad: native inferentie, profilering, HFT paden, DEX-systemen en C++/Rust moderniseringskeuzes. Dat pad moet smal genoeg zijn om te meten en breed genoeg om de waarheid bloot te leggen. De eerste doorgang moet het toewijzingsgedrag, de p99-latentie, het profielbewijs, de ABI-frictie vastleggen en het vertrouwen vrijgeven. Als deze signalen niet beschikbaar zijn, bestaat het project nog steeds grotendeels uit opinie in een laboratoriumjas, en de opinie heeft een lange geschiedenis waarin zij zichzelf als strategie bestempelt.

Het eerste bruikbare artefact is een systeemeigen systeem dat wordt gelezen met benchmarks, profileringsbewijs en een uitgebreid implementatieplan. Het moet het systeem laten zien zoals het zich gedraagt, en niet zoals iedereen had gehoopt dat het zich zou gedragen tijdens de planningsvergadering. Een trace, een herhaling, een kleine benchmark, een beleidsmatrix, een parser-fixture of een herhaalbare test vertelt het verhaal vaak sneller dan een andere abstracte architectuurdiscussie. Goede artefacten zijn heerlijk onbeleefd. Ze onderbreken het wensdenken.

Een tegenvoorbeeld dat tijd bespaart

De dure fout is om te reageren met een oplossing die groter is dan het eerste bruikbare bewijs. Een team ziet risico's of vertragingen en grijpt onmiddellijk naar een nieuw platform, een herschrijving, een ingrijpende refactor of een inkoopvriendelijk dashboard met een naam die klinkt alsof het yoga is. Soms is die schaal gerechtvaardigd. Heel vaak is het een manier om de meting uit te stellen.

De betere zet is kleiner en scherper. Geef de grens een naam. Verzamel bewijsmateriaal. Verander één belangrijk ding. Test hetzelfde pad opnieuw. Bepaal vervolgens of de volgende investering groter moet zijn. Dit ritme is minder dramatisch dan een transformatieprogramma, maar overleeft vaak het contact met budgetten, releasekalenders en productie-incidenten.

Het bezorgpatroon dat wij aanbevelen

Het meest betrouwbare patroon bestaat uit vier stappen. Verzamel eerst representatieve artefacten. Ten tweede: verander deze artefacten in één harde technische diagnose. Ten derde: verzend één begrensde wijziging of prototype. Ten vierde: test opnieuw met hetzelfde meetkader en documenteer de volgende beslissing in duidelijke taal. In deze klasse van werk zijn CMake-fixtures, profileringsharnassen, kleine native repro's en compiler-/runtime-aantekeningen meestal waardevoller dan een andere bijeenkomst over algemene richting.

Duidelijke taal is belangrijk. Een koper moet de output kunnen lezen en begrijpen wat er is veranderd, wat riskant blijft, wat kan wachten en wat de volgende stap zou opleveren. Als het advies niet kan worden gepland, getest of toegewezen aan een eigenaar, is het nog steeds te decoratief. Decoratief technisch schrijven is prettig, maar productiesystemen staan ​​er niet om bekend dat ze plezier belonen.

Hoe te beoordelen of het resultaat heeft geholpen

Voor Why C++ Still Beats Rust in the AI Era zou het resultaat ten minste een van de volgende drie dingen moeten verbeteren: leveringssnelheid, systeemvertrouwen of commerciële gereedheid. Als het geen van deze verbetert, heeft het team misschien iets geleerd, maar heeft de koper nog geen bruikbaar resultaat ontvangen. Dat onderscheid is van belang. Leren is nobel. Een betaalde betrokkenheid zou ook het systeem in beweging moeten brengen.

Het sterkste resultaat kan een smallere routekaart zijn, een weigering om een ​​gevaarlijk pad te automatiseren, een betere grens rond een model, een schonere native integratie, een gemeten bewijs dat herschrijven nog niet nodig is, of een korte herstellijst die het leiderschap daadwerkelijk kan financieren. Serieuze engineering is een aaneenschakeling van betere beslissingen, geen kostuumwedstrijd om gereedschap.

Hoe SToFU het zou aanpakken

SToFU zou dit in de eerste plaats als een leveringsprobleem behandelen en in de tweede plaats als een technologisch probleem. We zouden de relevante technische diepgang inbrengen, maar we zouden de betrokkenheid verankerd houden in bewijsmateriaal: het pad, de grens, het risico, de meting en de volgende verandering die het waard is om te maken. Het gaat er niet om dat hard werken gemakkelijk klinkt. Het gaat erom de volgende serieuze zet duidelijk genoeg te maken om uit te voeren.

Dat is het onderdeel dat kopers doorgaans het meest waarderen. Ze kunnen overal meningen inhuren. Wat ze nodig hebben is een team dat het systeem kan inspecteren, de echte beperking kan benoemen, het juiste segment kan bouwen of valideren, en artefacten kan achterlaten die de verwarring verminderen nadat het gesprek is beëindigd. In een luidruchtige markt is duidelijkheid geen soft skills. Het is infrastructuur.

Philip P.

Philip P. – CTO

Terug naar Blogs

Contact

Begin het gesprek

Een paar duidelijke lijnen zijn voldoende. Beschrijf het systeem, de druk, de beslissing die wordt geblokkeerd. Of schrijf rechtstreeks naar midgard@stofu.io.

0 / 10000
Geen bestand gekozen