Bjarne Stroustrup is a computer scientist, best known for the design and implementation of the programming language C++. For decades, he has worked to improve C++ and maintain it as a good platform for developing demanding applications. It’s now a key component in our technological culture: it’s in your computer, phone, and car. It’s in the Web space telescope and the Mars Rovers. It’s in most video games and movie animation. It’s in many medical instruments. Basically, it’s used everywhere, it may even be in your coffee machine.
Nowadays He is a technical fellow at Morgan Stanley (a major investment bank) and he teach at Columbia University, both in New York City. He take part in the continuing ISO standardization and development of C++. He talk with a lot of people to learn about problems and try out my ideas, and he help with design problems and write a bit of code
We have talked with one of the fathers of programming. It’s possible that you don’t know his name, but he has created the basis for almost everything you know. Check out our interview!
Why did you create C++?
I wanted to build a distributed computer system where many processors could cooperate to get a job done. That could make the work done by the software more reliable and faster. To do that, I needed a language that could handle hardware and low-level tasks well, like C. I also needed a language that could express more abstract high-level notions such as software modules, hardware resources, and communication protocols well, like Simula. There wasn’t such a language, so I made one by adding Simula classes to C and then improving it as needed for real-world tasks.
What do you highlight most about this language?
C++’s ability to handle hardware well and to provide efficient high-level abstractions. Also, our ability to evolve the language to handle new tasks. Like natural languages, C++ becomes more flexible and expressive over time.
And what do you most criticize about this language?
I try not to say things about C++ that can be taken out of context to appear damning. It’s a good language for a huge range of tasks, but of course it could be better still. We try to make simple tasks simpler in C++. We try to improve C++’s ability to manipulate the amazing variety of modern hardware. We try to make C++ code safer.
Where can we find C++ in our daily life?
C++ is basically everywhere: Your phone, your TV, your computer, and the huge infrastructure that makes them work. The design tools and factories that build them. The distribution systems that bring them to you. The farms that produce your food. Most computer animation in movies (e.g., the “The Matrix”) and games. Hardly any systems are written in just one language, but C++ is part of most complex systems.
If you were born again, would you dedicate to the world of software again? Why?
Maybe. What your can do depends so much on your environment and a bit of luck. Growing up in Denmark gave me a very supportive environment in which to learn. My family let me follow my inclinations and I was lucky to meet some seriously smart and nice people. I could easily have ended up in a different field. I was interested in history, philosophy, architecture and more, but in my university years, software really took of and caught my interest. Computer Science seemed to be a field in which I could make a positive contribution. Software is a great field, but it is not the only one.
Does the software domine us, or should we domine it?
That’s up to you. You can use computers to do something constructive or good. You can also spend all day browsing, watching TV, and playing games.
What would be your advice to today’s young people who want to become software engineers? And for those who aren’t good at using new technologies?
Technology *is* a different world from the one most people live in, and a great and exciting one! The main way into technology jobs is through a good education. It doesn’t have to be mathematics and computer science, though that helps. And it cannot be just mathematics and computer science. You have to have a context for your computer work and that can be just about everything: History, biology, linguistics, music, medicine, and many more fields of study. The best software designers have serious non-computer skills. For starters you need to be able to communicate: to listen, to understand other people’s problems, to explain your solutions verbally and in writing.
Are more than 30 years enough to recognize what a language like C++ has done for humanity? Are we aware of what he has done for us?
Not really. Most people are aware of entertainers and politicians. Many have some idea of science and scientists. Very few know anything about engineering and engineers. We grumble when something doesn’t work properly, but most of the time we simply take our technological marvels for granted. That’s not surprising and in some ways good, but it does mean that a huge amount of work goes unrecognized.
Do you miss how you worked in programming and computer science in the years of the creation of c++, compared to how we work now?
Well, I work in and with C++ now. That’s a major focus on my work in computer science, design, and programming. I am very concerned about reliability, performance and cost. We can do better and working on that is interesting and rewarding. But yes, in some ways it was easier to get work done when I was young and unknown.
Have you ever imagined to be the creator of the ‘technology base’ or root of much of what surrounds us? And what does it feel like?
No. I never imagined the impact of my work with C++. I just tried to study some problems that I thought important and used the skills I had accumulated through my education for that. It turned out that the kind of problems I was addressing were very common and my solutions were useful beyond my wildest dreams. I feel great when C++ is used for something great and exciting, say in the work at CERN finding Higgs’ boson or in the scanners used by dentists. Conversely, I feel bad when I see C++ used for things that I consider wasteful or bad.
Which is the future of C++?
I hope – and expect – that C++ will evolve into a language that is significantly better than today’s C++ for the things that C++ is good for. I hope to see C++ used to good in science, engineering, medicine, and more. Naturally, most uses of C++ are not and won’t be spectacular. I hope that C++ will also be used in millions of little gadgets and services to make life more safe and pleasant for billions of people.
And what would you change about your professional experience and about your relationship to C++?
If I had a time machine, I’d spend more time searching out people who are smart and kind, and spend more time with them and learning from them. That would have inspired me to make C++ even better and maybe to do something I can’t even imagine.