Bjarne Stroustrup on Why People Complain About Popular Programming Languages
- Bjarne Stroustrup, the creator of C++, has addressed the persistent criticism surrounding popular programming languages, suggesting that such complaints are an inevitable byproduct of a language's success and...
- Stroustrup posits a dichotomy in the software engineering landscape, asserting that There are only two kinds of languages: the ones people complain about and the ones nobody uses.
- According to Stroustrup, the tendency for developers to criticize a language is often linked to its prevalence.
Bjarne Stroustrup, the creator of C++, has addressed the persistent criticism surrounding popular programming languages, suggesting that such complaints are an inevitable byproduct of a language’s success and widespread adoption.
Stroustrup posits a dichotomy in the software engineering landscape, asserting that There are only two kinds of languages: the ones people complain about and the ones nobody uses.
The Relationship Between Popularity and Criticism
According to Stroustrup, the tendency for developers to criticize a language is often linked to its prevalence. Popular languages such as Java, Python, and JavaScript are utilized by millions of developers, which naturally exposes them to a broader array of diverse problem sets.
This widespread use reveals the inherent limitations and idiosyncrasies of a language more quickly than it would in a niche tool. Popular languages often carry legacy features that may not align with modern programming practices, leading to frustration for developers seeking more streamlined methodologies.
The growth of a language also elevates the expectations of its user community. As a developer base expands, users frequently push for new features or changes in direction, which often sparks debate and criticism within the community.
The Spectrum of Language Use
On the opposite end of the spectrum are languages that avoid criticism primarily because they lack a significant user base. These typically fall into three categories:
- Highly specialized languages designed for specific industries or niches.
- New or experimental languages that have not yet gained traction or are being used to test new programming concepts.
- Outdated languages that have been superseded by modern alternatives and have fallen into obscurity.
Control Versus Convenience
Stroustrup’s observations extend to the fundamental trade-offs between raw power and usability. He suggests the industry is split between languages that prioritize fine-grained control and those that emphasize developer velocity.
Languages that provide high levels of control, such as C++, Rust, and to a lesser extent, Java, are frequently the targets of complaints. These criticisms often center on steep learning curves, verbose syntax, and challenges related to memory management.
Despite these difficulties, these languages are selected for projects where maximum performance, reliability, and resource efficiency are mandatory. This includes the development of operating systems, game engines, high-frequency trading platforms, and the foundational layers of artificial intelligence infrastructure.
Conversely, languages like Python, Ruby, and JavaScript prioritize ease of application and rapid prototyping. While these are often more beloved for their accessibility and extensive libraries, they rely on abstractions that obscure underlying complexities.
For example, Python’s success in data science is attributed to its accessible syntax and ecosystems like TensorFlow, Pandas, and NumPy, though this convenience comes at the cost of the fine-grained control found in languages like C++.
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
Bjarne Stroustrup
