The Story of C++: The World's Most Consequential Programming Language | The Official Story

CultRepo| 01:11:34|Jun 5, 2026
Chapters23
Bjarne Stroustrup explains the motivation for C++ as a language offering high-level abstraction while still giving low-level control, contrasting it with aging languages like C and the challenges of evolving software in a changing world.

C++ evolved from C with Classes at Bell Labs into a standards-driven powerhouse, balancing performance, abstraction, and community-driven evolution.

Summary

CultRepo’s profile of C++ traces a journey from Bjarne Stroustrup’s early dream of a low-level, hardware-friendly language to a globally collaborative standard. The documentary highlights how C++ grew out of the need for both abstraction and control, moving from Simula-inspired ideas at Cambridge to a compiler-driven revolution with CFront. We hear from insiders about the delicate balance between compatibility and innovation, the pragmatic decision to standardize via ANSI/ISO, and the birth of the STL through Alex Stepanov’s vision. The film emphasizes Bell Labs’ unique ecosystem and AT&T’s constraints that pushed C++ from a niche research project toward industrial relevance. Viewers get a feel for the human side of language design: collaborations, conflicts, and the stubborn resistance to abandoning useful ideas. The narrative also situates C++ in broader tech history—from Unix and C to Java, Visual Basic, and the rise of parallelism, concurrency, and modern templates. Finally, the story connects C++ to today’s wide footprint in gaming, finance, physics research, and AI infrastructure, underscoring its ongoing evolution with C++11, C++14, and beyond. CultRepo presents a portrait of a language as much a community achievement as a technical creation, guided by leaders like Bjarne Stroustrup and Herb Sutter and sustained by a global ecosystem of developers.

Key Takeaways

  • CFront translated C++ into C in 1983, allowing early adopters to use C++ without learning an all-new toolchain.
  • The ANSI/ISO standardization effort, driven by industry giants and advocates like Bjarne, helped move C++ from a research project to a production language.
  • The STL (Standard Template Library) introduced a breakthrough approach to reusable algorithms and containers, shaping how C++ code is written and reasoned about.
  • C++14/11 era brought practical features (move semantics, auto, range-based for, smart pointers, lambdas) that redefined how developers write safe, high-performance code.
  • C++’s trajectory faced a “second winter” around 2000–2005 due to Java’s rise, concurrent hardware shifts, and debates about threading and safety, later revitalized by modern standards and tooling.
  • The language’s design philosophy balances power and safety, with ongoing debates about scope, templates, and the future of standardization.
  • C++ remains deeply embedded across industries (gaming, finance, CERN research, embedded systems), underscoring its role as a universal tool for performance-critical software.

Who Is This For?

Essential viewing for software engineers and language designers curious about how C++ became the ubiquitous, high-performance backbone of modern computing—and why standardization and community input mattered so much.

Notable Quotes

""C++ is controlled by a committee.""
Highlights the governance model of the language’s development.
""C with classes""
Origins of C++ as an evolution of an existing idea.
""The STL came at like 10,000 meters and everybody... we actually can't compete""
Alex Stepanov’s STL as a pivotal moment for the language.
""Being an overnight success takes decades""
Reflection on C++’s slow, steady adoption.
""C++ is for demanding programming problems""
Scott Meyers’ line used to frame C++’s role in complex systems.

Questions This Video Answers

  • How did CFront influence the adoption of C++ in the 1980s?
  • What is the STL and why did it matter for C++ standardization?
  • Why did C++ face a so-called second winter around 2000–2005?
  • How did ANSI/ISO standardization shape C++'s future?
  • What are the key features introduced in C++11/14/17/20+ and how did they change programming practice?
