Loading…
Loading…
The discussion centers on the existence and necessity of multiple C++ implementations, such as GCC, Clang, Microsoft, and EDG. Bjarne Stroustrup, the creator of C++, explains that this diversity was not a deliberate design decision but a natural outcome of the computing landscape when C++ was conceived. In an era of varied hardware (IBM, Sun, Motorola) and operating systems, it was impractical and undesirable for a single entity to control the entire compilation process, including front-ends, optimizers, and linkers.
Stroustrup highlights the critical distinction between a monoculture and a diverse ecosystem of implementations. He strongly advocates against monocultures, viewing them as inherently dangerous because they lead to stagnation, lack of competition, and a reduced incentive for innovation. A single dominant implementation can become complacent, prioritizing its own comfort over progress, and potentially erecting barriers to change. In contrast, the presence of multiple front-ends fosters a healthy competitive environment.
This competition among different C++ compilers yields significant practical benefits. Stroustrup points out that the rivalry between Clang, GCC, and Microsoft's compilers has driven substantial improvements in standards compliance, overall performance, clarity of error messages, and compile-time speed. He cites how Clang's emergence spurred GCC to become "much better now," demonstrating the direct positive impact of competitive pressure on software quality and evolution.
The broader implications extend beyond just C++ compilers, touching upon principles of robust system design and market dynamics. The episode underscores the value of decentralization and diversity in technological ecosystems to ensure resilience, continuous improvement, and adaptability. It suggests that the future will likely see continued attempts to develop new C++ compilers, with some being absorbed or influencing others, perpetuating a dynamic and evolving landscape for the language.
most languages have multiple implementations because if you wanna I p.m. if you run on the Sun if you wanna Motorola those just many many companies and they each have their own compilation structure the old compilers it was just fairly common that those many of them
I soon realized that my users were using 25 different linkers I couldn't write my own linker yes I could but I couldn't write 25 linkers and also get any work done on the language
it was not a decision that there should be many compilers it was just a fact that's the way the world is
today there's at least four front ends clang GCC Microsoft and EDG
having a single implementation was never an option
I also haven't disliked monocultures monocultures they are dangerous because whoever owns the monoculture can go stale and there's no competition and there's no incentive to innovate
clanks great but GCC was great but then it got somewhat stale plane came along and GCC is much better now competition why Microsoft is much better now
at least a low number of front end puts a lot of pressure on stand-ups compliance and also on performance and error messages and compile time speed all this good stuff that we want
somebody's going to try again there has been attempts to write new C++ compilers and some of them has been used and some of them has been absorbed into others and so it's yeah it'll happen you
Related to:
Programming Language
Compiler Frontends Mentioned
Key Design Principles
Historical Context
Future Outlook
Mastering Difficult Conversations: The Power of Directness and Emotional Resilience
The 'Stop Nick Shirley Act': A Threat to Investigative Journalism and Transparency
Taiwan's High-Tech Dutch Disease: Economic Specialization, Geopolitical Risks, and the Semiconductor Paradox