Stroustrup: complexity in code? a necessary evolution
Bjarne Stroustrup, the architect of C++, isn't backing down from his stance on programming languages – and it's not exactly what developers want to hear. While the siren song of 'easy' languages like Python and JavaScript grows louder, the seasoned computer scientist insists complexity isn't a bug, but a feature, particularly when tackling sophisticated engineering challenges.

The two-tiered world of software
Stroustrup's latest pronouncements, echoing sentiments he's voiced before, draw a sharp line in the sand. The software industry, he argues, fundamentally divides into two camps: those wielding languages that demand precision and control – languages like C++, Java, and even Python – and those utilizing simpler, often library-dependent tools. The latter, he bluntly states, are languages that either spark constant complaints or simply aren't being used.
It's a provocative assertion, especially considering that C++, despite its reputation for complexity, isn’t the largest language by user base – C# and Java hold that distinction. Yet, Stroustrup explains, the initial design goal wasn't simplicity. It was, and remains, versatility, a vast technical surface area enabling solutions to problems that become more pressing with each passing decade. What was once considered complex is now, arguably, indispensable for tackling modern, large-scale systems.
The ease of modern languages, while appealing, comes at a price. Their reliance on extensive libraries and heavy environments introduces a different kind of complexity, one that often sacrifices efficiency and flexibility. The 'easy' languages are, in essence, outsourcing complexity rather than eliminating it.
Stroustrup's point is clear: power demands accountability. He’s not dismissing the value of simpler tools for specific tasks, particularly in academia or experimentation. But he firmly believes that any language capable of delivering significant power will inevitably invite criticism – the price of effectiveness. He succinctly puts it: 'Perfection is the enemy of utility.'
Beyond the language debate, Stroustrup’s counsel to aspiring engineers is equally sharp. Forget the notion of learning to code solely through online tutorials. And, crucially, don't believe you need to be a genius to succeed in the field. The true measure of a developer lies not in raw intelligence, but in a willingness to grapple with complexity and a dedication to mastering fundamental principles.
