4 ms·
The only measure of C++ skill is years using it really and the industry. Game development will give you skills in C++ but you'll always have more to learn. It i
by drawkbox 3y ago
The only measure of C++ skill is years using it really and the industry. Game development will give you skills in C++ but you'll always have more to learn. It is one of the only places where you will be pushed into new areas and need the performance. You'll have fights of memory, string classes (custom vs standard), template hell, all sorts of C/Obj-C library integrations, network, compiler tours and many more adventures.
We used lots of C++, Objective-C and even Objective C++ (g++ mixing Objective-C + C++, connecting to C++ engine) in a custom game engine that worked on mobile for lots of shipped titles. It is powerful and fun. I have 5-6 years using it everyday across games and media apps, bits across the rest of years, but so much territory uncharted.
I actually like C++ but it is like a lightsaber, it can be dangerous. Most apps still run on C++ at some level, even virtual machines. C++ is the stick shift manual transmission of programming languages. I'd build more in it beyond games if allowed and use it on personal things quite a bit.
In my opinion, if you can work daily in C++ for some years that all other languages are easier from there. The understanding of the machine is better from memory to stack/heap to performance, cpu/gpu bounding, networking, and the sheer power of the root of all applications. C/C++ are where the machine meet code just above assembly, there is maneuverability there but also danger.
Fun fact: Objective-C was created before C++. Objective-C all they way back to 1981 but officially 1984. [1] C++ all the way back to 1982 but officially 1985. [2]
[1] https://en.wikipedia.org/wiki/Objective-C#History https://en.wikipedia.org/wiki/Objective-C#History
[2] https://en.wikipedia.org/wiki/C++#History https://en.wikipedia.org/wiki/C++#History
- iainmerrick 3y agoObjective-C++ is one of those things that sounds like an abomination when you first hear about it, but when you try it, it's surprisingly straightforward and useful. Obj-C and C++ are really very different, so it makes sense to use each one for what it's best at; and the syntax of each is so different that it clashes much less than you'd expect.
- drawkbox 3y agoWhen I first learned about it in 2008ish I was blown away, really just using g++ to compile and you are set. Very interoperable and more than expected, C/C++/Objective-C++ all work well together, maybe even better than layers on top today in mobile/web. It isn't recommended to use all these unless there is a reason, but for integration points it works great. Using C libs in C++. Using C++ libs/systems in Objective-C++. Accessing Objective-C from C++ etc. The game engine is in C++ so to use it on iOS we needed to have an integration point for the system level Objective-C libraries to the C++ game engine (same with Android NDK integration in a way). Another game engine from around the time Oolong Engine [1] also used this and was used for an early Quake to iOS port. Like our custom engine Oolong used PowerVR/PVRTexTool to simulate PVRTC/PVRTC2 textures. This setup made it so you could just develop your whole desktop/console/mobile game on PC then it would run on iOS with the Objective-C++ integration points. That was huge for game studios that only had PCs pretty much at the time. [1] https://code.google.com/archive/p/oolongengine/ https://code.google.com/archive/p/oolongengine/
- pjmlp 3y agoIt goes all the way back to NeXT days actually.
- gumby 3y agoI ran into Steve Naroff a couple of years ago and he said, "it's still amazing that we got Objective-C++ to work" ("we" being his team at NeXT and ours at Cygnus). I'm impressed Jobs went for it. It's pretty great for the reasons you said.
- ghosty141 3y agoAbout the lightsaber thing: From my experience its worse, even if you are really knowledgable c++ will bite you out of knowwhere cause things never compose that well and something breaks for some arcane reason which you will only notice because your customers build segfaults randomly. Also the amount of template voodoo necessary for certain things to be ergonomic to use is insane at times. /rant off
- mlhpdx 3y agoSo the light saber with a faulty switch that goes off in your pocket?
- jiggawatts 3y agoI vaguely remember a weapon in an old text based multi-user dungeon (MUD). It was cursed: once picked up it couldn’t be put down. It was also very powerful, with only one downside: randomly you’d hit an ally in the same room instead of the enemy. Reminds me of a lot of things in the world. It was also just at the right level that you’d be getting self-confident and even a bit cocky, but not experienced enough to recognise such an obvious trap. Of course, I dual-wielded two of them like a maniac to the dismay of my party. I only killed a few allies! An accident, I swear. Not my fault.
- DonHopkins 3y agoLike that classic scene from Get Smart: Saeed [grinning and pulling out knife]: Now that we have the Control agents, they're at our mercy. Abdul: Put your knife back in its scabbard, Saeed! I've got other plans for Agent 99 and Maxwell Smart! Ssshhhhrrrrr Saeed [looking sick]: Abdul...I don't have a scabbard. Abdul: [turning to look]: You do now!
- AlchemistCamp 3y agoMy first tech job involved working with Obj C++. It was at an educational app platform targeted at iOS apps, but we also started targeting MS and Android apps after a few months. Quite a few devs of the 3rd party apps wrote their core logic in C++, and it was my job to help them get set up with our iOS SDKs. The core logic wasn't too bad (except that I was very green at the time), but the interop between C++ and Obj C parts was truly painful and part of why I became a web dev for years after.
- jeffbee 3y agoI don't know, years might be contraindicative. I've met a lot of people who learned paleolithic C++ in the 90s and never reformed or learned anything in C++11 or later and they're the worst C++ colleagues you can imagine. I'd rather have some kid who never used C++ before than someone who has been using C++98 for 25 years.