While C++ remains a cornerstone of systems programming due to its unmatched hardware control, a growing number of developers are expressing a 'love-hate' relationship with the language's 40-year history of accumulated complexity. This sentiment is particularly sharp as the community weighs the benefits of C++'s high-level abstractions against the rising appeal of Rust's memory safety and modern tooling.
The Original Inquiry
The discussion was initiated by a user who noted that while C++ has received backlash for 'feature creep,' they personally enjoyed the strict type system and template capabilities introduced since C++11.
The poster highlighted the difficulty of writing correct iterators or handling rvalue references as primary pain points and asked the community whether they still enjoy writing C++ source code.
The inquiry prompted a wide range of personal anecdotes regarding professional experience, personal projects, and the trade-offs of using modern C++ versus other languages.
Arguments for C++ Power and Mastery
Several commenters argued that C++'s primary appeal is its sheer power. One commenter, writing as adev_, stated that nothing currently comes close to C++ in terms of generic programming or hardware control, suggesting that while it has legacy problems, it allows for a level of performance and productivity that is difficult to beat.
Others, such as mort96, argued that the enjoyment of C++ comes from mastery of its idiosyncrasies. They noted that knowing how to handle move semantics and memory management allows for 'clever' optimizations that avoid unnecessary allocations, a capability they felt was less 'nanny-like' than in other languages.
Conversely, some users expressed a preference for the simplicity of C or the high-level capabilities of Python. One commenter, adg001, stated they never enjoyed C++'s original syntax and approach to object-oriented programming, preferring the feel of C.
The Migration to Rust
A recurring theme in the discussion was the migration from C++ to Rust. Commenter gignico reported that while they still appreciate C++'s merits, they found it difficult to look back after switching to Rust, specifically citing the absence of algebraic data types and pattern matching in C++ as a major drawback.
Other commenters noted that C++ has lost its appeal because it no longer offers a good balance of performance and effort. They suggested that even LLMs are now more proficient at coding in Rust than in C++ for new projects.
Some developers, like ketzu, noted that while they enjoyed C++ for loops and functions, the complexity of template specifications eventually led them to switch to Rust.
Legacy Cruft and Modern Improvements
The discussion also touched on the 'cruft' of the language. Commenter chris_j noted that C++ carries over 40 years of features that wouldn't be included if the language were invented today, though they admitted that the language became much more enjoyable after the C++11 update.
The role of AI in modern development emerged as an unexpected angle. Commenter logicchains claimed to prefer C++ because AI agents like Claude can do most of the work, and well-structured C++ can sometimes compile faster than Rust code.
This highlights a trade-off where the massive existing codebase of C++ provides a significant advantage for AI-assisted programming, even as human developers move toward languages with stricter safety guarantees.
Unresolved Questions and Trade-offs
The discussion revealed that enjoyment of C++ is often conditional on experience; experts can use it to perform 'clever' memory management, while others find the syntax and template systems 'obnoxious' or 'incomprehensible.'
A significant point of contention remains the future of C++'s committee-led development. Commenter gignico expressed doubt about the committee's ability to implement long-standing proposals like pattern matching amidst current organizational challenges.
Ultimately, the choice between C++ and Rust involves a trade-off between the 'nanny-free' expressivity of C++ and the safety-first, modern tooling ecosystem of Rust.
