Personality Profile: Bjarne Stroustrup By Susan E. Cotton

If you’re a serious computer programmer, you recognize Bjarne Stroustrup’s name. Now he’s sharing his passion for computer programming with freshman computer science students.

Bjarne Stroustrup invented the programming language C++.

He’s a member of the National Academy of Engineering, winner of the Sigma Xi William Procter Prize for Scientific Achievement, a tenured professor in the Department of Computer Science and holder of the College of Engineering Chair in Computer Science.

He’s written three definitive books (The C++ Programming Language is in its fourth edition in at least 19 languages.). And now he is teaching freshman engineering students in a course he developed just for them. (He helped write the textbook, too.)

“I decided to design a first programming course after seeing how many computer science students  — including students from top schools — lacked fundamental skills needed to design and implement quality software,” Stroustrup says. “Many simply had a completely warped view of what software development was about. They saw software development as ‘just programming,’ and programming as an obsessed individual working in isolation, slaving away night after night on obscure details of incomprehensible code. Some like that picture, but most don’t find it attractive. I don’t find it attractive.

“This warped view causes some people to avoid computer science completely,” he says. “It makes some avoid software development and concentrate on specialties that don’t involve serious code and worst of all, leads people who do want to develop software to go about it in an inefficient and self-destructive way.”

When Stroustrup was a beginner himself, he was “an impatient novice who just wanted to get his job done.” Programming was what he did to get the job done — until he became fascinated by it.

“That’s a significant shift in emphasis,” he says. “I suppose it’s similar to the transition from enjoying reading a novel, to wondering about why the novel is enjoyable, to studying how the author made the subject interesting and finally, to becoming an author yourself.”

He earned a Cand. Scient. (a degree like a master’s) in mathematics and computer science from the University of Aarhus (Denmark) in 1975 and a doctorate in computer science from England’s Cambridge University in 1979. Then he left Cambridge for the Bell Telephone Laboratories Computer Science Research Center in New Jersey. Then he invented C++.

C++ is a programming language that supports techniques like object-oriented programming: Its commands initiate operations in discrete modules, or objects, in a program. Software like the Apple iPod user interface, Adobe Photoshop, the Mars Exploration Rovers’ visual systems and Microsoft Internet Explorer are programmed in C++.

“We, that is, the ISO C++ Standards Committee, started work on a revised standard in 2003,” Stroustrup says. “Before that, we basically left the C++ standard alone to give implementers and users a chance to catch up with the 1998 standard. We hope that C++0X will become C++09. For that to happen, we need to fix the set of features by the end of next year.”

Some of this set will simplify the programming language — and programming overall — for beginners. For example, the committee intends to reduce the operation that extracts a number from a character string from four lines of expert coding to one line of simple coding. And they’ll generalize rules like “You can add two integers, you can add two unsigned integers, you can add an integer and an unsigned integer, …” to “You can add two numbers.”

“You have to consider how easy an individual feature is to use, how it will be used in the context of a real program, how easy it is to learn and how well it supports programming techniques,” Stroustrup says. “In addition, you have to consider how those techniques, as initially learned by novices, scale to real-world problems and how learning the feature and its related techniques lead to further effective learning. I really don’t want a ghetto of simple features and techniques that must be unlearned before a student can progress from student exercises to real-world systems.”

Some experienced programmers disagree with simplifying C++ for beginners. They worry it will become too simplistic for the experienced programmers and their applications.

“Often, experts have a hard time putting themselves in the shoes of novices,” Stroustrup says. “Sometimes, their attitude is ‘Why don’t they just become experts?’ My answer to that question is ‘It takes a long time to become an expert, and you don’t need to know all of C++ to write good and useful programs.’

“I want to help the hundreds of thousands of C++ programmers who are just starting out or just want to use a bit of C++ to get their work done. And C++0X will also provide plenty of new features for the experts.” end of story