technology

Stroustrup: complexity is the new constant in software development

The relentless march of AI and streamlined development tools aren’t simplifying software – they’re layering on a new kind of complexity, according to C++ pioneer Bjarne Stroustrup. Forget the idea of a straightforward path to mastery; the veteran programmer argues that a deeper understanding of control and architectural choices is now more vital than ever.

Navigating the two-tiered landscape

Stroustrup’s assertion isn’t a mere opinion. He’s consistently underscored the fundamental duality within programming: those languages that generate complaint, and those that remain largely untouched. This division, he contends, isn’t a judgment on quality, but a reflection of the varying levels of control developers demand. The industry, he suggests, naturally bifurcates around this core requirement – the need to manipulate the system at a granular level.

He’s been remarkably blunt in his assessments of learning programming through online resources, famously stating that “no one can learn to program by the internet.” This isn’t a dismissal of accessibility, but a recognition that genuine understanding requires wrestling with the core mechanics, not passively absorbing tutorials. The implication is stark: aspiring engineers must confront the challenges directly, a sentiment echoed by numerous specialists.

Stroustrup’s perspective isn’t universally embraced, and his pronouncements frequently provoke debate. Yet, the underlying logic holds weight. Modern languages, often lauded for their ease of use and reliance on external libraries, frequently mask a level of complexity beneath the surface. Their efficiencies, he suggests, come at the cost of true control and long-term maintainability. The fascination with ‘easy’ languages, he notes, often obscures a deeper dependence on often fragile ecosystems.

“There are only two types of programming languages,” Stroustrup reportedly quipped, “those people complain about, and those nobody uses.” This provocative statement highlights a crucial tension: languages that consistently deliver robust, scalable solutions – like C++ – become targets of criticism simply because they demand a higher level of expertise. They are the workhorses of massive projects, providing the stability and performance demanded by industries reliant on proven architectures. Conversely, newer languages, prioritizing developer velocity, often occupy the realm of academic experimentation or niche applications.

He reinforces that complexity, regardless of the language, is an inherent consequence of power. A system capable of handling immense scale and demanding workloads inevitably introduces intricate layers of interaction. But as he concludes, “The perfection of utility is the enemy of utility.” Choosing the right tool for the job, understanding its limitations, and mastering its intricacies remains paramount. The key lies not in chasing the illusion of simplicity, but in embracing the unavoidable complexity that underpins robust, enduring software.

Regarding “distro” in Linux, it's essentially the distribution's package management system – a critical component for reliably installing and updating software. A misconfiguration can lead to dependency hell, rendering a system unusable. It’s a potent reminder that even in the open-source world, careful attention to detail is non-negotiable.”n