back to indexBjarne Stroustrup: C++ Standards - C++03, C++11, C++14, C++17, C++20
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:27.780 |
Is there a committee that you're referring to? 00:00:37.360 |
So sometime in early 1989, two people, one from IBM, one from HP turned up in my office 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:05.640 |
And they said, "No, Bjarne, you haven't gotten it. 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: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: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: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: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: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: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: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:13.980 |
They're the, look, standardization is not pleasant. 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: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:39.380 |
First time we finished, we started in, the first technical meeting was in 1990. 00:05:50.100 |
That was the standard that people used till '11 or a little bit past '11. 00:06:03.100 |
It took longer with '11, and I'll mention why, but all the nations voted in favor. 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:25.500 |
They all complain too much, but basically it has no real effect. 00:06:32.460 |
They have been working to make it easier to use many compilers, many computers and all 00:06:41.660 |
And so the first, it was traditional with ISO standards to take 10 years. 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: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:15.420 |
Well, the point is that this was sort of like a second system effect. 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:54.180 |
We got the standard library that gives us all the STL stuff. 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: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:09:04.500 |
We shipped 17 on time and we will ship 20 on time. 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: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.