Sign in to follow this  
Shrak

Need help choosing a language

Recommended Posts

Hey, I'm 17 and about to enter College, I took a Computer Science Course and I'm really interested in it.

 

I've been interested in learning how to create games but I'm not sure which program is best. Some say Unity is best but some say C# is too difficult to learn and C++ is the way to go. I've touched on Python earlier this year and it was easy to grasp but I heard you can't do much there. I heard too that for Android App making it would be Java, and I wish to do that too but probably after I learn C++/C#/Python or whichever is best.

 

Which programming language would be the best to pursue?

 

Thank you :)

Share this post


Link to post
Share on other sites
Why not learn both?

You're young and should soak it up like a sponge if you have an interest in it.

I find that C# can be seen as C++'s little brother, it is just as powerful but works slightly differently, e.g. You don't have to manually manage memory in C# where you might have to in C++ at times. Make sure you learn modern C++ and not old fashioned "C with objects" and you'll find they're very similar.

Share this post


Link to post
Share on other sites

I've started with assembler, that helped me until today to always understand what happens on the CPU. I don't think it's useful to make a game in assembler, but understanding that CPUs load data into registers, etc. is really important. And there is no better way to learn than to try that by using assembler. Might be enough to learn that for 3 Months.

 

Then I'd suggest C and C++, if you manage to learn that, you can easily use java, c#, objective-c, php,... etc. doing it the other way around is somehow harder. At least when you see source from someone previously just worked with higher languages, his/her c++ looks not the way it should be.

 

And you should always know, nobody programs in c++ perfectly, it's a vast language and it's not bad what you know, it would be just bad if you'd stop to learn more.

Share this post


Link to post
Share on other sites

While learning C++ you'll find topics such memory & cache management, OOP, etc. in more detail. It worth to learn.

 

One of the things that we usually don't find on a C++ is multithreading (even the basics). I know that you're starting, but keep in mind that for this type of topic you'll need to get another type of books. 

 

Most of the APIs out there have a well defined documentation for C++ (such DirectX e OpenGL); easy to read.

 

C/C++ are not easy. Takes time to understand because is a low-level language compared to Java.

 

C++ is the standard industry language.

Edited by Irlan

Share this post


Link to post
Share on other sites

I've been interested in learning how to create games but I'm not sure which program is best

...

 

Some say Unity is best but some say C# is too difficult to learn and C++ is the way to go. smile.png

 

If you`re interested in game design (game logic, AI, hi level programming in general) learn c#, it will get you there faster. 

However game design jobs are rare so If you`re interested in getting a job as a programmer, c++ is required. 

Edited by Calin

Share this post


Link to post
Share on other sites

C# and Java are pre programmed algorithms, where you need to install more crap on your PC.
Wont it nice to know how it realy works ?, and make your own "optimized" functions in C++ ?
 
Why re-invent the wheel ?, because i like to do so!


Every windows pc since xp has come preinstalled with the .NET framework in some form, it's an integral part of the os so no need to "install extra crap on your pc".

Java on the other hand has always been a joke with regards to security, updates and having to install it every other week. Every other day there seems to be a new bug causing Firefox to disable the java plugin...

Share this post


Link to post
Share on other sites

It gets to a point where the programmer needs no knowledge at all with that sort of stuff.

Do you realy wanto be unknowing ?

 

 

 
This is not useful or relevant to the discussion at hand.
 
Stop.

Share this post


Link to post
Share on other sites
I've been interested in learning how to create games but I'm not sure which program is best. Some say Unity is best but some say C# is too difficult to learn and C++ is the way to go. I've touched on Python earlier this year and it was easy to grasp but I heard you can't do much there. I heard too that for Android App making it would be Java, and I wish to do that too but probably after I learn C++/C#/Python or whichever is best.

 

 

Pick one of those. I'd recommend against C++, personally, as it is a language steeped in a culture of "expecting you to know what you're doing already," which makes it a poor first choice. I'd further suggest that you continue with whatever language you've already started learning and already know the most of. It sounds like that's Python. What you "heard" about not being able "to do much" with Python is almost certainly wrong, and whatever small bits of truth might lie buried in that generalization aren't applicable to you because, as a beginner, the limiting factor on your ability to "do much" is you, not the language.

 

