Welcome!

Linux Containers Authors: Elizabeth White, Yeshim Deniz, Pat Romanski, Liz McMillan, Zakia Bouachraoui

Related Topics: Linux Containers

Linux Containers: Article

An interview with Bjarne Stroustrup

The future is multiparadigm programming

Bjarne Stroustrup is the creator of C++, one of the most widely used languages that allows object-oriented programming. He also authored The C++ Programming Language and The Design and Evolution of C++. Stroustrup is currently the head of AT&T Labs's large-scale programming research department in New Jersey. His research interests include distributed systems, operating systems, simulation, design, and programming.

LinuxWorld.com: Object-oriented languages have been around since the late 1960s. Yet, the object-oriented revolution took place more than two decades later. How do you explain this delay and which conclusions can we draw from it?

Bjarne Stroustrup: Part of the reason is that changes in people's behavior always take far more time than we are willing to believe. Another major reason is that some people had (and have) unreasonable expectations about "revolutions." The idea that there is one right way to solve essentially every problem for essentially every user is fundamentally wrong. I'm a great fan of the idea of object-oriented programming and the design ideals and techniques that it supports -- originating with Simula 67. However, those are not the only effective techniques. Much programming is best done with techniques that do not fall within a narrow definition of "object-oriented." And if you broaden the definition of "object-oriented" sufficiently for it not to be an obstacle to good programming and design, you get something that is basically meaningless. See my paper, "Why C++ isn't just an Object-Oriented Programming Language."

Yet, another reason is that people pushing "True OO" or "Pure OO" typically do so with languages and systems that impose enormous overheads for simple tasks compared to C and C++ code.

The conclusions that I drew (in 1980 or so) were that a general-purpose programming language must support multiple paradigms and that each paradigm must be supported well and with close-to-optimal runtime and space efficiencies. That said, I find that adoption of new ideas is seriously slowed by conservatism supported with myths of complexity and overheads.

Another problem is that many people, including many programmers, educators, and managers, are simply unwilling to face the complexities of software development. They dream of "silver bullets" and reject effective ideas because they are not perfect and not trivial to use by novices. This leads to real work being done using unnecessarily old languages, tools, and techniques while scarce resources are being squandered on a succession of fads. This underestimation of the problems also leads to every new "silver bullet" being too simplistic to address the rigors of real-world software development. And once something new has adapted to reality, it becomes vulnerable to criticism -- fair and not -- of complexity from the followers of the next "silver bullet."

To get back on a semitechnical note: I think that any language that aspires to mainstream use must provide a broad base for a variety of techniques -- including object-oriented programming (class hierarchies) and generic programming (parameterized types and algorithms). In particular, it must provide good facilities for composing programs out of separate parts (possibly writing in several different languages). I also think that exceptions are necessary for managing the complexity of error handling. A language that lacks such facilities forces its users to laboriously simulate them.

LinuxWorld.com: Which important programming trends are we about to see in the near future? What is the role of functional programming, rule-based programming, generic programming, and other programming paradigms in tomorrow's software world? Will any of these become the mainstream or are they mere academic trifles?

Bjarne Stroustrup: I'm not good at predicting the future, so I won't try, beyond pointing out that the future is usually more like yesterday than we like to believe. Note that COBOL, FORTRAN, and C still are major languages. Generic programming is real (mainstream) and you can see how the Standard Template Library (STL) borrows techniques from the functional programming community and uses them elegantly and efficiently in the context of C++. Rule-based programming (see the R++ link in Resources) has a record of failures and successes on a scale that didn't lead to mainstream adoption. That's a pity, but I don't want to call it an "academic trifle." Many of the ideas we today see as standalone languages will enter the mainstream as facilities and techniques embedded in a mainstream language, such as C++. The future will see much multiparadigm programming and many multilingual systems.

LinuxWorld.com: With the ratification of the new C99 standard, C/C++ compatibility seems more evasive than ever before. Is backward compatibility with C still one of the goals of C++? If so, what should be done to minimize the gaping chasms between the two languages?

Bjarne Stroustrup: C99 focused on extending the low-level facilities of C in the area of numeric programming. It basically ignored the abstraction facilities and the aims of generality embodied in C++. This makes compatibility harder as C adds more ad hoc, special-purpose facilities, where C++ addresses the same programmer needs through libraries implemented using general-purpose language facilities. An example is C99 variable-length arrays vs. C++'s vector. A more coordinated evolution of the two languages would have avoided this split.

