So I will tell you the story short, because I’m quite excited about this piece of news. I think that there will be a lot of talk about this, so let’s put it in a simple manner.
While attending a D conference (as a guest in the panel together with Andrei Alexandrescu and Walter Bright in Brașov, Romania), Scott Meyers stated that there is hope to see breaking changes in the future C++ standards.
These days some amazing things happen in the world of C++. C remains the dominant programming language used around the world, a much simpler and a language that’s a lot easier to create a compiler for; at the same time, there is a much simpler language trying to break free from C++, and that language was what the big guys from the CPPCon tried to identify these days.
They created a huge set of guidelines (not rules, but guidelines) on how to write your code in C++ so that you can write safe, maintainable code easy and fast.
Here’s the thing. I tried to get attached to other programming languages, but somehow, deep inside my heart, C++ continues to reign supreme. It’s absolutely lovely, it has raw power, and you can optimize everything to hell and back. No, it’s not C; C is too low level and sometimes can harm your performance by not being able to do copy-paste the way templates do. Plus the things you need to do with macros…
This morning I had a very interesting discussion with Mihai related to this answer on Quora. We were basically saying the same thing but we were referring to different things, so I think it’s worth pointing out what’s going on with pointers and references. [NOTE] The discussion below refers to variables from the C++ point of view, where things are closer to the metal. This whole discussion requires understanding of C++ first and foremost.
I didn’t realize that in 2013, in order to do programming in the most advanced language out there (AKA Java) you have to set proper environment variables, in a magic way which nobody really documents. Not only that, but you have to already know that, you’re stupid if you don’t know them yet.
Java is the language with the least respect for the platform it runs on. Apparently, stuff work because there’s tons of glue and tape that programmers use to patch things up.
!! This is an article written in 2013. Things have changed, not a lot, but they have. Every time someone discovers this post via reddit I feel like taking it down – it’s not particularly good, it was written when I was quite upset with my lack of ability to become productive in C++. I will not bother you with the updated view, and I will keep the article because people seem to stumble into it every now and then, probably because they are equally frustrated and, like me, they didn’t know how to express it.
I am now reading „Refactoring: Improving the design of existing code„. It’s quite a nice reading and, unlike my previous tries to read this book, I tend to say „of course, doh!” instead of my usual „aha!”. But that doesn’t mean that I fully agree with everything in this book.
One thing in particular troubles me, and it’s actually a bad habit I seen with most of the managed languages programmers.
Last weekend was quite an interesting one for me, as I attended the Asynchronous Master Class from Cluj, with Richard Blewett and Andrew Clymer as trainers. The event was sponsored by iQuest* (that makes its 15th anniversary) and was open to any developer that wanted to get on board. There is something amazing about C# as a language. Once you get it, code flows naturally, in a clean, readable way. I guess this is where Richard and Andy borrowed their natural flow with the presentations: the live coding session and the dynamic presentation style recommends this master class as one of the best technical presentation I have ever seen.
There will be a lot of news regarding Google’s new stuff announced at Google I/O. But somehow, I’m not impressed. I watched about half of the keynote this yesterday in the evening before falling asleep (once you get a regular time to go to sleep you hardly can break out of that routine). I also watched the beginning this morning, and I can sum up what I saw so far:
C++11 is a wonderful upgrade for C++, and it has all the things that an upgrade should have. The old things work the same or better, the new things make your life way easier and productivity should jump through the roof with stuff like auto, foreach or lambdas.
But, as any extension, it adds to the already complex language some more complex constructs. One of them is universal reference, and Scott Meyers, one of the big contributors to the new C++ standard, has a presentation about this complicated topic.