Java or learn c++

Started by
27 comments, last by minibutmany 11 years, 1 month ago

A lot of concepts of making a game are the same across all languages. So I imagine if you are a beginner all that really matters is your skills going up :).

Right now I am prototyping some things in C++ and I find that it really is not quite as rapid as in Java or C#. So it has its disadvantages.

Advertisement

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

Edit: wrote something stupid, deleted something stupid

I'm 99.9% sure you can do function overloading in Java... you can't do operator overloading though and lack of unsigned types might be a bit of a chore if dealing with hardware directly.

"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

I'm 99.9% sure you can do function overloading in Java... you can't do operator overloading though and lack of unsigned types might be a bit of a chore if dealing with hardware directly.

Ah yeah, just checked that. Long time ago when I was working on android project it didn't work for whatever reason =\

Anyway in 3D realm C++ blows anything.

complete control over your code,

Just curious, but what exactly in real world terms, do you mean by this.

At the tier of skill we are talking about at the beginner level, this expression comes up so often, but I cant imagine beginners really find they don't have the level of control over Java/C#/JavaScript/Lua/VB/etc... that they do over C++. In 99% of my coding experiences, even though I've been at this professionally for almost 15 years, I rarely run into situations where I don't have complete control over my code. I have on a few occasions thought I ran into such a situation, but generally it was my ignorance of how the language I was working in actually worked. The few examples I can think of are time of the time of garbage collection, byte ordering, implicit memory allocation and direct hardware access... and again, none of those things are something a beginner ( or often intermediate ) programmer ever runs into.

I know I'm not the original poster, but you would have more control over the hardware with things like inline assembly, right? I'm fairly new to java, and correct me if I'm wrong, but you certainly wouldn't write an OS in Java, would you? But this thread is on Java or C++ for games so I won't pull the conversation that way.

I think both are great languages. I think since you're new and have already started with Java, stick with Java. I started with C++ and it took a few years for it to completely click (granted I was 10 when I started), Java has a kinder learning curve.

In theory, yes, in reality no.

We are long long long gone from the day we poked directly at the hardware. In the days of 16bit DOS and slightly less ( and this is when abstractions started taking over ) 32 bit DOS extenders, yes, we fiddled directly with hardware. Now, unless you are writing drivers, not so much.

It's one of those things we talk about as a language feature, but unless you are hacking on an OS kernel or writing a device driver, you don't actually do in practice. Especially not at the level of the OP.

C++ is complex and easy at the same time, mainly because it lets you choice how to do things. If you choice the safe and easy C++ path development can go fast and smooth, but if you take the wrong turn you might up on a path that leads to certain death with no way to recover other then going back and starting over again. This is probably the biggest pitfall for new C++ programmers, the language doesn't prevent you from making a wrong turn, it allows you to mix automatic memory management with manual memory management, for example the compiler won't prevent you from calling delete on a stack variable, it will just horribly crash when you run the program.

That doesn't mean it's a bad language for beginners though, that depends on how your skills are and how patient you are. If you are planning to learn programming by diving straight into it and hope to succeed using trial and error, you probably shouldn't start with C++. However if you are patient and can refrain yourself from using certain language features before you understand how they work, it shouldn't be a problem. So called 'easy' language are no guarantee for success either, for example I started out with basic, which was considered easy, but the first attempts didn't turn out very well. And managed languages as Java certainly have their pitfalls as well, garbage collectors are unpredictable and can have some nasty side effects that are not beginner friendly.

Personally I would stay away from garbage collected languages and stick with predictable memory management systems, but that has a safe mode (preferable no undefined behaviour in debug mode, either safe and defined or debug assertion). Specially when you are learning, I rather have a debugger that says that you are doing it wrong, then a magic software component running in a second thread that attempts to silently fix your mistakes (specially as this sometimes fixes it the wrong way and you have no clue what happened). Question is, is there such a language, that is also suitable for making games...

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

Edit: wrote something stupid, deleted something stupid

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage.

I don't mean that as an insult in the slightest. It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

Unless of course you think rolling your own basic libraries == control over your code. You can do that in any language, it's just in C++, you often have to do it. This of course, ins't a positive.

That doesn't mean it's a bad language for beginners though

Actually, that's pretty much exactly what it means.

Coincidentally, this comes up again and again and again in threads like this. That the thing that makes C++ hard to use is memory management. This is patently wrong.

This is what makes C++ fragile, there is a much different thing.

What makes C++ bad for beginners is a myriad of things. The convoluted inheritance system, the fact its 4 languages mashed together, the horrible build process, the completely lacking standard libraries, the 20 years of legacy cruft. These are the things that make C++ bad for beginners.

Memory management... not even close to the boogieman it's made out to be. Don't get me wrong, it can blow up in your face, but its really no different then leaking an unmanaged resource in C# for example.

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

Edit: wrote something stupid, deleted something stupid

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage.

I don't mean that as an insult in the slightest. It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

Unless of course you think rolling your own basic libraries == control over your code. You can do that in any language, it's just in C++, you often have to do it. This of course, ins't a positive.

Yes, things like DirectX make C++ stand out of the crowd.

I like C++ since it has tons of game and graphics libraries for it, not to mention the sheer amount of tutorials and books on game programming that use C++.

Its not as hard as some people make it out to be, it aint close to the nightmare that calculus based physics was... lol

This topic is closed to new replies.

Advertisement