At this point your primary aim is to learn programming fundamentals, and as long as you're selecting a language that will let you do that and not get in your way too much, you'll be fine, and you'll have a much easier time learning other languages later on (should you decide to) once you've gotten a basic handle on those concepts.

 

 

The other important thing is to actually practice making things with the language -- beyond just the assignments from your course, if you're still taking it. Make little games on the side in your spare time, starting with simple text-based things like "guess the number" or Hangman or Blackjack and moving on to more complex things like a text-based adventure game and finally to things like windowing and graphics.

Share this post


Link to post
Share on other sites

I wouldn't get too hung up on which language you start out with.  You'll eventually end up learning multiple languages and a lot of the basic programming concepts you learn in one will apply to others.

 

If you do want a good language to start with, I'd probably go with C#.  I'm in the process of learning it myself and it's a relatively straight-forward language to learn.  The nice thing about it is you don't have to worry about as many things as you would with C++ (i.e. memory management).

 

You'll also be better poised to use things like MonoGame or Unity in developing actual games.

Share this post


Link to post
Share on other sites

C++ will give you more knowledge of what goes on 'under the hood' than learning some other languages here first. Lots of people will argue dealing with things such as memory management early on is a bad thing. I think it's the total opposite. Even if later on you end up using a language that is higher level, you will still have learnt important lessons from doing the lower level stuff that will make you a better programmer. 

Share this post


Link to post
Share on other sites

First of, I want to say thank you for all your replies. It were all insightful. I'm leaning towards C# as of now then slowly moving to C++. Then seeing what more I can do with Python as there are also game engines that run through Python. I really appreciate all the responses, and I hope C# doesn't kill me. Hahaha.

 

I actually used Turbo C in one of my Computer Classes back in first year I think. But I realized after looking at C++ code that I learned plain C then haha, hopefully they're somewhat related so that I wouldn't have such a culture shock.

 

I'm still torn between going the harder path of C++ or going C# and gradually moving to C++ though.

Share this post


Link to post
Share on other sites

 that will make you a better programmer. 

That assumes that the OP is a programmer already.

 

At this stage, language is totally irrelevant. What is important,though, is that whatever language is chosen, that it will function as a vehicle to actually get some programming done.

What got me started doing real programming was Delphi (Object Pascal) - it made me highly productive and with it I created my first, non-trivial program. I totally couldn't care less about what went on under the hood! :)

Share this post


Link to post
Share on other sites

First of, I want to say thank you for all your replies. It were all insightful. I'm leaning towards C# as of now then slowly moving to C++. Then seeing what more I can do with Python as there are also game engines that run through Python. I really appreciate all the responses, and I hope C# doesn't kill me. Hahaha.

 

I actually used Turbo C in one of my Computer Classes back in first year I think. But I realized after looking at C++ code that I learned plain C then haha, hopefully they're somewhat related so that I wouldn't have such a culture shock.

 

I'm still torn between going the harder path of C++ or going C# and gradually moving to C++ though.

I have a follow up question to myself however, what's the difference between C# and C++?

Share this post


Link to post
Share on other sites


I have a follow up question to myself however, what's the difference between C# and C++?

 

Shrak asked me to weigh in on this question through PM -- posting my response here so everyone can consider it.

 

 

There are probably lots of good discussions you can search for here on Gamedev and elsewhere. If you reply to your thread that you have likely narrowed it down to these two and want to know more about the differences (basically ask this same question, only in the thread) I or others might go into more details there as well.

 

Briefly, though, there are a couple big differences.

 

The first is that C++ treats the programmer as being entirely competent and skilled. C++ will mostly never tell you that something you're about to do is a bad idea, and when it does the compiler will always concede if you type a few more characters to convince it that you really do mean what you're saying. It also leaves all the responsibility of cleaning up after yourself to you. C# treats programmers as fallible people, and takes on a greater role as referree and housekeeper -- it will clean up after you, it'll tell you about your bad ideas frequently, and in some cases it will refuse to do things no matter how you try to insist. For a beginner, C++ is sometimes too unhelpful (also in part because error messages are sometimes cryptic) so C# can be a better choice -- on the other side of the coin, C# can be somewhat limiting for the expert who knows what she's doing.

 

