Faculty & Staff

The Mind Behind C++

One of the most influential programming languages in history was created by Columbia professor Bjarne Stroustrup, almost by accident.

February 23, 2026
Anna Louie Sussman

Bjarne Stroustrup’s job interview at Bell Labs in 1979 did not get off to an auspicious start. When the Danish computer scientist arrived in New Jersey, having flown over from Cambridge, England, on his own dime, the researcher who met him at the airport took him to his hotel, sat him down, and told him he’d arrived at an unfortunate time. The Computer Science Research Center (part of Bell Labs) didn’t have any job openings.

The next day, he presented some of his research anyway, at a less prestigious subsidiary of the company. Something must have clicked. He was driven back to be interviewed at Bell’s research lab, the legendary source of the Unix operating system, photovoltaic cell, and the transistor. A week later, he was offered a one-year term in the Computer Science Research Center. The job description boiled down to, “Go do something interesting,” and could be renewed for another year if the higher-ups deemed his work sufficiently interesting.

Image
Bjarne Stroustrup at his desk with 3 monitors, his feet propped up on the desk
Courtesy of Bjarne Stroustrup

An unlikely start at Bell Labs

That independence suited him well. Stroustrup’s PhD advisor at Cambridge, David Wheeler, had a similar philosophy. (Wheeler once asked him if he knew the difference between a master’s degree and a PhD. “If I have to tell you what to do, it’s a master’s.”) At Bell Labs, autonomy did not mean isolation; it was a deeply collaborative place. “One of the interesting things was that people worked with their doors open,” recalled Stroustrup, now a professor of computer science at Columbia Engineering. “If you needed an expert on just about anything, you could barge in and ask a question. A lot of my work was done on other people's blackboards.”

Stroustrup had initially set himself the task of building a distributed operating system based on Unix, the computer operating system developed by colleagues at Bell Labs that was the first to run on different platforms. He soon realized this was not a one-person task, and even if it was, he lacked a programming language with which he could write such a system. He decided to turn his attention to that. 

At the time, there were high-level programming languages capable of expressing high-level abstractions needed for advanced complex software, such as Simula, but they were slow to run and incapable of building basic things like device drivers (the software that helps your computer communicate with, say, a new printer or mouse). Low-level languages could do that and were fast, but couldn’t express the abstractions needed for a distributed system. There was no language that could do both. “I needed something to do the low-level stuff and then abstract away from it so I could start building more useful, safer, more easy-to-use facilities,” he said. “So I decided to merge those two ideas.”

Image
Teaching Columbia Engineering graduate students in Fall 2025
Teaching Columbia Engineering graduate students in Fall 2025. Credit: Still from forthcoming C++ documentary by Ida Bechtle/Cult.Repo

Building a language the world needed

Six years later, Stroustrup had something very interesting in hand: building off of C, a language also developed at Bell, and Simula, he created C++. This made it an excellent general purpose programming language, suitable for everything from linear algebra to graphics to database management. In 1985, the first edition of “The C++ Programming Language” was published; it is now in its 4th edition. And Stroustrup continued to work at Bell Labs for a total of 24 years.

In the early days of C++, he was extraordinarily busy, as it found wider and wider application at places such as telecommunications, simulations, and hardware design tools. “I was doing the design, I was doing the implementation, I wrote the documentation, the tutorials, and the research papers, I was the help desk,” he recalled. Whenever a user had a problem, it was his to solve. He was always happy to help, but he asked for one thing in exchange, which was for the user to tell him a little bit about their work. With that bargain struck, he got to visit some fun places, such as NASA’s Jet Propulsion Laboratory in Pasadena, California, where he met with the team building the Mars Rover. About fifteen percent of the code they used to power the rovers was C++.

Forty years on, C++ is still the second-or-third-most widely used programming language in the world, underpinning everything from power chargers that charge cellphone and computer batteries to self-driving cars. It powered the Windows computer on which he spoke to me from his sunny office, and my Mac laptop on the other end of our video call. In Stroustrup’s view, C++ has endured in the fast-moving world of computing for one simple reason: It is useful. 

Since the first programming language, Fortran, was invented in 1956, Stroustrup estimates 10,000 to 15,000 languages have been built, and just as many have fallen out of use. In 1994, some high-level developers of Java even outright declared their intent to “kill” C++ in just two years; fast-forward to today and there are ten times as many C++ programmers as there were when its imminent death was promised. “I think it's simply that C++ meets a need,” he said.   

While C++ has often been criticized for not being as elegant or simple as other languages, such as Python, he was consciously seeking utility, not poetry, as he built it. “The engineering aspects of it quite often meant that I ended up with something that is not quite as simple, as beautiful, as I would have liked it to be – as everybody else would have liked it to be,” he said. “But it can do things that are messy. The world is messy, and if you want to address those problems, then you end up with something that is more useful, but less pretty. I knew what I was doing.”

Image
Bjarne Stroustrup first joined Columbia Engineering in 2014 as a visiting professor teaching software design
Bjarne Stroustrup first joined Columbia Engineering in 2014 as a visiting professor teaching software design. Credit: Still from forthcoming C++ documentary by Ida Bechtle/Cult.Repo

Teaching engineers to think, not just code

One of his former colleagues at Bell Labs, Alfred Aho, had his office next door. When Bell Labs was breaking up in the mid-1990s, Aho joined Columbia University, chairing the computer science department from 1995 to 1997 (now Lawrence Gussman Professor Emeritus of Computer Science and a Turing Award winner). Stroustrup also moved into academia, joining the faculty at Texas A&M University, but he would borrow Aho’s office (or “Al’s office,” as he remembers it) in the summers when he would visit his grandchildren in New York City. When Stroustrup and his wife moved to New York City in 2014 so he could take a job at Morgan Stanley, he became a visiting professor at Columbia teaching software design, and later a full professor. He now lives just a stone’s throw away from both his grandchildren and Columbia. 

His experience in both the private sector and in academia has given him an appreciation for engineers who are versatile and competent, and not merely specialized in whatever might be the latest technological fad. Today, in a world where engineers are using AI coding assistants to generate code at a faster and faster clip, Stroustrup encourages his students to pause and understand what it is they’re doing and why. His students, he said, “are usually pretty good at building things. What they haven't learned is, why do we build these particular things? How do you characterize a problem? How do you analyze a problem? How do you combine things you learn in different classes?”

Problem-solving, as he sees it, is a fundamentally human task. It requires being out in the real world, learning what’s going wrong, and working with other people to fix it. You must be, as he was in his early days of C++, the help desk. “You need to talk to a lot of people to learn the problems and see how the suggested solutions fit,” he said. “You do the best you can, you see if it works, and you take what works, and then you work on the things that didn't work to create something better. It's that feedback loop that makes good engineering.”


Lead Photo Caption: Bjarne Stroustrup pictured on Columbia University’s Morningside Heights campus in Fall 2025 

Lead Photo Credit: Still from forthcoming C++ documentary by Ida Bechtle/Cult.Repo