Carbon is not a programming language (sort of)
23 comments
·February 8, 2025Mond_
piebro
Thanks for the post, I enjoyed reading it.
There is a small typo in this sentence: "As long as we’re willing to say that Carbon is is about reducing the reliance on the C++ Standard Committee ...". There are two "is".
PaulDavisThe1st
It's a hangover from the ill-fated Clinton programming language, where you repeat an operator (such as "is") to ensure there is no ambiguity about what your intention is.
kayvr
FWIW, I thought the bits on governance and history provided much needed context. Great post.
Mond_
Thanks a lot! When writing something like this it can be hard to keep in mind what your average reader is familiar with.
"Do I need to get into the history and the structural process of the C++ Standard Committee? I'm sure everyone already knows about that, right?"
atribecalledqst
Have to say, it bothers me a little bit that they named it Carbon. I associate that term strongly with the old Carbon API from Apple.
Carbon was officially removed with 10.15 Catalina in 2019 - what's the statute of limitations on reusing a name like this?
mrkpdl
I feel the same, especially given how significant Carbon was to the revitalisation of Apple. Without carbon they likely would have lost several key developers in the Mac OS X transition, which all of their later success stems from.
Mond_
Meh. There's only so many good names out there. When there's little risk of confusion it's usually fine.
When something has been deprecated (like Carbon API which I didn't even know about) then it's imo completely fair game.
rednafi
I haven’t written C++ since I graduated and hopefully won’t have to, but this looks really good.
While I love Go, I feel like languages like Go and Rust didn’t become C++ killers because they expected everyone to jump on the bandwagon and abandon all their legacy code. That didn’t happen.
This approach of keeping the interop intact might just work.
sapiogram
> I feel like languages like Go and Rust didn’t become C++ killers because they expected everyone to jump on the bandwagon and abandon all their legacy code
What gave you that impression? I'd say approximately 0 people from the Go community and at most 2 people from Rust expected that.
npalli
>> I'd say approximately 0 people from the Go community
Quite literally that's what Rob Pike (golang co-creator) thought was going to happen
https://commandcenter.blogspot.com/2012/06/less-is-exponenti...
I was asked a few weeks ago, "What was the biggest surprise you encountered rolling out Go?" I knew the answer instantly: Although we expected C++ programmers to see Go as an alternative, instead most Go programmers come from languages like Python and Ruby. Very few come from C++.
o11c
It really shouldn't be a surprise given that it took until 2022 to implement one of the basic features that everybody relies on constantly.
sapiogram
The person I responded to said that "they expected everyone to jump on the bandwagon and abandon all their legacy code".
That's not even close to what Rob Pike wrote on his blog.
treyd
Go isn't a C++ killer because there's very many usecases that C++ is commonly used for where having a runtime with a GC are absolute nonstarters. Other downsides it has is somewhat janky and slow FFI to C, limited control over how/when data structures are copied, and green threading making granular control over processes, forking, shared memory, etc harder. These are all common things that are expected in systems programing and ever presenting it as one is dishonest.
Rust doesn't suffer from any of those issues and had a feature set comparable to that of C++ from before even 1.0, so there is actually a tenable argument that it could be a C++ killer. That didn't quite manifest because there isn't a strong reason to rewrite existing large C++ codebases, but most kinds of new projects that would have been written in C++ in like 2010 have increasingly been done in Rust instead.
adrian_b
I have no idea whether Carbon will be successful, but this is the only right way of evolving a programming language when incompatible changes must be made: by providing tools that guarantee a completely automatic migration of the legacy programs.
Hopefully Carbon will succeed to achieve this goal.
Tijdreiziger
From the article:
> The goal is a tool-assisted migration of idiomatic code, not a fully automated migration of all code.
adrian_b
That is just an acknowledgment of the fact that for something as complex as C++ a fully automated migration is unlikely to be achievable.
This does not mean that they will intentionally avoid to make possible a fully automated migration.
Normally the migration tools should be designed to attempt to do a fully automated migration, but whenever there are corner cases for which the effort to handle them completely automatically would not be worthwhile, then human intervention shall be required.
DashAnimal
As someone who uses C++ daily, very excited for Carbon. I really align with the goals they have set. Its a shame communities like r/cpp block any discussion of successor languages but I hope once this language starts gaining more momentum and nearing release, it will begin to market itself and get more attention.
Mond_
There is a post on r/cpp: https://www.reddit.com/r/cpp/comments/1ikq8kh/carbon_is_not_...
For now, anyway. Let's see how long it survives. (+1 to being excited for Carbon. That shouldn't be a surprise though, considering I wrote this article.)
bena
It depends on the aim of the community. If it is to discuss the language, advancements, tips, etc. Then restricting talk of other languages makes sense. Otherwise the subreddit can become just talk of replacement languages.
hatwd
Interesting language - its syntax looks like a mix of Rust and Go, with a few of its own idiosyncrasies to distinguish it from those languages.
> Carbon is a concentrated experimental effort to develop tooling that will facilitate automated large-scale long-term migrations of existing C++ code to a modern, well-annotated programming language with a modern, transparent process of evolution and governance model.
This is probably where Go and Rust fail to be C/C++ "successor" languages, as interop between those languages doesn't seem to be as seamless as Carbon aims to be.
Will keep an eye on its development!
noelwelsh
What I've seen of Carbon looks really good. I feel they're trying to do something that is hugely ambitious, and so perhaps unlikely to succeed, but I love the vision.
As I don't have a massive C++ codebase I have no stake in Carbon's success, but I think language improvements are some of the most significant steps we, as an industry can take (language improvements are basically the only way we can rule out entire classes of bugs) and I want our industry to improve.
Oh hey, that's my post.
HI HACKER NEWS! Excited to see you!!! Ping me if you find typos.
(Also jeez, writing this took way too long and I spent too much time editing it trying to cram everything from Cpp2, the Google governance issue, member access operators as a case study, some historical bits, etc. into the post.)
EDIT: One of the most interesting things for me is that (so far) no one complained about the lack of Carbon code examples.