A Perspective on C++ Standardization in 2018
thephd.github.io
thephd.github.io
So right now there are two kinds of gamedev: the ones who would suck it up and just use C++ (although not the modern one), or the ones who move to greener pastures. I've heard some gamedev people are moving to Rust (although having the potential to rival C++ in complexity, is nicer because of its fresher base). And Jonathan Blow is currently creating Jai, so maybe that could be a hope of light for gamedev people...
Breaking C++ backward compatibility would induce an immense cost on the industry.
New languages don't have that problem, obviously, and it's hard to see if they would have that problem if they would have the level of adoption of C++.
Not to mention that even if it's decided to break backward compatibility, it might be decided to do it not once, but several times, and it would further induce more costs.
C++ is also one of those languages that is used by many big companies, because it's actually well standardized (how many languages are that well standardized, and used for sensitive software, like C++ is). You don't have that many languages like this one.
Like always, "there are languages people complain about, and languages nobody uses".
Although I agree that things should be removed, but I honestly am not expert enough to understand which and why. Also those companies are still able to use their own compilers if they wish, and break compatibility if they want to.
Why can't there be a third kind: the ones who suck it up and just use C++ including modern features? (honest question: I don't know anything at all about 'gamedev')
Jon Blow says a language with less friction would make him much more productive. Let me tell you -- rockstar programmers at our company have tried that again, and again, and again. I spent the last 2 months trying to purge one such attempt from the codebase, because it ended up introducing all kinds of nasty bugs and unexpected limitations.
I still occasionally binge Jai videos and hope Jon proves my scepticism misplaced though :)
That said, I think a third kind might also exist, although rare for AAA studios and more common with mid-size/indie game developers...
Exceptions are supported and we use them for any non-gameplay code paths. That is to say, you can and should use exceptions for all loading/initialisation paths unless they are during actual gameplay.
This ends up feeling quite natural as that is mostly what exceptions are good for, and honestly, they would practically never fire in a non-development scenario because they are almost always some kind of error in data files.
The article leaves us with the advice that if we care what goes into C++, then, whether we like it or not, we'll need to get involved somehow.
This could mean joining things fully, or just communicating your needs to existing members who are aligned with you in some fashion.
Sadly, I don't think we'll see much of an uptick in C++ Standards participation in relation to C++ standards complaints.
> Use C++98
> Complain it's too simple to be expressive.
> Get C++17
> Complain it's too expressive to be simple.
Sometimes I think the real goal behind these complaints is not learning anything new or programming anything interesting.And then people proceed to put all blame on the language alone, and this does not match the reality anymore. Again, in my waters.
http://scottmeyers.blogspot.com/2015/11/breaking-all-eggs-in...
Something like:
void MyDebugLog(text) {
if (<constepxr check if logging enabled>) {
// actually log...
}
}There's also stuff from C that can be surprisingly complicated, like integer promotion rules, but if you change that sort of thing you might as well design a new language from scratch.
Others have mentioned uniform initialization, which I definitely agree with.