Carbon - "to C++ what Kotlin is to Java"
Snubblade över ett nytt programspråk från Google tidigare idag. Frågan som infann sig direkt var: ännu ett språk, vad är poängen här? Startade rejält skeptisk, men ju mer jag kikade på språket och framförallt vilket problem man försöker lösa ju mer gick det mot att "det kanske finns en relevant poäng ändå"!
C++ används fortfarande väldigt mycket, det är det klart vanligaste programspråket så fort prestanda är ett top-prioritet.
Ett stort problem med C++ är att språket ("by design" då vissa definerande egenskaper hos C++ inte vore praktiskt möjligt annars) saknar en väldefinierad ABI. Därför väldigt svårt att på en helt generellt sätt interagera med C++ från andra miljöer, framförallt om templets och liknande är del av gränssnittet.
Varför?
En av grundpelarna i Carbon är detta
"Seamless, bidirectional interoperability with C++, such that a library anywhere in an existing C++ stack can adopt Carbon without porting the rest."
Det är väldigt mycket hur Kotlin förhåller sig till Java. Även om Rust (som Carbon tagit väldigt mycket inspiration från sett till syntax) är "C++ done right" är problemet med Rust att man kan (och bör) använda det språket över C++ om man startar från scratch. Men värdet i C++ är att så mycket är redan skrivet i C++ och finns inget bra sätt att egentligen anropa till C++ kod från andra språk (förutom Carbon då).
Så Rust är skitbra om man börjar på något nytt och i den bästa av världar skulle t.ex. spelmotorer skrivas om i Rust för att få fördelarna med samma prestanda som C++, men långt bättre säkerhet och fantastiskt stöd för att skriva korrekt kod som använder flera trådar. Men "ingen" kommer skriva om gigantiska kodbaser som spelmotorer, MS Office och de massiva mängder C++ kod som finns inom Google, Microsoft och liknande företag.
Även om man försöker göra C++ till ett bättre språk med tiden, kommer en uppdateringen till standarden vart 3:e år senaste är C++20 och nästa blir C++23 (rätt uppenbart att man i många lägen sneglar på saker Rust fått till "helt rätt"), så har man hela tiden problemet att nya finesser måste implementeras med begränsningen att "all existerande C++ kod måste fortsätta fungera". Det begränsar en hel del vad som är möjligt + ett redan stort och komplext språk blir än större och komplexare ju mer saker som läggs till vilket bl.a. ger problemet att olika personer tenderar använda olika delar som i sin tur ställer till det i större kodbaser (ett annat populärt språk som också har uppenbar växtvärk på liknande sätt är C#).
En stor fördel med Kotlin är att man kan enkelt börja använda det för en delmängd av ett större Java-projekt då det är kompatibelt i båda riktningarna. Rust och C++ kan i praktiken bara interagera med varandra genom att gå via C (båda har explicit kompatibilitet med C, i stort sätt alla programspråk har någon form av kompatibilitet med C).
Carbon gör för C++ vad Kotlin gör för Java, man kan designa ett modernt språk som kan starta med ett blankt papper.
Det skrivet: det kommer nya programspråk hela tiden, de flesta kommer aldrig få någon större spridning. Carbon har en ganska smal nisch mellan "gå till senaste C++ versionen och gör det bästa av situationen" och "vi startar relativt fräscht så Rust är fullt rimligt", och det i nischen: prestanda är superkritiskt så endast C, C++ eller Rust fungerar.
C++ fortsätter att vara populärt, inte för att det längre kan anses vara ett jättebra språk, utan för att det finns en hyfsat stor klass av problem där C++ i praktiken är det enda praktiskt användbara alternativet.
Fråga
Någon som tror Carbon har någon chans?
Skulle vara kul om det tog fart för t.ex. spelutveckling, men finns problem i Unreal Engine 4/5 då de utökat C++ på lite egna sätt med sin meta-kompilator...
Personligen tror jag detta är DoA, men hoppas ha fel på den punkten då C++ börjar bli löjligt komplext men är ändå nödvändigt om man jobbar med prestandakritisk programvara!
Referenser
För de som vill läsa mer
https://thenewstack.io/google-launches-carbon-an-experimental...
https://9to5google.com/2022/07/19/carbon-programming-language...
Video av designen av språket Odin som går igenom specifikationen av Carbon. Är en bra genomgång i videoformat (av någon som uppenbarligen gillar sitt eget språk mer, vilket är naturligt), men hade mycket hellre sett motsvarande med jämförelse mot Rust istället för Odin (har aldrig använt Odin, har använt Rust både privat och professionellt)
Och är finns beskrivning av syntax av de grundläggande byggstenarna
https://github.com/carbon-language/carbon-lang/tree/trunk/doc...
Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer