back to index

Bjarne Stroustrup: C++ Standards - C++03, C++11, C++14, C++17, C++20


Whisper Transcript | Transcript Only Page

00:00:00.000 | But get back to the standardization.
00:00:03.840 | We are standardizing C++ under ISO rules, which are very open process.
00:00:11.120 | People come in, there's no requirements for education or experience.
00:00:16.280 | So you've started to develop C++ and there's a whole, what was the first standard established?
00:00:24.640 | What is that like?
00:00:26.400 | The ISO standard?
00:00:27.780 | Is there a committee that you're referring to?
00:00:30.040 | There's a group of people.
00:00:31.680 | What's that like?
00:00:32.960 | How often do you meet?
00:00:34.520 | What's the discussion?
00:00:35.520 | I'll try and explain that.
00:00:37.360 | So sometime in early 1989, two people, one from IBM, one from HP turned up in my office
00:00:50.040 | and told me I would like to standardize C++.
00:00:55.880 | This was a new idea to me and I pointed out that it wasn't finished yet and it wasn't
00:01:02.840 | ready for formal standardization and such.
00:01:05.640 | And they said, "No, Bjarne, you haven't gotten it.
00:01:08.480 | You really want to do this.
00:01:12.000 | Our organizations depend on C++.
00:01:14.760 | We cannot depend on something that's owned by another corporation that might be a competitor.
00:01:22.220 | Of course we could rely on you, but you might get run over by a bus."
00:01:27.480 | Right.
00:01:28.480 | The old bus ride.
00:01:29.480 | "We really need to get this out in the open.
00:01:31.680 | It has to be standardized under formal rules and we are going to standardize it under ISO
00:01:43.280 | rules and you really want to be part of it because basically otherwise we'll do it ourselves.
00:01:50.360 | But we know you can do it better."
00:01:52.440 | So through a combination of arm twisting and flattery, it got started.
00:02:01.220 | So in late '89, there was a meeting in DC at the...
00:02:10.080 | Actually, no, it was not ISO then, it was ANSI, the American National Standard we're
00:02:17.000 | doing.
00:02:18.000 | We met there, we were lectured on the rules of how to do an ANSI standard.
00:02:24.240 | There was about 25 of us there, which apparently was a new record for that kind of meeting.
00:02:31.440 | And some of the old C guys that has been standardizing C was there, so we got some expertise in.
00:02:38.480 | So the way this works is that it's an open process.
00:02:42.620 | Everybody can sign up if they pay the minimal fee, which is about a thousand dollars, though
00:02:48.800 | less then, it's a little bit more now.
00:02:51.760 | And I think it's $1,280.
00:02:55.400 | It's not going to kill you.
00:02:57.300 | And we have three meetings a year.
00:03:01.500 | This is fairly standard.
00:03:03.180 | We tried two meetings a year for a couple of years that didn't work too well.
00:03:08.680 | So three one week meetings a year, and you meet and you have technical discussions, and
00:03:20.240 | then you bring proposals forward for votes.
00:03:24.120 | The votes are done one vote per organization.
00:03:31.220 | So you can't have, say, IBM come in with 10 people and dominate things, that's not allowed.
00:03:38.180 | And these are organizations that extends to the UC++?
00:03:42.060 | Or individuals.
00:03:43.060 | Or individuals.
00:03:44.060 | I mean, it's a bunch of people in a room deciding the design of a language based on which a
00:03:52.180 | lot of the world's systems run.
00:03:55.900 | Right.
00:03:56.900 | Well, I think most people would agree it's better than if I decided it, or better than
00:04:02.900 | if a single organization like AT&T decides it.
00:04:06.820 | I don't know if everyone agrees to that, by the way.
00:04:10.500 | Bureaucracies have their critics too.
00:04:13.980 | They're the, look, standardization is not pleasant.
00:04:19.820 | It's horrifying.
00:04:20.820 | It's like democracy.
00:04:22.140 | But we, exactly.
00:04:24.040 | As Churchill says, democracy is the worst way except for all the others.
00:04:29.100 | And it's, I would say, the same with formal standardization.
00:04:32.660 | But anyway, so we meet and we have these votes and that determines what the standard is.
00:04:40.500 | A couple of years later, we extended this so it became worldwide.
00:04:47.220 | We have standard organizations that are active in currently 15 to 20 countries.
00:04:55.820 | And another 15 to 20 are sort of looking and voting based on the rest of the work on it.
00:05:07.580 | And we meet three times a year.
00:05:10.140 | Next week I'll be in Cologne, Germany, spending a week doing standardization.
00:05:17.020 | And we will vote out the committee draft of C++20, which goes to the National Standards
00:05:23.380 | Committee for comments and requests for changes and improvements.
00:05:30.620 | Then we do that and there's a second set of votes where hopefully everybody votes in favor.
00:05:36.660 | This has happened several times.
00:05:39.380 | First time we finished, we started in, the first technical meeting was in 1990.
00:05:46.860 | The last was in '98.
00:05:49.060 | We voted it out.
00:05:50.100 | That was the standard that people used till '11 or a little bit past '11.
00:05:56.660 | And it was an international standard.
00:05:59.020 | All the countries voted in favor.
00:06:03.100 | It took longer with '11, and I'll mention why, but all the nations voted in favor.
00:06:10.580 | And we work on the basis of consensus.
00:06:15.560 | That is, we do not want something that passes 60/40, because then we're going to get dialects
00:06:21.940 | and opponents and people complain too much.
00:06:25.500 | They all complain too much, but basically it has no real effect.
00:06:30.460 | The standards has been obeyed.
00:06:32.460 | They have been working to make it easier to use many compilers, many computers and all
00:06:39.460 | of that kind of stuff.
00:06:41.660 | And so the first, it was traditional with ISO standards to take 10 years.
00:06:47.940 | We did the first one in '08, brilliant.
00:06:51.660 | And we thought we were going to do the next one in '06 because now we are good at it.
00:06:56.580 | It took 13.
00:06:58.700 | Yeah, it was named OX.
00:07:02.260 | It was named OX.
00:07:03.860 | Hoping that you would at least get it within the single, within the odds, the single digits.
00:07:08.740 | I thought we would get, I thought we would get six, seven or eight.
00:07:12.980 | The confidence of youth.
00:07:14.260 | Yeah, that's right.
00:07:15.420 | Well, the point is that this was sort of like a second system effect.
00:07:20.760 | That is, we now knew how to do it.
00:07:22.500 | And so we're going to do it much better.
00:07:24.260 | And we got more ambitious.
00:07:26.940 | And it took longer.
00:07:28.940 | Furthermore, there is this tendency because it's a 10 year cycle or eight, doesn't matter.
00:07:38.420 | Just before you're about to ship, somebody has a bright idea.
00:07:45.140 | And so we really, really must get that in.
00:07:51.020 | We did that successfully with the STL.
00:07:54.180 | We got the standard library that gives us all the STL stuff.
00:07:59.980 | That basically, I think it saved C++.
00:08:02.220 | It was beautiful.
00:08:04.620 | And then people tried it with other things and it didn't work so well.
00:08:09.020 | They got things in, but it wasn't as dramatic and it took longer and longer and longer.
00:08:15.520 | So after C++ 11, which was a huge improvement and what basically what most people are using
00:08:23.340 | today, we decided never again.
00:08:29.080 | And so how do you avoid those slips?
00:08:32.100 | And the answer is that you ship more often so that if you have a slip on a 10 year cycle,
00:08:41.940 | by the time you know it's a slip, there's 11 years till you get it.
00:08:46.100 | Now with a three year cycle, there is about three, four years till you get it.
00:08:52.620 | Like the delay between feature freeze and shipping.
00:08:58.480 | So you always get one or two years more.
00:09:01.160 | And so we shipped 14 on time.
00:09:04.500 | We shipped 17 on time and we will ship 20 on time.
00:09:12.580 | It'll happen.
00:09:13.620 | And furthermore, this gives a predictability that allows the implementers, the compiler
00:09:20.260 | implementers, the library implementers, they have a target and they deliver on it.
00:09:26.380 | 11 took two years for most compilers were good enough.
00:09:32.380 | 14, most compilers actually getting pretty good in 14.
00:09:38.380 | 17, everybody shipped in 17.
00:09:41.900 | We are going to have at least almost everybody ship almost everything in 20.
00:09:48.700 | And I know this because they're shipping in 19.
00:09:53.680 | Reliability is good.
00:09:54.860 | Delivery on time is good.
00:09:56.540 | And so, yeah.
00:09:57.540 | That's great.
00:09:58.540 | So that's how it works.
00:09:59.280 | [BLANK_AUDIO]
00:10:07.880 | [BLANK_AUDIO]
00:10:17.880 | [BLANK_AUDIO]