Will Carbon Language Replace C++?
Carbon Language: Google Experimental Successor To C++
If you are into C++, here is a piece of fresh news for you!
Google developers have released a brand-new "experimental" open source language: Carbon Language.
You can read a more extensive article on Medium. Otherwise, find a summary below.
Successor to C++
Carbon Language could serve as a successor language to C++.
One that provides a simple starting point for developers to a newer language that addresses contemporary development concepts like memory safety and generics.
The conditional is a must as the documentation itself says that Carbon is "An experimental successor to C++".
If you prefer watching the video and reading the material I used, here are some links:
- watch the 1.5h long video on YouTube,
- read the documentation on GitHub
What Are The Promises Of Carbon?
Starting from the difficulties experienced with C++, Carbon adopts a different approach.
Language
Carbon Language wants to start from scratch including:
- modern generics system,
- modular code organization,
- simple syntax.
Carbon wants to be "a successor language […], rather than an attempt to incrementally evolve C++", carbon-lang.
For this reason, it gave up on transparent backward compatibility while remaining interoperable with and migratable from C++.
Governance
Carbon wants to be more inclusive by:
- building on open-source principles, processes, and tools.
- contributing is easier and more transparent.
- having a clear governance structure that can make decisions rapidly when needed.
- expanding the ecosystem with tools that provide a rich developer experience (compiler, standard library, IDE tools), and tool-based upgrades
- bridging a gap in the C++ ecosystem with a built-in package manager.
Carbon Language: Examples & Demo
Below you can see a snippet from the example code on GitHub, with some simple comments from my side.
// Carbon:
package Geometry api; // local namespace
import Math; // library import
class Circle {
var r: f32;
}
fn PrintTotalArea(circles: Slice(Circle)) {
var area: f32 = 0;
for (c: Circle in circles) {
area += Math.Pi * c.r * c.r;
}
Print("Total area: {0}", area);
}
Carbon Language Explorer
Fancy trying it out?
Carbon Explorer is "A prototype interpreter demo that can both run isolated examples and gives a detailed analysis of the specific semantic model and abstract machine of Carbon".
Here is a link to Carbon Explorer.
If you want to know more about why C++, Rust, and other languages are not enough read a more extensive article on Medium.
Developers' sentiment
This is a collection of developers' feelings, posts, tweets, comments, etc.
- Developers seem to be mostly optimistic about Carbon
- Most love the interoperability with C++
- There is some skepticism around Carbon replacing C++. Some argue that Carbon will excel in a niche but won't become widely adopted
- Immutable declarations are preponed by let which might be confusing for developers coming from JavaScript. However, this will be smooth for devs coming from Swift.
- Public members by default seems to be controversial. The reasoning seems to be that since you will mostly read the public functions in your API, it makes sense to expose them.
- Rust supporters have been addressed: "If Rust works for you today, you should use it. But moving a C++ ecosystem to Rust is hard."
Conclusions
This article wants to be an overview of the Carbon language.
It is still very early to judge and I am in no position to do that. However, it is super exciting to see a new project starting from scratch and moving the first steps.
If you are interested, you could contribute and be part of something that might become very big in a few years.
What are your thoughts?