Design and Evolution of C++: Video Podcast Transcript
Welcome to OnSoftware—conversations with thought leaders in software development. In this session, the creator of C++ (Bjarne Stroustrup) and author Herb Sutter discuss the program's creation and evolution over the years.
Ted Neward: Gentleman, good morning. For the benefit of our audience members who may not recognize you by sight, why don't you give us a quick intro of who each of you are and what you've been doing the last couple of years?
Herb Sutter: Okay, well, how about we do it for each other? I didn't tell him this [points to Stroustrup], but this is Bjarne Stroustrup. He is a professor at Texas A&M University, inventor of C++, AT&T Fellow, and National Academy of Engineering winner—congratulations again from last year.
Bjarne Stroustroup: Thanks. [Points to Sutter.] And this is Herb Sutter. He has worked for Microsoft for a few years. He is the convener—that's sort of the chairman—of the ISO C++ committee, and a long-term C++ user helping with the standard.
Ted: Cool, excellent—and I didn't tell you this, Mr. Stroustrup, but I have actually been a long-time fan of both of your books, having been a C++ programmer prior to my current engagements. One of the books that I actually found particularly interesting (both in my C++ days as well as today) was The Design and Evolution of C++. I'm sort of curious: There has been a lot of discussion around the design of programming languages—and now we've started talking about domain-specific languages and so forth. Sort of curious, as one who has been through the trenches, so to speak, of programming language design: What did you find in C++'s history that you think is broadly applicable to a lot of different languages? And obviously [gestures to Sutter], you've been involved with C++ for a while, too. What you guys see as particularly relevant even today that the world can learn from your experience?
Bjarne: The first observation I'll make is, it's interesting that we're here and it's an Addison-Wesley crowd—and we both [points to Sutter and himself] forgot to mention that we were authors! The Design and Evolution you referred to is a book that was most fun for me to write.
Ted: It looks like it.
Bjarne: It's very rare that you can find something where you can say thanks to your friends, and explain where you put your foot in your mouth, and things like that. The academic book formats generally don't allow that. But anyway, I think that what's interesting about C++ and that you can take away from [the book] is that there really is a place in the world for a language that can do close-to-the-hardware work—can deal very effectively with the resources and yet has the abstraction mechanisms that you can use for really demanding larger applications, and that's the C++ model. People tend to forget it in idle hype or the duration—that it actually works for that.
Ted: There's some hype surrounding these languages? You shock me, you surprise me. You stun me!
[Neward and Sutter laugh.]
Bjarne: We don't have any hype machine—we've never had it.
Herb: It's a real problem!
Bjarne: Yeah, it's a real problem, because you hear everything good about other languages. They have people that are paid to distribute the good news, even make the good news; whereas, if something good happens in the C++ community, nobody hears about it—because, well, we don't have any marketing budget.
Ted: Right, right. I will admit that just recently I was rummaging around, if you will, across the C++ parts of the Web and discovered the boost libraries and was quite pleasantly surprised. As a matter of fact, I blogged at one point, what have they done to my language? Where was this, like, years ago? I might never have moved off of it.
Herb: Well, we have an answer for you, by the way.
Ted: Okay, what have you done?
Herb: Not all, but many of the boost libraries are in the next standard of C++, the one we're about finishing. So when you hear us talk about C++0x, that's just a placeholder for the next revision of C++, which we're working on. And currently the goal is that "x is not hex"—that we're going to be done next year, in 2008, and so we'll fill that into "C++ '08" or "'09." But much of boost is already in there, hash-based containers and smart pointers, and various other things that you would expect, right down to numerics work and being able to take advantage of some of the libraries that normally people have had to go to vendors for, now can be in the standard—things that everybody can and should be able to use.
Ted: Okay, see, I still remember the C++ in the days when everybody had to write their own string class, so I'm quite glad to hear some of this.
Herb: Oh, you've been around for a long time.
Bjarne: That's a long time ago. The other thing we should probably mention in connection with C++0x is the threads library that will be one of the major [features].
Ted: So we're getting concurrency support.
Bjarne: Oh, yes, definitely.
Herb: That's something that's just non-negotiable. Any language from this point forward that ignores concurrency is basically not relevant for mainstream applications.
Ted: There's this article by this guy not too long ago, something about "There's no more free lunch." Would you know anything about that? [Smiles at Sutter, who wrote the aforementioned article.]
Herb: Oh yeah, I heard about that article. I saw it on Slashdot or something. [Laughs.]
Ted: You want to speak to that for a second?
Herb: Yeah, well, the "free lunch is over" article that I wrote was actually interesting because I had an article deadline and had to write [something], and I thought, well, this has been on my mind, so I wrote it—and it just took on a life of its own. I touched a nerve, and it was something that really was relevant because we're standing at a crossroads. For the first time in 50 years, which is the whole history of computing, mainstream hardware is no longer a von Neumann machine—a single-processor unit, which conceptually is just talking [about] the memory or tape or something.
Herb: And that means that we have a whole new architecture. Everything is changing underneath us. And a lot of people, I think, are still ignoring the impact of that. They sort of know intellectually, "Oh, yeah, we're getting more cores." They don't really understand what it means. They may even understand, "I have to write my software differently," with some vague notion of differently—and we're going to spend a number of years of conferences and in tooling, educating people and enabling them with tools on how to do that.
But the key thing to keep in mind is this: Just because you've got lots of, for example, x86 cores, and the instruction set is the same—it ain't the same hardware, it is not the same architecture. People are fooled, because they say, "Oh, it's still x86." But it is very different. It is like a whole new kind of machine. And so, on the one hand, that means that there's going to be a lot of new stuff to learn and a lot of techniques that we're going to change. But it's also a really great opportunity because, for the first time in 50 years, it's "green field." Everybody is looking forward to some exciting times of being able to do stuff we have never been able to do before because of lack of compute power.
Ted: Well, and just think of all the new books we can write.
Herb: Well, there you go. Yeah, that's something of interest to you, I see?
Herb: So what kind of concurrency book can we look forward to, or something different—?
Ted: Oh, from me? Oh, no, no—that's for you guys to work out.
Bjarne: Actually, I find it scary. Writing a decent book takes forever. So the burden of having to write those books is quite a lot. But it'll be nice to get back to concurrency work. That was where I started, distributed systems and concurrency. I think it's worth mentioning that there are lots of things in C++ that [are] not in the standards. One of the things the language is for is building libraries. So, much of the concurrency people get today in their systems is written in C++, it's just not [in the] standard. It's a library that people [are] using. So their threads libraries is probably a C++ library, whether it is on Microsoft or on Linux or something like that. So there's more to C++ than you can read in the standards document.
For more information, visit onpodcastweekly.com and subscribe to all our podcasts. Brought to you by the publishing imprints and information portal of Pearson Education.