Bjarne Stroustrup (born December 30, 1950) is a Danish computer scientist known for creating the C++ programming language. He led the Large-scale Programming Research department at Bell Labs, was a professor of computer science at Texas A&M University, and worked for more than 10 years at Morgan Stanley while also serving as a visiting professor at Columbia University. Since 2022, he has been a full professor at Columbia University.
Early life and education
Stroustrup was born in Aarhus, Denmark. His family worked in jobs that required effort, and he went to schools in his local area.
He studied at Aarhus University from 1969 to 1975 and earned a degree in mathematics with computer science. His interests included microprogramming and machine architecture. He learned the basics of object-oriented programming from its creator, Kristen Nygaard, who often visited Aarhus.
In 1979, he completed a PhD in computer science at the University of Cambridge. His research on distributed computing was guided by David Wheeler.
Career and research
In 1979, Bjarne Stroustrup started working as a member of technical staff in the Computer Science Research Center at Bell Labs in Murray Hill, New Jersey. There, he began developing C++ and exploring programming methods. Stroustrup led the Large-scale Programming Research department at AT&T Bell Labs from its creation until late 2002. In 1993, he became a Bell Labs fellow, and in 1996, an AT&T Fellow.
From 2002 to 2014, Stroustrup was the College of Engineering Chair Professor in Computer Science at Texas A&M University. In 2011, he was named a University Distinguished Professor.
From January 2014 to April 2022, Stroustrup worked as a technical fellow and managing director in the technology division of Morgan Stanley in New York City. During this time, he also served as a visiting professor in computer science at Columbia University.
Since 2021, Stroustrup has been a Technical Advisor to Metaspex, a company creating a new C++ programming approach for business applications. As of July 2022, he is a full professor of computer science at Columbia University.
Stroustrup is best known for creating C++. In 1979, he started developing C++ (originally called "C with Classes"). He invented C++, wrote its early definitions, and created its first implementation. He also set the design rules for C++, designed its major features, and managed the C++ standards committee’s work on new language features. C++ became widely available in 1985. At that time, the cost to use the compiler and libraries for non-commercial purposes was $75, which was the price to ship them—before the Internet was common. Stroustrup also wrote a textbook about C++ in 1985 titled The C++ Programming Language.
Key technical features of C++ include:
– A system that treats built-in and user-defined types equally, requiring control over how objects are created, destroyed, copied, and moved, along with the ability to redefine operators.
– Support for value and reference-based programming.
– A method for managing resources efficiently (RAII), using constructors, destructors, and exceptions.
– Tools for object-oriented programming, including interfaces, multiple inheritance, and virtual function tables.
– Tools for flexible and efficient generic programming, such as templates with specialization and concepts.
– Support for programming tasks that happen during compilation, like template metaprogramming and functions evaluated at compile time ("constexpr functions").
– Direct access to machine and operating system resources.
– Libraries for handling tasks that happen at the same time (concurrency), often using built-in system features.
Stroustrup described his design principles and how C++ has evolved in his 1994 book The Design and Evolution of C++ and in three papers for ACM’s History of Programming Languages conferences.
Stroustrup was a founding member of the C++ standards committee, which became an ANSI committee in 1989 and an ISO committee in 1991. He has been an active member of the committee since its creation. For 24 years, he led the subgroup responsible for reviewing proposals to improve the C++ language.
Stroustrup has received several awards, including:
– 2018: The Charles Stark Draper Prize from the US National Academy of Engineering for creating and developing the C++ programming language.
– 2018: The Computer Pioneer Award from the IEEE Computer Society for introducing object-oriented and generic programming to the mainstream through C++.
– 2017: The Faraday Medal from the IET for important contributions to computing history, especially for creating C++.
– 2010: The University of Aarhus’s Rigmor og Carl Holst-Knudsens Videnskabspris.
– 2005: The William Procter Prize for Scientific Achievement from Sigma Xi, the first computer scientist to receive this award.
– 1993: The ACM Grace Murray Hopper Award for early work that laid the foundation for C++.
Stroustrup is a member of the National Academy of Engineering (since 2004) and a Fellow of the ACM (since 1994), IEEE (since 1994), and the Computer History Museum (since 2015) for inventing C++. He is also an Honorary Fellow of Churchill College, Cambridge (since 2017).
Stroustrup has received honorary doctorates and professorships, including:
– An honorary doctorate from the University Carlos III, Spain (2019).
– An honorary doctorate from ITMO University (since 2013).
– An honorary professorship in Object-Oriented Programming Languages at the University of Aarhus (2010).
Stroustrup has written or co-written several books, including:
– A Tour of C++ (1st, 2nd, and 3rd editions).
– Programming: Principles and Practice Using C++.
– The C++ Programming Language (1st, 2nd, 3rd, and 4th editions).
– The Design and Evolution of C++.
– The Annotated C++ Reference Manual.
These books have been translated into 21 languages.
He has also written over 100 academic articles, including:
– Thriving in a crowded and changing world.
– Evolving a language in and for the real world.
– What should we teach software developers? Why? (CACM, 2010).
– A Principled, Complete, and Efficient Representation of C++ (Journal of Mathematics in Computer Science, 2011).
– General Constant Expressions for System Programming Languages (SAC-2010).
– Open and Efficient Type Switch for C++ (OOPSLA'12).
– Design and Evaluation of C++ Open Multi-Methods (Science of Computer Programming, 2012).
– Classes: An Abstract Data Type Facility for the C Language (Sigplan Notices, 1982).
Stroustrup has also written more than 100 technical reports for the C++ standards committee (WG21).