My ideal is still a single language, and it is still technically feasible to merge C++ and C99 into a single, reasonably coherent language. I think such a language could meet every rational technical requirement. However, I'm not sure that the political will is there. For starters, it would require a merger of the C and C++ standards committees; it is not possible to have two different groups of people evolving two languages in parallel. Each committee attracts people who don't share the ideals of the majority of the other and who dislike compromising with that majority. Thus, whereas a single committee fosters a shared community, trust, and compromise, two committees provide opportunities for divergence and for ignoring inconvenient facts and opinions. Personally, I think the committees should work out an agreement to merge, and then merge in good time before the ISO C++ standard comes up for renewal. The result would be a better language and a much stronger community.

LinuxWorld.com: Are there any features or concepts in other fledging languages, say Python or Ada95, that you would like to see added to C++? Does C++ need any additional features or libraries at all?

Bjarne Stroustrup: I would like to see the upcoming revision of the C++ standard focus on libraries. The work on the language itself could be limited to correction of mistakes, to making the language more uniform, to provide minor extensions to support popular paradigms, and to provide guarantees needed for libraries. For example, I suspect that concurrency is best supported by a library and that such a library can be implemented without major language extensions. However, such a library might need some additional guarantees written into the standard. In addition, I'd like to see a merger of C and C++.

Consider "major" language facilities often discussed for C++:

  • Concurrency: I'd like to see a library supporting threads and a related library supporting concurrency without shared memory.
  • Reflection: I'd like to see something like that supported through a library defining the interface to extended type information.
  • Persistence: I'd like to see some support in the Standard Library, probably in connection with the extended type information, but I don't currently have any concrete suggestions.
  • Hash tables: Of course, some variant of the popular hash_map will be included.
  • Constraints for template arguments: This can be simply, generally, and elegantly expressed in C++ as is.
  • Assertions: Many of the most useful assertions [a means of code verification and error handling] can be expressed as templates. Some such should be added to the Standard Library.
  • Regular expression matching: I'd like to see a pattern-matching library in the standard.
  • Garbage collection: I'd like to see the C++ standard explicitly acknowledge that it is an acceptable implementation technique for C++, specifying that "concealed pointers" can be ignored and what happens to destructors for collected garbage. (See section C.4.1 of The C++ Programming Language for details.)
  • GUI: It would be nice to have a standard GUI framework, but I don't see how that could be politically feasible.
  • Platform-independent system facilities: I'd like to see the Standard Library provide a broader range of standard interfaces to common system resources (where available), such as directories and sockets.

Note that these extensions are primarily additions to the Standard Library and that they can be implemented without adding runtime or space overheads. Thus, they can be added without violating the "zero overhead" principle. Among other things, C++ is a good language for hard-core embedded systems programming and should remain so. Also, all facilities should be properly integrated with current Standard Library facilities such as strings and containers.

Except for the GUIs, I'm optimistic that it can all be done without undue controversy for the 2005 or so revision of the C++ standard. Of course, this is ambitious, but the alternative to ambitious goals is stagnation. I think the open source community has a major role to play in this, because none of these libraries are going to be accepted into the standard unless we have experience with quality implementations on which to base the standard.

LinuxWorld.com: It seems that C++ has failed in one important frontier: language advocacy. Many people still mistakenly believe that C++ is inherently slower than C, and the media, often failing to acknowledge that C++ is the most widely used general-purpose programming language, focuses on other overhyped languages instead. Where did we go wrong and what can be done to fix this?

Bjarne Stroustrup: C++ succeeded spectacularly in advocacy where it initially mattered most: getting millions of programmers to use it. Amazingly, this was achieved with no organization and essentially no resources. This may have made the C++ community complacent, definitely fragmented, and vulnerable to hostile propaganda. I suspect that the real problem is that good code is invisible -- even to its users. Consider C++ programs such as Netscape and Internet Explorer. Corporations that produce software for real-world tasks -- such as telecommunications management, engine control, and simulations -- don't advertise which languages they use. Unfortunately, that leaves the image-making to software tools vendors and academics.

C++ never had the backing of a major vendor. Every major vendor pushes -- and always pushed -- some proprietary language over C++. C++ never had marketing clout; where marketing was done, it was mostly done by organizations selling something else (such as a software development environment) that happened to include C++. Also, the C++ community suffers from the very success of C++: It is clearly "the one to beat" and in today's heavily commercialized world, a fair fight is a rarity.

