The blog post argues that Carbon, while presented as a new language, is functionally more of a dialect or a sustained, large-scale fork of C++. It shares so much of C++'s syntax, semantics, and tooling that it blurs the line between a distinct language and a significantly evolved version of existing C++. This close relationship makes migration easier, but also raises questions about whether the benefits of a 'new' language outweigh the costs of maintaining another C++-like ecosystem, especially given ongoing modernization efforts within C++ itself. The author suggests that Carbon is less a revolution and more of a strategic response to the inertia surrounding large C++ codebases, offering a cleaner starting point while retaining substantial compatibility.
The blog post, "Carbon is not a programming language (sort of)," by "herecomesthemoon," delves into the nuanced nature of defining what constitutes a programming language, specifically in relation to Carbon, Google's experimental successor to C++. The author argues that strictly adhering to a rigid definition of a "programming language" can be detrimental to understanding the evolutionary process of language development. They propose that instead of seeking a binary classification, it's more productive to view languages on a spectrum of maturity, ranging from nascent experimental projects to fully established, widely adopted languages.
The central point of the post is that Carbon, in its current state, doesn't neatly fit into the traditional definition of a programming language. It lacks crucial components like a robust standard library, comprehensive documentation, a stable ABI, and extensive tooling support. These deficiencies, the author argues, prevent Carbon from being considered a fully realized, production-ready language. Instead, they categorize Carbon as an ongoing project, a work-in-progress striving towards becoming a true programming language. This perspective acknowledges that language development is an iterative process, involving phases of experimentation, refinement, and community adoption.
The author further elaborates on the importance of having a working implementation, a key characteristic of a mature programming language. While Carbon boasts a compiler and a rudimentary runtime, these are still under active development and subject to significant changes. This instability, coupled with the lack of a stable Application Binary Interface (ABI), makes it difficult to create reliable and reusable code libraries. The absence of comprehensive documentation and robust tooling further hinders Carbon's usability and widespread adoption.
The blog post concludes by reiterating that the question of whether Carbon is a "language" or not is less important than understanding its current developmental stage. By viewing Carbon as a project on a trajectory towards becoming a fully fledged programming language, we can better appreciate the ongoing efforts and challenges involved in its development. This perspective also encourages a more nuanced understanding of how programming languages evolve and mature over time, rather than adhering to a rigid, binary classification. Ultimately, the post emphasizes that focusing on Carbon's progress and its potential future contributions to the programming landscape is more fruitful than getting bogged down in semantic debates about its current status.
Summary of Comments ( 48 )
https://news.ycombinator.com/item?id=42983733
Hacker News commenters largely agree with the author's premise that Carbon, despite Google's marketing, isn't yet a fully realized language. Several point out the lack of a stable ABI and the dependence on constantly evolving C++ tooling as major roadblocks. Some highlight the ambiguity around its governance model, questioning whether it will truly be community-driven or remain under Google's control. The most compelling comments delve into the practical implications of this, expressing skepticism about adopting a language with such a precarious foundation and predicting a long road ahead before Carbon reaches production readiness for substantial projects. Others counter that this is expected for a young language and that Carbon's potential merits are worth the wait, citing its modern features and interoperability with C++. A few commenters express disappointment or frustration with the slow pace of Carbon's development, contrasting it with other language projects.
The Hacker News post titled "Carbon is not a programming language (sort of)" linking to the article "Carbon is not a language" generated a moderate amount of discussion with 29 comments at the time of this summary. Several commenters engaged with the core argument of the blog post, which posits that Carbon isn't truly a language yet, but rather a promising and evolving project aiming to become one.
A prevailing sentiment revolves around acknowledging Carbon's current state as a project in progress, while also appreciating the efforts and direction it's taking. One commenter highlights the importance of differentiating between the aspiration of creating a new language and the actual realization of a fully functional, community-supported, and widely adopted language. They point out that using the term "language" prematurely can set unrealistic expectations.
Another commenter emphasizes the iterative nature of language development, drawing a parallel with Rust's evolution. They suggest that Carbon, like Rust in its early stages, is currently more of a research project with potential to become a robust language. This commenter also touches upon the importance of community involvement and feedback in shaping the language's future.
The idea of a language being more than just its syntax is also brought up. One commenter notes that a true language needs not only a defined syntax and compiler but also a rich ecosystem encompassing libraries, tools, and community support. They argue that Carbon currently lacks this broader ecosystem, further reinforcing the "project" rather than "language" designation.
Several comments delve into specific technical aspects, like the choice of LLVM as a backend for Carbon. Some see this as a pragmatic decision leveraging an existing robust infrastructure, while others express concerns about potential limitations and vendor lock-in.
A thread emerges discussing the need for a successor to C++, acknowledging its complexities and the desire for a more modern alternative. Carbon is positioned within this context, with some expressing optimism about its potential to fill this gap.
Finally, some comments address the rhetorical nature of the blog post's title, recognizing it as a thought-provoking prompt to discuss the nuances of language development and the criteria for defining what constitutes a "language" in a practical sense. They acknowledge that while Carbon might not fully meet all the criteria of a mature language yet, it represents a significant and worthwhile undertaking.