SD West 2008 For the second year in a row organizers at the Software Development Conference & Expo West felt the super sessions hosted by C++ legends Bjarne Stroustrup and Herb Sutter were worth some ink on the event agenda.
"There was a time in the late 1990s and early 2000s when they simply stopped advertising C++ sessions at this conference," Sutter told attendees. "And yet they found a curious thing: every year for four years, C++ was the strongest track at the show. With zero advertising! That says something about the market. That says that there are problems that C++ is solving."
The duo offered the C++ crowd day-long sessions at SD West. In fact, a session presented last year (Concepts and generic programming in C++0x") was back by popular demand, alongside an additional day of new material covering the design and evolution of the grandpappy of object-oriented programming languages.
Sutter is the author of several books on software development, a lead architect at Microsoft, chair of the ISO C++ standards committee, and coiner of the phrase "concurrency revolution." Stroustrup is also an author, a professor of computer science at the Texas A&M University's college of engineering, and a research fellow at AT&T Labs.
Of course, the Danish computer scientist is best known as the creator and original implementer of C++.
Stroustrup doesn't like to hear his brainchild referred to as an object-oriented programming (OOP) language, though he allowed that its main contribution was to make OOP mainstream. "Before C++, 99.9 per cent of programmers never even heard of it OOP," he said during a post-session Q&A. "Those who'd heard of it believed that it was only for slow graphics written by geniuses."
Still, he'd rather we call it a "multi-paradigm programming language."
"We were trying to do something that hadn't been done when we started," he said. "We wanted this language to be useful in the hands of average programmers, and the writing of new concepts to be possible by fairly ordinary good programmers. We thought you shouldn't have to be a genius to use it."
Stroustrup combined features of C with features of Simula to create a general-purpose programming language that supports data abstraction and object-orientation. In 1984 he named it C++.
The language has since been used to build some "interesting things," Stroustrup pointed out, including systems on the Mars Rovers, tools for the Human Genome project, the Google search engine, and the software systems running most of the world's windmills.
C++ is non-proprietary and supported on more platforms than any other language but C, Stroustrup observed. "If you don't want to be owned by your vendor," he said. "Write your code with C++."
How many C++ programmers are actually doing that these days? Between 1980 and 1991, the number of C++ coders doubled every seven and a half months, Stroustrup estimated. That growth rate was unsustainable, he said. Extrapolating from compiler sales, book sales, workloads of consultants, and other statistics, he estimates that the number is now growing at about five to ten per cent per year. Analysts at IDS estimate that in 2004 there were approximately six million programmers coding with C++.
Sutter, who warmed up the audience on his keyboard with the Star Wars theme and jazzy renditions of Andrew Lloyd Webber tunes, wondered how many attendees were still using Visual C++ 6. Lots of hands went up. "That's what I thought," he said. "Keep in mind that we're working on version 10 now. We've actually made up shirts saying 10 is the six."
During the Q&A, Sutter was asked about the work at the International Standards Organizations. ISO is the group that establishes the technical standards for C++. One of the biggest misconceptions about the ISO standards committee, Sutter observed, is that it's some kind of design team. "I hear questions all the time about why the committee didn't design this or that," he said. "The committee is a group of individuals and corporate vested interests who want to see certain things in the standard for many reasons. But they don't design anything. That can be done by anyone who wants to propose a feature and do the real work."
The ISO C++ committee is working on the first major revision in years to the C++ standard. The current standard was published in 1998 and updated in 2003. The new standard, which is known as C++0x, is expected to provide several additions to the core language and to extend its standard library. Among other improvements, the improved standard is likely to include advanced concurrency libraries, Sutter said. Concurrency is the ability to execute several computational processes at the same time.
"We're in the middle of doing for concurrency what we did for GUIs and objects," Sutter said. "Right now there's a land rush for bringing out tools and products to enable developers to work in the new paradigm. It's not going to happen overnight. It's going to take a decade or more of getting the concepts into the mainstream; getting people to understand them; and building tools, libraries, and new frameworks."
When asked about the role of C++ in a world swarming with scripting languages, Stroustrup said he saw no conflict. "I grew up on Unix, and I'd never seen a system that didn't consist of some language like C or C++ plus some shell script," he said. "So I always assumed that there would be something like a scripting language in the world, and that the total system would be written in at least two languages. From day one, C++ was designed with that assumption."
"There is no one-size fits all," Sutter added.
Both Stroustrup and Sutter were sanguine about the future of C++.
"There is no successor to C++ yet," Sutter said. "There is no language that is good as doing all of the things that C++ does well. Until that happens we're going to be using C++ as the best tool for certain jobs for quite a while."
Stroustrup added: "I still have code I wrote before it was called C++ that, with some minor tweaks, runs."®