
The origins of C++ trace back to 1979, when programming language creator Bjarne Stroustrup first began exploring this language, then known as “C with Classes.” The language was designed as an improvement to the C programming language, adding features based on object-oriented programming.
Stroustrup told TechRepublic, “The success of C++ is obviously surprising. I think the success of C++ lies in its original design goals: efficient use of hardware, coupled with strong abstraction mechanisms, and a cautious improvement based on real-world feedback.” Today, it has become one of the most popular languages among developers, underpinning systems and services worldwide.
Stroustrup explained, “I wanted to build a multi-computer system with a communication system that could be shared memory or networked.”
“My focus was on software. I needed to write low-level code that was close to the hardware, such as memory managers, process schedulers, and device drivers, to separate software components so they could run on different computers with clearly defined communication methods.”
At that time, no language was capable of handling this task, so Stroustrup dedicated himself to building a language capable of it. He described this language as: “C with Classes should combine C’s ability to work close to hardware with the abstraction and code organization capabilities similar to Simula.”
From quite early on, Stroustrup recognized that he could not implement a “dictatorship” over the language. Although early work on C++ involved just him and a few colleagues at Bell Labs, the effort to standardize the C++ language quickly grew to dozens of people when it began.
Today, there are about 400 members on the C++ standards committee, along with a large user community that is focused on and tries to influence the direction of the language’s development.
So how do you maintain coherence in a programming language when faced with enthusiastic people? “It’s an opportunity and a huge problem,” Stroustrup said.
“The hardest part is determining what is important and maintaining coherence. Once you know what you want, you ultimately find a good technical approach to achieve it.”
In 1998, C++ was officially standardized and became a reliable mainstay. Since then, C++ has become one of the most commonly used programming languages in the world and has remained so to this day.
Stroustrup said it was the arrival of C++11, 13 years later, that laid the foundation for the language’s future development. He said, “C++11 made C++ feel like a brand new language.”
“Safe support for concurrent types is essential. C++11 provided a dense network of mutually supportive features, such as (constant expression) functions for compile-time computation, lambdas, automatic type deduction, and variadic templates.”
Although C++11 introduced some new features and functionalities that made the language simpler, faster, and more expressive, it is still known for its complexity, which Stroustrup also acknowledged.
Stroustrup said, “C++ is indeed complex, and mastering it requires a lot of effort. Unfortunately, people not only want simplicity; they also want something impossible: a simpler language that has more features and doesn’t break their existing code.”
Stroustrup’s response to this “trilemma” is, as he put it, to add some features that “make simple things simple,” for example, by generalizing common use cases or providing direct support—while still maintaining compatibility and stability.
For a behemoth like C++ or any mainstream programming language, this is easier said than done. Stroustrup explained that reaching a consensus on which new features to adopt or which to leave out is a huge challenge that requires a lot of effort, discussion, time, and patience.
Even so, not all excellent features can be accepted. He explained, “You have to try to only add things that genuinely help people, and then add some of those—because if we accept features that can help people, the language will become overloaded and capsize.”
Stroustrup referred to Vasa, a large Swedish warship from the 17th century that capsized on its maiden voyage due to poor design.
He said, “Under the insistence of the king—the top manager—this warship was laden with beautiful sculptures and cannons, contrary to the technical experts’ judgment, causing it to be top-heavy and ultimately capsized by a gust of wind.”
“I repeatedly talk about and write about Vasa to remind and warn those eager to improve C++ by adding features: remember Vasa! So far, C++ has not ‘capsized’.”
What has kept C++ vibrant over the years? “Start small, clarify the basic principles, define long-term goals, and develop based on feedback from real-world use.”
In fact, 35 years after its birth, C++ remains robust. Today’s C++ is far more powerful and expressive than early C++. But even today, the original design is still evident.
Stroustrup said, “Some simple programs written 40 years ago still run today.”
“Stability is an important characteristic for a language that must work for decades. In reality, many early ideas could only be realized in C++20. I knew from the start that I could not build the ideal language, so I had to aim for incremental development: improvement. Honestly, I don’t believe in the idea of a perfect language: what would count as perfect? For whom is it (perfect)?”
He added, “To meet the challenges of a changing world, incorporating new ideas and improvements is essential.”
As of September 2020, C++ is the fourth most popular programming language globally, following C, Java, and Python, and according to the latest TIOBE index, it is also the fastest-growing language.
As a general-purpose programming language, C++ is favored by developers for its powerful capabilities and flexibility, making it an ideal choice for operating systems, web browsers, search engines (including Google’s), games, enterprise applications, and more.
Stroustrup summarized, “If you have a problem that needs efficient use of hardware while managing high complexity, then C++ is clearly a good choice. If you don’t have both of those needs, then either a low-level efficient language or a high-level but inefficient language will suffice.”
However, even though C++ is widely popular, Stroustrup noted that accurately determining the exact uses and applications of C++ is very difficult.
“The answers to those two questions are estimated to be ‘ubiquitous’,” he said.
“In any large system, you will typically find the shadow of C++ in the low-level and performance-critical parts. These parts of the system are often not seen by end users, nor even by other developers of the system, so I sometimes refer to C++ as the invisible foundation of everything.“
At the same time, he emphasized that developer surveys are relatively unreliable when evaluating the popularity of specific programming languages: “Counting the number of programmers is both difficult and easy. Online surveys usually just measure ‘noise’, that is, they statistically count what people are talking about, not what they have actually used.”
Today, Stroustrup is a technical researcher at Morgan Stanley. He collaborates with the International Organization for Standardization (ISO) to develop C++ standards and the C++ Core Guidelines, which is considered part of his role at the financial giant, and he remains very actively involved in the development of C++.
Notably, Stroustrup is a member of the direction group, which proposes and discusses recommendations for the future of programming languages. He is also involved in the improvement group and participates in discussions about new language features.
However, when it comes to the day-to-day operations of C++, Stroustrup prefers to take a backseat. “I focus on administrative work but try to do less. I am not a great manager,” he admits.
Before the COVID-19 pandemic, Stroustrup often traveled to give lectures and explain C++ to the world through his books, articles, and interviews, but like the rest of the world, this work came to a halt in 2020.
Stroustrup said, “In my work, I rely heavily on talking to people, understanding their problems, and listening to how my ideas help them.”
“During the COVID-19 pandemic, I haven’t received the feedback I desperately need. Virtual meetings are not the same as reality; the effects of Zoom meetings are not as good as real face-to-face meetings when discussing designs and ideas.”
The pandemic hindered the development of the next two iterations of the C++ programming language: C++20 and C++23. But Stroustrup confirmed that “almost all” of C++20 would be released in 2020.
“In addition, there is work to be done in areas such as Unicode, numbers, game development, low latency, tools, and artificial intelligence,” he said.
“When a feature (language and library) is ready, we will release it, and we will publish a revised standard every three years. C++14, C++17, and C++20 have been released on time. It’s worth mentioning that the standardization is highly synchronized with the main implementers.”
“Keeping C++ coherent and as a stable development platform is crucial.”
Today’s Recommended Articles
Click the image below to read
In 2020, the top ten “failures” in the tech world you cannot miss
