Recommendations of A Langauge

Started by
23 comments, last by Anri 11 years, 2 months ago

I'd recommend staying away from game engines in general. When I first started getting into game development I used engines and quickly found out how restrictive they were. On top of that it becomes harder to stray away from the use of engines in the future.

Advertisement

I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.


You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now. My advice is to stick with what you know. I think it's better to learn game development in a language you're already comfortable with, rather than trying to learn both the process and a new language at the same time. Later on down the road, when you're more comfortable with what it takes to make a game, then you can more easily adapt that to experiments with different languages. Obviously, you could go the other route (learn a language or two then pick up game development), but we all know it's much more gratifying (for most of us) to go for the game dev stuff first.

4: Avoid game engines, because they prevent you from learning, get in the way, and take a lot of the fun out of development.

I also code with C++ and I know its fun. The OP also wants to code and thats a good thing. But I really don't see anything bad when it comes to using game engines. They are really good for fast prototyping. And if you want to make a fully polished game, then either you have to learn something from every aspect of game coding(as needed, not all) or you already have a very good code base. But it doesnt seem that the OP has enough or any code base ready(related to game development).

So let's offer him some choice. If he gets demoralized at some point(we all get sometime). He can look at one or two game engines. And some game engines also teach you how should make a framework for your game, like- Unity is a good example of component based architecture.

Lastly, game engines are one of the hottest part of game industry. Let him taste one or two. Dont say it like its a rule :P

To follow the path:

look to the master,

follow the master,

walk with the master,

see through the master,

become the master.

http://kazisami.wordpress.com/

I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.


You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now.

Yeah, now its just mostly Java only bashing :P

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

3: Avoid Java, because it is restrictive and bloated


It may be bloated, but it is not restricitve. Using a library Java is very powerful, look at minecraft, made with Java and LWJGL.

To clarify, the Java language itself is very restrictive. It lacks copy constructors, destructors, operator overloading, explicit memory management, and multiple inheritance among other things. When you become a more advanced programmer, not having these things starts to hurt. I believe it is best not to get involved to begin with.

You say this like it's a negative. Multiple inheritance is one of the worst features of C++, there is a reason later languages got rid of it. Operator overloading is another one of those language features that was so badly abused that it's value certainly becomes questionable. Lack of implicit control over memory manage is the only real missing feature that actually hurts the language, and even in that case, 99% of the time this is an advantage as well.

The design ethos of C++ is to never make a decision for the programmer. This is a double edged sword, as on one hand, it gives you maximum flexibility On the other, you are left with dozens of options of how to do something, even in cases where one option was vastly superior to all the others. Its a trade off of flexibility over productivity. Neither is "right" or "wrong" per say.

That said, some aspects of C++ are simply "wrong" and there is a good reason for this. C# and Java are both languages that came later and learned from C++'s mistakes. Plus it's burdened with all kinds of legacy crap that are basically a land mine for new ( and experienced ) developers. Some parts of C# and Java are "wrong" too ( for example, pre-Generic data collections in C#, or well... most of the Java standard libraries ). No languages get everything right, but generally later generation languages learn from their predecessors mistakes.

A couple links that might help you are my getting started guide, it's a long read, but presents most of the popular language options and libraries/learning resources for each. On top this is a list of the most common 3D engines, the languages supported, costs, etc...

On the whole topic of using an engine starting out, I'm torn. An engine hides you from a great deal of the complexity, and when learning, this is a very good thing. You really shouldn't attempt to create your own until you actually understand how they work, or you will just waste a ton of time. On the other hand, I am not sure if its a good idea to learn a language while using an engine, for example C# or Javascript with Unity. I can see merits both ways, so can't really make a recommendation one way or the other.

I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.


You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now.

Yeah, now its just mostly Java only bashing tongue.png

My biggest issue with Java is C#. It's hard to recommend Java when C# is cleaner, faster and generally better designed and frankly, is aging better.

The advantages of Java over C++ are fairly easy to state. The advantages of Java over C# are .... well, are there any?

I don't know. Never programmed in C#. Though I like that you run the same VM on every Java supported platform. Code against Java 7 and you get exactly that in Linux, Windows and OSX (x86, x86-64, etc), plus Java ME for mobile devices. Not sure about how easy is going back and forth from .NET to Mono.

Boxing/unboxing in Java is kinda weird though.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

I don't know. Never programmed in C#. Though I like that you run the same VM on every Java supported platform. Code against Java 7 and you get exactly that in Linux, Windows and OSX (x86, x86-64, etc), plus Java ME for mobile devices. Not sure about how easy is going back and forth from .NET to Mono.

Boxing/unboxing in Java is kinda weird though.

C#'s native invocation system absolutely kicks the crap out of Java.

Mono is binary compatible with the .NET runtime, the experience should be remarkably consistent between platforms, just like Java.

The only catch is a handful of libraries aren't "open". The area most affected by this is UI ( WPF/WinForms ), so if you want to do cross platform GUI work with Mono/.NET, you are often best of using a crossplatform library like GTK#.




I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.

You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now.


Yeah, now its just mostly Java only bashing tongue.png



My biggest issue with Java is C#. It's hard to recommend Java when C# is cleaner, faster and generally better designed and frankly, is aging better.

The advantages of Java over C++ are fairly easy to state. The advantages of Java over C# are .... well, are there any?


The various JVMs have some advantages over .Net/Mono
1) better runtime performance on *nix servers and in some cases non x86 clients.
2) Java is the "standard" language on Android. (The only good CLR implementation costs $299-$1899 per developer)
3) Some ARM CPUs can execute Java bytecode nativly.

When it comes to the actual languages i can't think of any reason to use Java over C# though and i wouldn't recommend Java over C# to anyone, (If you know C# you can easily switch to Java in the few situations where it works better anyway)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

You say this like it's a negative. Multiple inheritance is one of the worst features of C++, there is a reason later languages got rid of it.

No. Multiple inheritance has comparatively few applications, but it is not never the Right Thing. As the FAQ says: "People who spout off one-size-fits-all rules . . . make your design decisions without knowing your requirements. . . . there are some situations where a solution with multiple inheritance is cheaper to build, debug, test, optimize, and maintain than a solution without multiple inheritance."

Operator overloading is another one of those language features that was so badly abused that it's value certainly becomes questionable.

No. If a language feature is abused, that doesn't mean the language feature is bad. It means that the programmers who abuse it are stupid.

In this case, not having it forces a hypothetical Java BigNum class to have an API like: "new BigNum(4).exponentiate(51).mod(6).subtract(1)". You laugh, but I have often seen method chaining of such cruftitude in production code.

Lack of implicit control over memory manage[ment] is the only real missing feature that actually hurts the language, and even in that case, 99% of the time this is an advantage as well.

I agree somewhat, but not being aware of how memory is structured is a common pitfall of novice programmers. Exclusive use of Java encourages that. Finally, teaching ignorance of resource management is not merely suboptimal, but irresponsible.

I'm not going to deny that C++ isn't somewhat messy and that, at least with respect to Java and C#, its syntax is somewhat less intuitive. I don't fancy perpetuating a holy war about which is better though, mostly because I don't really care. I will stick with my recommendation not because I necessarily like C++ better, but since C/C++ is the de facto standard for games, game engines, and high performance computing in general.

[size="1"]And a Unix user said rm -rf *.* and all was null and void...|There's no place like 127.0.0.1|The Application "Programmer" has unexpectedly quit. An error of type A.M. has occurred.
[size="2"]

This topic is closed to new replies.

Advertisement