C++CFrontBell LabsAT&TBjarne StroustrupANSI/ISO StandardSTLAlex StepanovStandard Template LibraryTemplates and namespaces in C++11/14/23? ( STL context )
Full Transcript
My idea was very simple. A low-level language  to manipulate hardware and something called   Simula. A lot of people did not think that C++  was right. I look at C++ and I find it scary.   It underlies many of the biggest systems in the  world. If you make a small incompatible change,   you can annoy a couple of hundred thousand people.  C++ is controlled by a committee. C++ feels like   a new language. And they may look at C++ and  they say why. C++ is more than 40 years old. The world was very different from  today. In a way, a much simpler world,   in many ways a more exciting world. There's a  lot of stuff that did not exist and was just   beginning. We just simply cannot write all the  software that needs to be written. Colorization,   syntax highlighting, code navigation,  statement completion, refactorings. None   of that stuff existed back then. Some machines  only had like lineoriented editors, you know,   so if you want to modify something in a line,  you had to retype the whole line. It was just   really primitive. A lot of people programmed  in BASIC, but to do anything really advanced,   you had to program in assembly language. And  that assembly language is different for every   different kind of chip that each computer had.  Eventually computers evolved to what we have now.   This sequence of bytes. With an 18-bit address  the system can accommodate 256k bytes. There was   a need for larger and more complex programs. So  new languages appeared and in that milieu came   C++. Hello, I'm Bjarne Stroustrup. As a language  that promised great abstraction on top of a very   efficient bed set by by the C language. C++ did  not become as this one perfect thing coming out   of Bjarne's mind. It started as a very small thing  called C with Classes. At Bell Labs, about 50% of   the people are actually producing software. Bjarne  probably arrived in roughly 1979 or 80. I don't   I don't know what the queen is doing there, but  this is a bunch of PhD students in Cambridge.   I was at Cambridge and there was some contact with  Bell Labs. Some of the people from the computer   lab in Cambridge had gone there. And one was  back, at some point he said, "Well, if you need a   job next year, give us a buzz". So, I did. I flew  over to the States. I was met by Sandy Fraser. And   Sandy said, "Well, sit down, Bjarne. I've got some  bad news. We don't have any jobs". I just crossed   the Atlantic. Anyway, I gave a talk. Then they  changed their mind. And so I was there for the   next 24 years. Bell Labs was part of AT&T. At the  time, AT&T was a very large company, probably the   largest company in the country. Almost a million  people work for Bell at some 27,000 different   locations across the country. Three out of four  phones in the country are Bell. And so that meant   they had an essentially guaranteed revenue stream.  They knew how much money they were going to have   and they peeled off a little tiny slice of that  and used that to fund Bell Labs whose job was to   do things to improve telephone service. Its job  is to design and develop the products, systems,   and services to keep communications purring. I was  astonished when I came to the United States. You   could call from New York to California and there  was absolutely no noise on the line. Because there   were so many people they could take a very very  broad view of what it meant to improve telephone   service. So anything that somebody wanted to  work on, arguably that was fine. A lot of the   textbooks are written by people from there, they  built the C language, the Unix operating system,   a lot of map drawing software, a lot of graphics  software, chips that later became digital cameras,   everything was going on there. It was the place  to be, right, if you wanted to do anything in   computing, I felt I had to do something reasonably  spectacular because that was what other people had   been doing. And so I decided I was going to build  a distributed system based on Unix. I set off   trying to figure out how to separate the various  services of the kernel into separate modules and   to think about how users could talk to each other  through this kind of stuff. I realized I couldn't   write the code I wanted because I needed to be  able to manipulate the hardware. You have to   write device drivers, network interfaces. You  have to implement memory managers, processes,   things like that. You needed a low-level language.  Along the way, in the course of the Unix system   development, Dennis Richie created the C language.  It came out of the department at Bell Labs I was   in. Dennis Ritchie and Brian Kernighan were down  the corridor. So C was the obvious one to pick.   It lets you avoid the details of the machine  when you want to, but when you need to,   you can control everything. It was very well  designed for system programming kinds of things,   like writing the tools that themselves are used  by programmers. C was a very great language   which fully described the machine. One thing  that C didn't do was make it really easy to   control what was going on in a program as a  program got big. We developed software that   was unbelievably big in terms of the number of  users or the performance demands on it. You know,   everybody in the country is picking up the bone.  That's an AT&T program that you were talking to.   C was not in some ways an ideal tool for that.  For a distributed system, you really really   have to be able to say this piece of software  talks to that piece of software over there.   How does it talk to the other one? What protocols  do you use? And where is it? You can't just have   a a rat's nest of pointers into memory because  they will probably not share memory. So I needed   a high level language to be able to say this is a  module, this is a communication channel and such. In Aarhus and Cambridge, I'd used Simula, the  original object-oriented programming language,   and I really liked it. It had strong type safety.  It had the ability to build your own types,   classes. It had class hierarchies. And so that  gives you a way to take something that could be   potentially very big amorphous unstructured thing  and put a lot more order and structure on it. It   was also far too slow and used too many resources,  too much memory. So I decided I was going to put   the basic functionality from Simula into C. So  that was why what I did was called C with Classes. I spent the next almost 40 years trying to get to  the point where C++ can do everything that Simula   and C could do. That quest is probably what made  C++ a success because that was always a challenge. Here we have an old picture  of Bjarne and Kristen Nygaard.   Does it say Uppsala something? I don't  know. If you have a digital version of it,   then you probably could. I have a digital  version somewhere. Yeah. Yeah. Yeah. Yeah. I didn't know you knew SNOBOL. Yes. Yes.  Hardly anybody knows that language. Oh,   this was it. This was it. This is actually a paper carbon thing put up  at a conference because Bjarne didn't attend   in person. So they had some booths presenting C++  and then they had put this one up. You could go   over there and they could take a picture of you  and then they would uh make this thing. Yeah,   it's a cardboard copy of me. And up here  I have several of Bjarne's books also.   He used to send me a copy whenever he wrote a  book, but recently he hasn't done it. Oh dear. I built C with Classes as a pre-processor to C,   so that I could write the code I wanted. It was  sort of a success. other people started using it. Bjarne Stroustrup was working literally down  the hall from me and I knew vaguely that he   was working on something that was trying to  make C a more abstract language to program in.   So I started learning that and talking to him  about things he was working on in that area   and eventually we wound up working quite  closely together for a number of years. So, this is the Bell Labs building at Murray Hill,  um, where Bjarne and I worked for quite a while,   and now it's in the process of being cleared out,  but it's where a lot of the early C++ work was   done. And there were a bunch of real interesting  characters. You put a lot of highly intelligent   people together in one place, and all kinds of  things happen, some of which you can control, and   others of which you can't. I realized one day that  C with Classes just wasn't a significant enough   jump from C to be viable. That it was a medium  kind of success and it would never be anymore. I thought I had just two choices. I could drop  C with Classes or I could make it much better.   So I spent a year building a compiler and  improving the language the way you could   only do if you have a compiler. So originally  Bjarne just wrote CFront. Instead of having a   traditional backend that compiled down to  machine code, it compiled to C code. So if   somebody wanted to use C++, they didn't have to  buy into a whole new way of doing business. They   didn't have to buy into a whole infrastructure  of other stuff. They didn't have to write new   libraries. All of that was completely available  because C++ was just translated to C. That was   done in 83. And it's a real compiler. It  did lexical analysis, syntax analysis,   type checking, generating a tree representation  and then did optimizations on that tree. A lot of the input to the design  of C with Classes, and later C++,   came from people dealing with systems programming,  dealing with distributed systems, dealing... I   guess one thing that is mildly interesting is the  question where did the name C++ come from. Cfront:   not very useful and that's an implementation, C  with classes: a bit dated. So I asked my friends   to make suggestions and I got a list of about  20-25 suggested names and then I sort of liked   C++. It was bit weird as a name but makes  semantic sense because the ++ operator is   part of the C programming language. It basically  means increment and so C++ is an increment on C.   It really should have been  called ++C for semantic reasons,   but I took pity on people doing indexes  and referring to it, so it became C++. AT&T's famous Bell Labs in New Jersey, home  of countless technological innovations,   but mostly in the field of communications. For up  until last year, AT&T was the phone company. But   now with deregulation and divestiture, AT&T is  free to move into other ventures. And one of its   first and biggest new ventures is the move into  computers. AT&T decided that they were going to be   in the software business. And this was, I think,  one of the truly dumb ideas of the company, but   that's okay. Today, AT&T offers an entire family  of computers based on leading edge technology.   One of the things they were going to do was to  sell a C++ compiler. And in the days we're talking   about things like compilers were piggybacked along  with hardware. You got your compiler from IBM,   you got your compiler from HP, you got your  compiler from Sun, you would get your AT&T   hardware compiler from AT&T. There were a  few companies that were actually genuinely   interested in and paid for C++ compiler and there  was a development group which worked on a call it   an industrial strength or production quality C++  compiler. That didn't work too well because they   couldn't actually deliver a good compiler. There  was only 14 of them. But I got peace and quiet to   do my work. The hardware didn't sell well enough.  So, a lot of that software ended up not being ever   commercially viable. And that was what allowed  me to basically give away early implementations   of C++. They weren't free. You had to pay for the  tape it was on. And if you had a commercial use   of it, they wanted some money, too, but not very  much. I'd like to tell a bit about C++, why the   language looks like it does, and present some of  the main techniques that the language was designed   to support. I was giving a talk for Bell Labs for  a movie. They wanted me to to to read out from   a prompter and a third of the way into the talk,  the prompter broke down. But I really didn't like   it. So I carried on blind for the next two thirds.  And each time I had to think about what to say. I   grabbed up and pulled the bird to give me time to  think about what to say next. And so that video   became known as the goose video. And this is it.  At that time I was doing the documentation. I was   doing the compiler. I was doing the language  implementation and I was the help desk. Having all of these balls in  the air, at the same time,   led to significant improvements. Bjarne  designed the language to make programming   more pleasant for the prof- the serious  programmer. I always thought it was   professional. I went and looked it up. It's in  the preface to his first edition of the book. C++ allows you to think abstractly about the  problem that you're trying to solve. You don't   have to think about what's the computer doing  all the time. And you get performance that is   commensurate with, not identical but commensurate  with, languages like C. It really did make   programming more fun because you could get more  done more quickly. As CFront became more popular,   it became necessary to have a user interface  organization so that Bjarne didn't have to   send out compilers to everyone and fix every  bug that got reported and deal with everything   himself. It wasn't getting any investment  by the way. No? No. On language proper or on   the compiler there were, you know, maybe five  people. Not a major investment for AT&T. No,   it was a very small effort. Originally, it was  literally one person. Bjarne was everything. We   should have had a bigger team, but we never  did cause I think AT&T just really didn't   know what they were doing. And at the time we  were all, why don't they give us the staff we   need? In retrospect, as a sort of more mature,  not in the middle of it, they were all so lost   themselves. They're just figuring out how to be  in the competitive world. And they didn't do a   very good job of it. Actually, AT&T did give  me some money once to do some organization,   $5,000 to be used over 3 years for popularizing  a general purpose programming language.   doesn't make any sense. I gave a party  at the first C++ conference. That was it. When I think back over our years of C++, I always  thought it would be successful because people had   this response to C++ that made it seem like  they wanted to use this language. And it just   was a matter of growing as the community grew  and adding new applications as libraries were   made available. It wasn't an overnight success.  Yeah, it was not an overnight success. And I   remember Bjarne once said, "Being an overnight  success takes decades". Right. Right. Andy and   Barbara did something that really good developers  rarely did in those days. They tested. It was a   buggy product for a long time. We were making a  release. 2.0 was a huge release. It was intended   to fix some of the long-standing reliability  and, you know, just plain old bug issues that the   compiler had, but it was really going to be the  commercial release. After CFront 2.0 was shipped,   I discovered that there was a bug in  how it handled multiple inheritance. So, we had this horrible problem that there was  a major feature that we had promised. Come on.   There we go. That we were delivering for the  first time and was broken in a way that if it   got out into the field, it would never be possible  to fix it. Compatibility in a programming language   is crucially important. Once people have existing  code, they don't want to have to change the code   just because you found you wanted to change  something in the language. So we used to joke   about compatibility was the C word because it was  dominant. This was just a completely horrendous   state of affairs. Totally unacceptable. We were  able to scramble a fix in a few days. Our software   distributed at the time out of a tape library.  We sent them a tape. They duplicated the tape   and then they distributed it to the customers.  But then we had to deal with the problem of what   today is called slipstreaming. Every once in a  while, someone will ship a system that's just   completely broken and they'll come out with a new  one and give it the same release number and now   all of a sudden someone files a bug report. You  ask which version they're running and they say,   "Oh, we're running version 2.0." And you ask, "Was  this version 2.0 or version 2.0? The one shipped   before such and such a date or the one shipped  after. Well, how do I tell?". Well, of course, a   tape has a label so that you can tell one release  from another release. Well, we couldn't call it   2.0.1 because that would be egg on our faces,  we couldn't even get the first release out. So,   instead of shipping version 2.0, we shipped  version 2.0.0, which we all affectionately   referred to as 2.Oh.Oh. That was probably one  of the tensest technical problems that we came   up on because if that had gotten out there then I  don't know what we what we would have done. Uh oh. C++ had kind of a bifurcated existence  within AT&T's overall corporate world.   A huge part of the support for C++ came from  internal development groups. And in fact,   a huge reason C++ was ever given the resources,  minimal as they were, was because management   understood that it would make programmers  inside AT&T much more productive themselves.   They'd write better code faster with smaller  teams. What's not to like? But a programming   language is never going to be successful  if it's captive to a single corporation.   Programmers wouldn't come in knowing  the language. We would be the only ones   writing the software itself, developing  libraries, all kinds of overheads. So,   it had to be external as well as internal.  People was starting using it outside, but   it was quite small. This is well before the web  existed, but there was this thing called Usenet. Usenet is a sort of a glorified bulk email  system. There was a whole category of groups for   programming languages comp.lang.c, comp.lang.c++,  comp.lang.fortran etc. So that's certainly one way   in which information got around. There was a huge  community of computer magazines at the time. There   was in particular one called Byte magazine which,  I mean, it was literally the size of a phone book. That was the Bible. that was the  source of knowledge. And C++ was   in the magazines. We would see that and  were like, we ought to try that sometime. What I have here is an issue of the Danish PC  World magazine from February of 1989. Here's this   article with Bjarne and I. I look like I'm fresh  out of high school, which is not half untrue,   uh I think I was 28 years old. One great thing  that Bjarne has done back then in the late 80s was   to give talks at any company and any organization  that would have him and he relentlessly worked on   proselytising the language. That was a very  successful campaign on his side. We saw this   use of C++ going up like that. And the thing I'm  somewhat proud of was there was no advertising   campaign. No, no, no sugar daddy trying to push  this out in the world. It just spread. The fact   that there was this notion that you had data  together with functions and a whole new way of   thinking about programs and programming. All of  that was enabled by C++ to be honest. And back   in the 90s, it was so much emulation and so much  energy and so much enthusiasm about the language.   Writing C++ applications. The design and evolution  of C++. C with classes and later with C++. C++,   C++, C++, C++, C++ code, C++. The downside  is that C++ was all over the place. There   was different implementations. There's different  standards. Things were really incompatible. There   were multiple implementations of of C++, right?  Many in the early times. Borland wanted one,   Microsoft wanted one, IBM wanted one,  Sun wanted one and they just built it.   Each vendor started implementing their idea of  templates in particular and they were pretty   divergent. They worked in different ways and  they had different strengths and weaknesses,   different trade-offs because of design choices,  but they weren't compatible. Every company would   say, "I will make it better." and things  will diverge. So if you write code for one,   it wouldn't compile on the other, there will  be terrible, terrible situation and eventually   language will collapse. Obviously there's a strong  desire for there to be compatibility between them. One day, a couple of people turn up in my  office and say they represent IBM, HP and Sun,   which are the three biggest computer manufacturers  and software deliverers in the world at the time.   They basically said, "Bjarne, you want to  standardize C++ under the ANSI rules." The   American National Standard that later became  ISO. A standard is a contract between a person   writing C++ code and an implementation of C++.  So when you write a certain piece of code,   you have a guarantee that it will do whatever the  contract ie. standard says. Obviously, I said,   "No, I can't do that. It's too early. I'm doing  all of these experiments and it's not ready. No,   Bjarne, you don't get it. You're going to do that  because otherwise we will do it and you know we're   going to mess up." Oh. And this went on for about  an hour and basically twisting my arm. Ow. Ow. Ow.   And they're saying things like, "Of course, we  trust you, but we can't trust AT&T. Sometimes   we compete with AT&T." Yes, he was forced, but  it was something which is actually very good for   the language and for him and for the world. The  standards are not necessarily good or correct,   but they're standards. It's why do we need  traffic laws? Traffic laws are very often   idiotic but we have to obey them otherwise we  will die. And so in the end, I said, yes okay   I'll help standardize C++ under ANSI rules  just give me one year before we start that   because I have to write the document that  was the foundation of the standardization. Bjarne shipped the Annotated Reference Manual,  what we call the ARM. This was sort of the input   into the standardization effort which were to add  templates, exceptions and and namespaces, things   like that. And shortly thereafter, there was  an ISO standards committee established. Clearly   standardization is is not easy. People have  to agree and it's especially difficult because   the language is still evolving. At the time  the standards committee was almost manageable.   There was only about 100-120 people involved from  all over the world and all the major companies.   This is a collection of pretty much random  people. Many of people who represent countries   just nominate themselves. The guy who represented  Australia also represented New Zealand, because he   wrote them a letter saying I represent Australia,  I have to travel there anyways. I could represent   you guys. And they said, "Oh, yeah, fine, good.  We'll have representatives there." So, he had two   voices. He could outvote United States. I believe  it was Winston Churchill saying that democracy is   the worst way to organize a country, except  for all the others. There's value in having a   consensus, especially when it's something that now  multiple vendors have to agree on and implement. The standards committee was happily going on. And then along comes this fire  branch named Alexander Stepanov. A dozen of us were at a tapas restaurant. Not  a topless restaurant, a tapas restaurant. Alex   gestures to one of the servers and says, "I would  like four bottles of red wine, please." Stella,   come. "One for all these people and the other  three for me". It cracked up everybody at the   table. That memory really represents Alex  for me. Just a a guy of immense enthusiasm   and verve. The STL, the Standard Template  Library was one of these major inventions   from Alex Stepanov. C++ did not yet have a  standard library before STL. Everybody had their   own array class and their own like list and their  own trees and containers and ways to do algorithms   and ways to do things and whatnot. They  were competing at this level of Nirvana,   right? And they're all comparable to each other  and it it was unclear which is better. And STL   came at like 10,000 meters and everybody here  was we actually we can't compete because we're   in a different not in a different category in  different game. Okay? Much inferior. I realized   that algorithms are affiliated somehow with  mathematical theories. His thing was to design   runtime libraries that would make it possible  to reason formally about data structures in   programs. The central idea of STL is to write  algorithms which will work on all applicable   data structures and assure that every data  structure could populate any other data structure. We talked at some point about what he had  accomplished and what this library looked   like and I thought this is something that's  completely revolutionary. Maybe we should be   rethinking what we're going to do. And  I spoke to a few people about that and   was told we have a timetable. It's really  too late. We can't do anything about it.   So what I thought was, well, the one thing I  can do is to make sure that Alex gets a fair   hearing. I know we have a timetable, but I  want you to hear what this guy has to say.   So I gave a talk entitled The Science of C++  Programming. I don't think anybody actually   understood what I was saying, but it was  very well received. The committee said,   "We're way too late in the cycle. This is way too  big a proposal. Look at Look at this. It's wow.   This is pretty good stuff. We really need this".  He gave such an electrifying presentation. It was   just so brilliant. I got a standing ovation once  in my lifetime. He's a splendid rabble rouser   when he's into some idea. He can explain it very  well. And then Andrew sent me a message saying,   "Why don't you submit a proposal for standard  library in C++?" I answered, "Andy, you're crazy."   Because I thought that the chances of it being  successful was zero. But my collaborator Meng   Lee convinced me that instead of wasting my life  gossiping around, I would do much better if I try. Amazingly enough, it was not rejected offhand.  And at that point, I have to say that Bjarne,   who still didn't quite understand what I was  trying to do, but he became convinced that it   was a very promising direction. I could use the  same algorithm for reducing n elements together   into one. And then I realized one very, very  simple thing. The fact is that both plus and   times and min and max are associative. It looked  really weird, I thought. But over the years,   I built up a list of criteria for what would  make a good foundational library. And when I   checked this weird stuff that I got from Alex,  it checked I think 11 out of 12 of my points. No   other library design I'd seen could do that.  And he started working with me very closely. My contribution was partly to  curb over-enthusiasm from Alex,   partly to provide the language facilities that  allowed him to do what he wanted to do. To great   degree this part was a collaboration of Bjarne  as a language designer and me as a algorithms   and data structures guy. And then convincing the  committee took a lot of discussion and examples.   We resubmitted the revised proposal. We  didn't believe it would succeed because   all the powerful companies such as Microsoft,  at that time the dominant company in software,   were very opposed to it. The committee  was convinced it was too complicated   and too difficult to implement. I have to give  great credit to Bjarne. People would say, "Oh,   I want such and such function." And he would tell  me, "Oh, put such and such function there." and   he was very successful and I don't think that  STL would become a success without his support. They voted like, I think 80% of the  committee suddenly voted for it. Of course,   Microsoft didn't and other major players  in the library world voted against,   but they were a minority and STL became part of  the standard. When I first saw the STL in 1994,   it blew my mind. It was order in chaos. It was  rigor in a mess. The STL came and established   the one way to define algorithms, the one way  to define containers, the one way.. And it was   superior in so many ways and so absolutely  visibly, undeniably, essentially everybody's   like well we better get with the program. The  reception of STL was quite enthusiastic. It's   not that people knew what to do with it nor did  they quite understood how it worked but it was   enthusiastic. It was new. It was very unusual  at that time. Oh, I think that it has had at   least as much of an effect on how people program  as the existence of C++ itself. I immediately   thought this is huge for C++. This is going to  carry C++ into the next millennium. And it did. Let's see if I can find it. The words that we came  up with were Studebaker and Vivisectionist. And   so the idea is you try to get those words into the  discussion and you get extra points if you can get   them both into the same paragraph without people  suspecting. And Bjarne said, "Well, let's see if   we can get those into the standard, you'll find  those there". And not to be outdone, I said, let's   see if I can get a limerick into the description.  And it's in here somewhere. Let me see if I can   find it. It would be page two, one. When writing  a specialization, be careful about its location   or to make it compile will be such a trial as to  kindle its self-immolation. Studaker Studebaker   and Vivisectionist. Those were the code words. Those were the words that we had to try to get into the standard somewhere. Nobody independently noticed it that you know of did they? Not that I know of. - Who's reading that? - It's really buried. It is really buried. C++ got standardized in November 1997. Where we  added several major fundamental features: name   spaces, exceptions, templates and the Standard  Template Library. LLVM was really fortunate to   start after that. What we could do is we could say  okay well this is the language as it's supposed to   be now, we didn't have the compatibility problems,  we didn't have to migrate old code, we could just   use the new features and use the language as it  was intended to be used. The people who came to   me and said they wanted standardization were  very right. I think it was a huge contributor   to the success of the language, no standardization  would have meant the language would have forever   been like the wild west, serious companies  would not have adopted it for for their use. CERN is an international organization funded  by its member states and C++ has been in use   here at CERN from at least the early '90s. In  high energy physics software and computing,   which is the field I'm mostly expert of, C++  was a real paradigm shift. Before the language   was Fortran and it did quite of a good job. I  mean the results are there to to testify this,   but when C++ was on the rise, I think at the  beginning of the '90s, then people realized that   the language really offered many assets. And lots  of libraries and existing code was ported to C++,   and even reinvented for C++ because the paradigms  behind the two languages are totally different. They have data analysis software,  process control software and   visualization software and all of that  plays straight into C++ strengths. It was spreading by itself. Some company tries it,   then the next company tries it.  By, say, 2000 it was everywhere In game development a lot of people were  aware of C++. There's already video cards now,   taking care of like that low-level stuff, so it  kind of pulls people from C and assembly up to C++   and APIs. There was like a focus change there. So  I run the game on the PC and develop it in Unreal.   Everything else is always in Mac OS. C++ is really  great for games because of how you can organize   everything in your game. And C++ does a lot more  than that. But in gamedev, people kind of restrict   themselves to that. So they have full control  over the amount of time that's being spent,   you know, per cycle. You have to have all the  cycles you can. Don't jump into the runtime. It was used early on surprisingly in the financial  industry. Wall Street was just getting into doing   program trading and having computerized support  for the traders. Rewind to the to late '90s, early   2000s. What does trading look like? You imagine  like sort of pit traders yelling at each other,   having a human in the loop clicking a button  to ensure a trade gets executed. It was very   inefficient. Some economists think the days of  face-to-face trading are numbered. It's known as   highfrequency trading and it was the web culture  taking over what the stock exchanges had done. So,   HRT was founded with the idea of like, okay,  there there's really some automation that can   happen here. Little differences in performance  can make big differences in economic viability   and therefore performance matters in many cases  more than you might think. Latency is really   important in trading. Microsconds matter in this  space and C++ is a language that lets you achieve   that latency without really needing to micro  optimize every line of code. I'll use a quote   from my friend Scott Meyers: C++ is for demanding  programming problems. I still have abstraction,   but I can make full use of hardware. And it turns  out that lights up a lot of different industries. It's described as nothing short of breathtaking,  a points drop never before seen on the US market.   2000 came, the dot com crash, and with it a lot  of the tech companies and the tech industry,   but also there was the growth of Java.  This week on the computer chronicles,   the secrets of Java. Today we're going to find  out why Java, the software programming language,   is such a big deal. Java came very heavily  marketed by Sun Microsystems as the language of   the future and the language of the internet. What  will be possible tomorrow? You decide, because   Java is everywhere. There was executives from Sun,  that was going around saying Java will kill C++,   absolutely kill C++ in 2 years. I remember I had  managers who were like I'm not sure what it is   exactly but we got to get into this Java stuff,  because it's awesome and everybody loves it and   you know that kind of stuff. Java is an explicit  reaction to the complexity of C++, the perceived   complexity at least. And so Java was an attempt  to get some of the same benefits that you get   particularly from object-oriented programming, but  in a form that was not so complicated. That was   not favorable for C++. And that combination  of events ignited or started, if you wish,   the C++ winter of the early 2000s. It was not  just stagnation that happened around 2000-2005.   It was.. decline. There was one more factor that  contributed which was the computers were getting   faster at an exponential rate. Computers started  temporarily being more powerful than the software   being run especially on singlethreaded code. Right  now it's hard to imagine that you would have a   processor that doubles the frequency every couple  of years but that was the case back then. And we   just thought, "Oh yeah, computing is just going to  be getting getting faster and faster indefinitely.   We better write bloated operating systems, and  stuff like that, to soak up the power". Like   this was actually a way some people thought.  Most people who design programming languages,   and especially back then, say: performance doesn't  matter. Machines are getting so fast. We'll just   wait a year and then it'll be fast enough. So  this combination of factors led to an sort of   an exuberance of inefficient programming  languages that played out poorly for C++. At that time, at Microsoft, we really  had two distinct groups of programmers.   We had the C++ programmers and that was all  about power and expressiveness. And then we   had an enormous cohort of Visual Basic programmers  which was a very different crowd you know because   we were talking about rapid application  development. You had like a form designer   where you could just drag and drop buttons and  text boxes and a lot of enterprise software was   being built with that. But when it came time to  deploy it you kind of wanted better performance.   So we were seeing this phenomenon of people  writing the app twice. First they prototyped   it in Visual Basic and then when it came time  to actually deploy it they would go rewrite   it with a different set of programmers in C++  with a different framework, you know like for   your windowing system and it was not a super  efficient way of getting to your software. So there was this sort of latent desire to have  a language that had the ease of use of Visual   Basic but the power and expressiveness of C++,  and that's what we set out to build with C#. There was no shortage of people telling me that I  should be afraid. I can't really count the number   of times I hear comments like, "Uh, oh, you mean  C++ is still being used?" Or, "Why would you want   to use C++?" A lot of this talk of C++ is dying  a slow death". "I'm famously not a huge fan of   C++". "We got Java, which is basically just a  better C++". "Is C++ dying"? Everyone wants it   to be a war. It was never a war, I don't think.  People think that every language designer wants   their programming language to be the the one  and only. To me, that seemed a very strange,   weird, and arrogant view. Programming languages in  general, they are tools that allow us programmers,   developers to express our ideas in a way that  machines can execute. So understandably people get   strong opinions about how you're telling them to  express their ideas. It does become religious for   a lot of people, yes. I never had this idea that  C++ should be the only language or that it could   be the best language for everybody and everything.  I don't think any language can do that.   Every language that is successful in  the world today has its place and is   there for a reason and is affinitized  with a certain kind of programming. Yes,   there's a bit of overlap between C++ and C#, but  it's not all that large. And so it isn't really a   war. It's more of a complimentary situation. You  know, we serve different communities. And sure,   you could try to write your enterprise apps in  C++ and have your enterprise programmers worry   about memory management and and dangling  pointers or whatever. Or you could try   to write operating systems, low-level embedded  systems in C#, but they're poor fits for that.   There's a right place for for everything.  And well, most Java compilers are C++, so... 2004 something abruptly came to an end which is  the frequency scaling of processors. Around that   time I started hearing rumblings from senior  architects at work at Microsoft who were   noticing hardware starting to slow down. There's  diminishing returns. They're not able to ramp up   the instruction level parallelism as much anymore.  They're starting to hit the performance per watt   limits of a single core. For the first time in 50  years, which is the whole history of computing,   mainstream hardware is no longer a Von Newman  machine. Everything is changing underneath us,   and a lot of people I think are still ignoring  the impact of that. Everything is pointing to   that the world is going parallel. And  I started realizing this doesn't seem   to be something I read about in the magazine.  I should probably write something about this. If you wanted to have your programs run faster,  you couldn't just wait for a year and have the   hardware save you. Which meant C++ was again a  good offer in town for an efficient programming   language. That and that C++ was now good  enough to be used in embedded systems.   There's many more embedded systems than there  are sort of computers with screens like that.   I mean we have two of them sitting  right there. So after 2004 there was   an increase in adoption of C++ but there  was an odd factor, which in my opinion,   contributed to the stagnation of the language  during that time, which was the leadership of   C++ was complacent. And I wrote a email  that became famous of sorts which title   was "C++ multi-threading: is the standardization  committee listening" and it was about multiple   threads because multiple CPUs were coming out and  threading was a way to make programs go faster,   but C++ had nothing about threading at the  time. Didn't even mention it in the standard. We wanted to deal with concurrency and we  wanted to adopt something that was rather   similar to Java's model. It got de facto vetoed  by IBM and Sun because they pointed out that if   we ran that way, their Java implementations would  half in speed because they couldn't use all the   interesting, dirty tricks they were doing with  C++. We actually had to work for another 2 years   coming up with something that was more advanced,  more complicated. You need to have the tools that   allow developers to write very quickly, to express  ideas, to get their stuff done. And for a long   time, C++ didn't have that kind of tooling. Herb  was the one who said, you know, we got to create   a new standard, address multi-threading, address  these issues in the language, and that changed   everything. Andre, hey, how you doing? Are you all  ready for tonight? I will. Oh, good. I was born   ready. I know you were. I know you were. Hey, good  to see you. So, looking forward to your keynote,   by the way. Thank you. Hey, Matt. Good to  see you. ISO calls the role that I've had the   convenor. The Convenor. The role of the convenor  is to convene meetings, say when and where we're   going to meet. It's administrative. And to get  consensus. Consensus does not mean unanimity.   It means everybody has been heard and then the  committee makes a decision that everybody can   live with. And so in 2002 we started work on C++0X  because it was intended to ship in like 07-08-09,   somewhere around there. Currently the goal  is that x is not hex, that we're going to   be done next year in 2008. It took 13 years  because when you get close to the release,   people say this feature is so important, you  must delay the standard to get this feature in.   And then you delay the standard and then somebody  else comes with a new facility that really should   be pushed. Herb really pushed C++ from complacency  to literally to where it is today. I just started   talking to the the main subgroup chairs and  said like why are we delaying? The community is   wondering if we're ever going to ship a standard  again because we already are several years over.   We don't need to wait another two years. Aren't  we ready to ship this now? And enough people said,   "You know what? Yeah, I guess we're ready to ship  this now." Herb's a great guy. You need different   kind of people to do different things. For  starters he's a much better organizer than I am.   One of the things that Herb did was to also  popularize the work that the committee is   doing. When C++11 did ship, a few years  later than we thought, but then did ship,   it was at a great moment in time because at the  same time as the standard made C++ much easier   to use and safer than it had been before,  there was a renewed realization of getting   the most out of our hardware, which is what C++  is good at. That was a real renaissance moment. C++11 is completely different. Yeah, they  share syntax, but the way you think about   problems is very different. With 13 years  from the first to the second standard,   there's a lot of new stuff coming in. We had  move semantics. We had concurrency, which was   work by Hans Boehm and and his friends.  That was the first language, you know,   in the C family that formally said something  about threading. If you only took those two,   it's already big. At the time here at CERN, we  were evolving our data processing frameworks   that relied on event parallelism into something  that was more suited for the multicore CPUs that   were appearing on the market and became the  the facto standard, and having the obligation   to rethink our way of processing data with  parallelism at its foundation was easier   thanks to the tools that C++ provided out of the  box to us. Things like auto, range-based for loop,   smart pointers. That lambda was cool when you  added that, but the garbage collection was not   cool when you added that. It also started the  whole constexpr thing, which is a way of getting   certain kinds of evaluation done at compile  time, in a way that's easily expressable in   the language. These are all things that were like  a major refreshing upgrade where it's still C++,   but man, it feels like I'm writing a new language.  Maybe I should dust off my C++ coding skills again   and take a look at it again and put that C# in  the drawer for a while. You use the right tool   for the right job. After that, we had lots of  discussions and I spent about two years trying   to convince the committee, you know, we really  should go to timebased releases. Referred to as   the train model. The train leaves the station  at this time. If you don't make that train,   you don't stop the train. You wait for the next  train to leave the station. That way, the whole   industry knows we're going to release and we never  go dark again or they wonder if we're ever going   to release a standard again. If I'd had my way, we  would have shipped every two years. The committee   said, "No, that's too often. Let's do every three  years." And I was happy to take that as a win. If you're still stuck in 98 either mindset  or compilers, upgrade. It's the best way of   getting ready for the future is actually at least  get to the present. C++14 was a minor kind of bug   fixes release. It basically put in place the  things we couldn't get into C++11. And today,   I'm going to be talking about C++ 17. These are  the 26 features we're going to be talking about   today. On one hand, I think the C++17 was like  a really high peak in terms of the capabilities   they enabled but ever since then they've been  adding more features. So let's have a look at the   agenda for today. There's quite a lot. So I'll  be giving an overview of all the new language   and standard library features coming with C++23.  There's a huge community and a huge committee of   people that are adding new things to C++. And so  one of the big questions C++ has to wrestle with   today is like where does it end? The ways the  C++ has evolved was by essentially like we have   this language we add something on top of what's  what's existing and that's your new armor that   you're going to roll with right and on top of  that there's more and more and more and more.   How did you manage to add this many things to  the language and 99% of them are critically   broken? It's almost like a winning streak. Well,  I guess it's a losing streak. C++ is absolutely   atrocious. First of all, there's like 20 different  ways to initialize a variable. It's an infinite   Gordion knot of unfathomable complexity. C++  was always a fairly complex language and it has   only gotten more complex over time. And this is  not unknown. And that I think is the challenge,   right? The standards committee now is a  organization with lots of people. Last   time I checked there was 527 members. How you  get 527 members to agree on something, I don't   know. We have as many committees and committee  chairs as we had members when we started. And   this worries me. "I had one person describe  the committee as the Real Housewives of C++". "Do you agree with that?". Whenever you  get lots of people discussing things that   they're very passionate about,  you're going to get a lot of... conflict. I think if we didn't have any drama  that we wouldn't have people that actually care   about what they're doing. One of the problems  with committees is that you have a tragedy of   the comets. It's very easy, relatively speaking,  for people to add things. And so, it's not that   any one of these ideas is bad, but adding more  and more and more and more and more conceptually   is bad. You kind of have to find a balance between  having too many opinions and also having opinions   that represent the community. Well, we do the  best that we can really. I think we're constantly   trying to bring in more knowledge, more people,  more experience, but yeah, with that you simply   get more people and it becomes even harder to  agree on any given thing. I'm fairly optimistic   still. There's a lot of really smart people  working on C++. I think that the intentions are   good, but this is one of the challenges that the  C++ community struggles with. In a lot of ways, it   becomes a game of knowing when to say no. There's  no shortage of things you could add to a language.   But one thing you learn as a language designer,  you can add, but you can never take away. Welcome to a session that I did not  know I was going to give until I   foolishly volunteered about a week  ago. Any improvement that you make   in a language like C++ has an outsize  impact on the world, an outsize benefit   to our society and civilization because so  much of our infrastructure is built on C++. We can go and have a look at some of the stuff  they're building, because one of the reasons   I go is that to see what people do with the  language, and everything here has C++ somewhere,   quite often well hidden underneath everything  else, that includes JavaScript and Python and   things like that. I was asked recently  about where C++ was used. The simplest   and most accurate answer is roughly everywhere.  It touches most people on Earth or at least half   of the people on Earth every day. "Would you want  to try the VR or?". "Um sure". It's in your camera   there. It's in the electricity generation,  wind turbines, rice cookers, bowling alleys,   Hollywood movies, cars, finance. It's all over  the place. So, wow. So, it's going to uh it's   going to be a different world right now. Oh, I  see. The steering wheel is in the wrong place.   On with the touchcreen if you want to. Last time  I tried this, I got burned by Smaug. Okay. You   have to interact with with people, you can't  do language design language development just   in isolation if you do it in isolation that's how  you come to solve the wrong problems and that's   useless or worse. To give a sense of the scale  of HRT's C++ footprint, we currently have over   a million lines of C++ code in our codebase across  15,000 files. Our repository has had about 84,000   commits just this year, 2025 alone, across around  800 developers that are actively contributing. For games, nowadays, C++ is kind of divided by the  ecosystem that you're working in. So, right now,   there's a lot of different game engines, and  the game engines are basically what dictate the   language that programmers are using. There's  Unity, which is C#, and then there's Unreal,   which is C++. And if you're making anything like  Call of Duty or anything that is like high frame   rate, super fast graphics, you're using C++  no matter what. It's for speed. That's why. A   lot of people are interested in contracts, but  there are two groups with very strong opinions   about it. C++ is very relevant to Nvidia, is  very relevant to accelerated computing. Even   though Python is the language that is experienced  at the surface of most of these applications,   what happens is that the very second you build  your Python program is going to tap into these   enormously optimized CUDA libraries that are  going to carry the burden of computation. So in   an interesting way, C++ powers the entire AI and  high performance computing milieu. What are the   fastest growing programming languages? Rust and  C++. C++ has climbed from 9.4 million developers   in 2022 to 16.3 uh in 2025. It is because we  have enduring demand for languages that are   good at performance per watt. What is certain is  that C++ found its set of use cases where it's   excellent and hard to beat. It's probably the most  widely available programming language anywhere. As the challenges in our industry  and our environment change over time,   all languages have to adapt. One thing that I see as a danger to C++ is  the lack of funding. From what I'm seeing,   a lot of the big players are moving away from  C++ into AI. It means that we're going to have   even less funding. So, I think that's one of the  issues and we need to somehow pull in people with   the money to come and give it to C++ in one  way, shape, or form. I would argue that right   now we're talking about the second winter of  C++ because there's a safety issue that's very   important right now. It's a real serious problem.  I really don't want my brakes not to work when I   press it. If I had a car. There has been a push  during the pandemic from various governments and   regulatory bodies to move away from C++ because  it didn't produce memory safety by default. It is the single most important problem that  we need to address effectively. A huge amount   of work has been done and is ongoing. We have  been hardening our software in C++ 26. It's   motivated us to where we've actually gone and  done important things such as: uninitialized   variables are no longer undefined behavior. That  entire source of security vulnerabilities is gone.   If you build with the C++26 standard library,  you have an option for bound safety for all   the common types in the standard library.  String, span, vector, all those things.   I think AI is going to influence a lot what we  think about safety in languages and generally   what we think and how we think about using  programming languages. Of course, there's   a lot of opinions but right now I can "safely"  say nobody knows what's going to happen. So on   Saturday, the world changed and we are going  to look back on that day, this past weekend,   for the next few decades, as a pivotal turning  point for C++. C++26 looks like a Christmas   tree. It has bunch of things a lot of people to be  excited about. Something called static reflection   is going to make some major improvements. You  can write program code that can see program   code. Reflection is by far the most impactful  single feature we have ever standardized. It's more of like a foot in the door than a  than a full-fledged feature. But in my opinion,   people are going to do amazing things with  it. It seems like a really powerful paradigm   that we think will go a long way once the  features are fully rolled out. Our problems   and our understanding of those problems  naturally change over time. And as long as   a language is a good solution to problems that  are faced by real programmers in in real code,   the language will live and the language will  grow to meet the needs of the programmers. Knowing the language as I do, I would say  that there's going to be a way in which the   language is going to again evolve and change  and improve and do better. But that's only up   to the people who are involved in the language.  Gabby explains the code by equations and I do   data flow diagrams. So we definitely think  very differently and that's one of the   really productive aspects of it. The thing  that I love the most about collaborating   with Bjarne - whichever way it goes, whether  we succeed or fail, I learn something. There are no other people like Bjarne in my  opinion. Nobody who could spend literally   his life. Such commitment is not known. I  very much hope that Bjarne would be more   recognized than he is right now. I can only  admire his devotion to the project. I mean,   what has he been involved for more than 40 years  now and he's still the benevolent dictator for   life, right? That's an incredible run. He  proved you can do efficient abstraction   at scale in the same way horizontally in  portable code. And we are all benefiting   from that because we wouldn't have so  much of the technology we have today if   we didn't have a way to write much larger  efficient software than we could with C. What keeps me going is the interest in  the applications and talking to the people   who built them. I've launched this  thing on the world and I feel I'm   obliged to help make it better,  more appropriate and help users. And the world changes and what  developers and students know   changes and so you have to do some  more. That's what keeps me going. That's right.

Get daily recaps from
CultRepo

AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.