The C++ community never had a well-defined center with financing allowing it to engage in popularizing information about C++. Who speaks for C++? And how would the message reach programmers, educators, and managers? Just this week, I heard of a professor insisting to his students that there isn't yet a C++ standard! Sadly, 2 years after the ratification, this is a common misconception.

So what can the C++ community do now? Make successes and successful techniques known. Articles and conference talks are possible venues, but for most busy programmers, a simple description on a Webpage is a more realistic option. Providing high-quality code to open source sites is probably the single most effective way of showing people what C++ can do (current examples are the SGI STL and Boost.org). Somehow, we have to create a widely known "portal" to C++-related information.

Commercial organizations could do a better job of publicizing the successes of their C++ users, especially if they restrain their tendency to focus on the proprietary aspects of their products. The multisupplier, standardized nature of C++ is a major reason for many of their users' choice of C++.

C++ must be taught better, with the Standard Library and the abstraction facilities given central roles. Teaching C++ as a set of advanced/complicated extensions to C is wasteful and confusing. (See "Learning Standard C++ as a New Language" in Resources.)

The standards committee must do its part by supplying standard versions of critical available, but nonstandard, libraries. It can be done, but no, it is not going to be easy.

More Stories By Danny Kalev

Danny Kalev, a system analyst and software engineer with 12 years of experience, specializes in C++, object-oriented analysis, and design on various platforms, including Linux.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


IoT & Smart Cities Stories
SYS-CON Events announced today that DatacenterDynamics has been named “Media Sponsor” of SYS-CON's 18th International Cloud Expo, which will take place on June 7–9, 2016, at the Javits Center in New York City, NY. DatacenterDynamics is a brand of DCD Group, a global B2B media and publishing company that develops products to help senior professionals in the world's most ICT dependent organizations make risk-based infrastructure and capacity decisions.
A valuable conference experience generates new contacts, sales leads, potential strategic partners and potential investors; helps gather competitive intelligence and even provides inspiration for new products and services. Conference Guru works with conference organizers to pass great deals to great conferences, helping you discover new conferences and increase your return on investment.
DXWorldEXPO LLC announced today that ICOHOLDER named "Media Sponsor" of Miami Blockchain Event by FinTechEXPO. ICOHOLDER gives detailed information and help the community to invest in the trusty projects. Miami Blockchain Event by FinTechEXPO has opened its Call for Papers. The two-day event will present 20 top Blockchain experts. All speaking inquiries which covers the following information can be submitted by email to [email protected] Miami Blockchain Event by FinTechEXPOalso offers sp...
Headquartered in Plainsboro, NJ, Synametrics Technologies has provided IT professionals and computer systems developers since 1997. Based on the success of their initial product offerings (WinSQL and DeltaCopy), the company continues to create and hone innovative products that help its customers get more from their computer applications, databases and infrastructure. To date, over one million users around the world have chosen Synametrics solutions to help power their accelerated business or per...
Poor data quality and analytics drive down business value. In fact, Gartner estimated that the average financial impact of poor data quality on organizations is $9.7 million per year. But bad data is much more than a cost center. By eroding trust in information, analytics and the business decisions based on these, it is a serious impediment to digital transformation.
@DevOpsSummit at Cloud Expo, taking place November 12-13 in New York City, NY, is co-located with 22nd international CloudEXPO | first international DXWorldEXPO and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time t...
When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things'). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing. IoT is not about the devices, its about the data consumed and generated. The devices are tools, mechanisms, conduits. This paper discusses the considerations when dealing with the...
SYS-CON Events announced today that IoT Global Network has been named “Media Sponsor” of SYS-CON's @ThingsExpo, which will take place on June 6–8, 2017, at the Javits Center in New York City, NY. The IoT Global Network is a platform where you can connect with industry experts and network across the IoT community to build the successful IoT business of the future.
IoT is rapidly becoming mainstream as more and more investments are made into the platforms and technology. As this movement continues to expand and gain momentum it creates a massive wall of noise that can be difficult to sift through. Unfortunately, this inevitably makes IoT less approachable for people to get started with and can hamper efforts to integrate this key technology into your own portfolio. There are so many connected products already in place today with many hundreds more on the h...
CloudEXPO New York 2018, colocated with DXWorldEXPO New York 2018 will be held November 11-13, 2018, in New York City and will bring together Cloud Computing, FinTech and Blockchain, Digital Transformation, Big Data, Internet of Things, DevOps, AI, Machine Learning and WebRTC to one location.