The second is that C++ is a systems language. This means you can use C++ in high-level applications all the way down to bare-metal (say, in an operating system), the creator of C++ describes it as a systems language for building powerful, efficient abstractions (e.g. in libraries) and then applications on top of those. C# is an applications language, there have been experiments in writing things like operating systems (mostly) in C# with only a minimum of C or C++ underneath, but its really build for applications -- specifically, for applications that can give up some performance (say 10 or 20 percent average, perhaps 50% with expert-tuned, computationally intensive C++) for higher programmer productivity (say 2x or more). C# is deliberately easier to use than C++ for a good variety of applications. This is a worthwhile trade-off most of the time, unless you're the 5% of people that really need every drop of performance -- and contrary to popular (historically true, but no more) belief, most games don't fall into that category -- not even most AAA games, let alone small-team indie games.

 

Then there are platform and ecosystem differences. One of the things that complicates C++ for new programmers is the way that C++ code modules are split between header and source files -- which can be confusing, and can create circular dependencies if you're not careful. C# code modules exist in a single .cs file and you have to think less carefully about build-order dependencies. Another difference is that C++ has only a small standard library, while C# has a very large standard library -- if you want to parse XML in C++ you need to go find the 6 or so popular options and then decide which of them appeals to you the most; in C#, you can find XML parsing right in the standard library -- this extends to all kinds of useful things like SQL databases, networking, encryption, compression. C++ has (usually many) options for each of these too, but you need to go out and find which one is best for you, and also think about how well or poorly its going to work with the other libraries you might have chosen (in C# the standard libraries all work pretty well together and you don't have to think much about it).

Share this post


Link to post
Share on other sites

C# is what happened when Microsoft hired Delphi's chief architect Anders Hejlsberg (before Delphi (Object Pascal) he created Turbo Pascal) to create a new language C#.

((He left Borland and worked at MS for 4 years prior to that, though))

To me, it means that C# has many of the things that I personally really liked (read: loved) about Delphi.

You can view C# as an increment to C++ (C++++ - hence the star).

Share this post


Link to post
Share on other sites

There's no sensible reason to "start with C# and gradually move to C++". Just pick a language and learn it. All the choices will be valuable learning experiences.

 

I'm not quite sure how to read this myself.

 

If you're saying "just pick C++ now since that's where you want to get to." then I disagree.

 

If you're saying "Whatever you choose now will be the first of 10 or 20 languages you'll learn eventually" then I agree, but still think C++ is a poor first choice unless you have someone to mentor and guide your progress.

Share this post


Link to post
Share on other sites

Hey, I'm 17 and about to enter College, I took a Computer Science Course and I'm really interested in it.

 

I've been interested in learning how to create games but I'm not sure which program is best. Some say Unity is best but some say C# is too difficult to learn and C++ is the way to go. I've touched on Python earlier this year and it was easy to grasp but I heard you can't do much there. I heard too that for Android App making it would be Java, and I wish to do that too but probably after I learn C++/C#/Python or whichever is best.

 

Which programming language would be the best to pursue?

 

Thank you smile.png

You can make games with Python using PyGame (http://pygame.org/news.html). As for Unity, yes you would use C#, but it isn't difficult to learn. Python, C#, and Java are the three languages recommended for beginners. In fact C++ is the most difficult one to learn just due to the complexity of the language. My college degree actually started me out by learning the basics with C# and then moved to C++ for the advanced programming concepts. Some colleges start with Java then move to C++. Still others touch on several languages throughout the degree (think Stanford touches several languages). It's true that C++ is a widely used language and considered the industry standard language, but that doesn't mean you have to start with C++. If you don't want to stick with Python then Java and C# should be the next step. All the languages mentioned here can be used to make games. If you learn C# it will make learning C++ easier. Even if you just learn C# and C++ you have already gave yourself a large platform to develop for because most game engines and libraries use either C#, C, or C++. So I would say to either learn pygame and stick with python, learn C# to start using Unity, or learn C++ and pick up the Unreal Engine to make games. Ultimately any language you pick will open up several avenues for you to be able to start learning to make games. Just pick one and dig in.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this