Sign in to follow this  
pi_man

What languages shoud i learn?

Recommended Posts

one day i wish to become a professional games developer, so i was just wondering, what languages should i learn for this?

Share this post


Link to post
Share on other sites
From what I understand most game studios use C++ among many others.

However if you just want to make a normal game XNA for C# has a large community and a lot of resources available for it. Its only downside is its for Windows and Xbox 360 only.

I am sure others here will help you out more, however I need to go, sorry.

Share this post


Link to post
Share on other sites
Quote:
Original post by Promit
1) Professional Games Made In C#?
2) Java for game development?
3) Java----C/C++
4) c++ or c#
5) Question about Java Vs. C# Vs. C++
6) Java Games?
7) Java is fast?
8) Secondary Language:VB or Java?
9) What makes C++ so powerful?
10) C# games and cheating...
11) Is C# good enough for system utility programming
12) MC++ vs. C#
13) Which language is best for a 3d Games Engine?
14) C# vs C++ as a choice for development
15) Is Java the Future?
16) why C# and not Java?
17) What do you think of the D language?
18) my c++ d c# benchmark!
19) The Definitive Guide to Language Selection
20) Sharp Java
21) C++ or C#?
22) C++ or C#?
23) Java disadvantages
24) C++ or C#?
25) Visual C++.net vs Visual C#.net
26) C# - huh?
27) which language should i learn?
28) C or C++ or C#
29) learn C or C++ ??


There's some reading material on the subject. In my personal opinion, it really doesn't matter where you start, but Python or C# are good options. In the end, you'll want to know more than one language anyway (and once you learn one well, picking up others is trivial, except perhaps going from an OO or procedural language to a functional one), so this isn't a make or break decision. Just pick something and start programming.

Share this post


Link to post
Share on other sites
I would advise you to look at this list of programming language features, and then learn enough languages to cover them all. The language in the right column is the first language which used the feature, but there are obviously more which have used since then (except perhaps for assignment operator overloading, which only exists in C++ to the best of my knowledge).

Share this post


Link to post
Share on other sites
English. I suggest it with complete sincerity, communication is an extremely important tool for programmers or anyone else involved in a team-based creative process, and a good grip on the english language (both written and spoken) is quite important.

Apart from that, learn to program well in whatever languages you wish and you'll be able to pick up any additional languages that may be required with minimal difficulty. Some languages that see usage in the industry include C#, Python, Lua, Java (particularly for mobile platforms) and C++. I would recommend not making C++ your first choice if you wish to learn some of these.

Share this post


Link to post
Share on other sites
Also, this question is posted once a week. One of the things that is good to learn is how to search forums, since that will get you an answer much quicker, and you'll be able to find more information than will be posted in a single thread like this. And you'll be saving everybody some time too ;-)

Share this post


Link to post
Share on other sites
I tried lot of languages

the first one was c++, a disaster, 4~weeks only managing cin ,cout and math code... i just quit..
so some week later i instaled ruby -> looks more hard then c++ to me, quited too...
some day i saw a friend programming a commercial app on delphi, first it appers all marvelous just drawing buttons and checkboxes kkkkkkk³ then it hits F12... just don't understand nothing... at the begining i have to say, i have taken his delphi6 cd and instaled at my computer, so all the thing just turned "CLEAR" made some idiot apps for some months, until that date i did never have interest in game dev, so some day i just came to my head -> "lets make a game" and i started with form canvas...

later i tried to learn visualbasic, D (but the lack descent IDE's make me quit), python (marvelous language, current use as shell and to automate some things), ruby (again and i discovered that i don't like it!), C# (Nice, but xna, xna, xna, sounds like lack of freedom), Freebasic (i learned a looot³ of programming logic on it, a very nice language) the order is not correct but...

i just walked around for 2 years and come back to ObjectPascal, for me the best option, very fast, clear syntax, good IDE's.
The similarity with C++ are verry big, and able me to read C++ code and have decent coding ability on the language.

Don't say that Basic and Pascal are targeted for begginers, they continue losing these caracteristics and adding several powerfull features trough the years, and the best thing is the clear syntax, methods.

Finnally i would recomend some things:
- Don't Start with C++!!!
+ evade completely C++ at the begin
unles:
+ you want to be a "professional" game developer -> don't expect this with not a good university course too
+ walk around and test some languages, its nice to learn some logic and at the end you will know witch one use, i can help you telling some good ones:
* Python : AWESOME! clean syntax and easy to learn this one have a good future! multiplataform
* C# : good option, (delphi, java, c++) mix, XNA have a BIGGGG community but stick you in win..
* FreeBasic : another great option, fast, clear, easy to learn, provides support to *ALL good librarys around {OGL, D3D, SDL, FMOD, BASS, ALLEGRO, GTK, ... and lot more}, friendly community, multiplataform
* OPascal : great option, Fast as C++, clear, easy to learn, good frameworks avaliable, a good suport for good librarys as FB, multiplataform, and the greatest IDE ever {Delphi}
* Java : if you like to develop to mobile.



sorry my bad english {from brazil}

Share this post


Link to post
Share on other sites
Just to clear up the misconceptions I'm seeing here. C# is not restricted to Windows. You can use the Mono Project to use C# in Linux or OS X. You also are not restricted to XNA. There is the Tao Framework which exposes managed wrappers of SDL and OpenGL so you can make a true, cross-platform game using C#. There's even a few managed DirectX wrappers around that you can use. I just don't want anyone to think C# can only be used with XNA. (Though XNA is pretty awesome ;)).

Share this post


Link to post
Share on other sites
Quote:
Original post by arthurprs
Finnally i would recomend some things:
- Don't Start with C++!!!
+ evade completely C++ at the begin
unles:
+ you want to be a "professional" game developer -> don't expect this with not a good university course too

This is all lies, C++ rocks.

Learn C. C is easy. Very easy and very useful, learn it first. It's also free.

Share this post


Link to post
Share on other sites
Quote:
Original post by EligZero
Quote:
Original post by arthurprs
Finnally i would recomend some things:
- Don't Start with C++!!!
+ evade completely C++ at the begin
unles:
+ you want to be a "professional" game developer -> don't expect this with not a good university course too

This is all lies, C++ rocks.

Learn C. C is easy. Very easy and very useful, learn it first. It's also free.


C is not C++. They are related for sure, but there are lots of things in C++ that make it much harder than C.

While I agree neither are particularly hard for me, I also spent years getting good at them. I wouldn't recommend them as a first language. My first language was BASIC. I would highly recommend keeping C or C++ as a second or third language to learn.

Share this post


Link to post
Share on other sites
Quote:
Original post by EligZero
C is easy.
That's debatable, and the ease of use of a particular language can be quite subjective. I personally didn't find C overly difficult, but it wasn't my first language and having never used it for anything substantial I won't claim to be a good C programmer. I did however find C annoying to work with in that it forces the programmer to deal with details that they simply shouldn't have to in most cases; strings being a good example.

Quote:
very useful
It's generally accepted that non-trivial programs will take longer the develop and may be more prone to error when written in C than with a higher level programming language. C is useful because it's extremely portable; this is not of great importance to beginners or even a large number of professionals.

Quote:
It's also free.
Most (perhaps all, I can't be bothered reading back through the thread to check if there are any that aren't) of the other languages mentioned in this thread can be learnt using free tools as well, so this point is irrelevant.

Share this post


Link to post
Share on other sites
Quote:
Original post by jbadams

Quote:
very useful
It's generally accepted that non-trivial programs will take longer the develop and may be more prone to error when written in C than with a higher level programming language. C is useful because it's extremely portable; this is not of great importance to beginners or even a large number of professionals.

Quote:
It's also free.
Most (perhaps all, I can't be bothered reading back through the thread to check if there are any that aren't) of the other languages mentioned in this thread can be learnt using free tools as well, so this point is irrelevant.


I think C is one of the simplest languages there is.

I said it's USEFUL. It's very useful. Specifically for embedded systems. Which it is. Very useful.

What I meant by that was that there are a LOT of libraries for C and it's generally very useful in any application you want to program. Compared to, say, Delphi.

Also, you're right, the others are available for free. I didn't say they weren't. I said C was free. That's all I said.

Further, I think he should learn C because it's the root of a LOT of different programming languages. Java, C#, and C++ to name three.

It's also a very influential language. It influences the design of a lot of modern languages so it's good to know where this influence is coming from.

Further, a lot of video game engines have been written in C. It helps learning how to write video games if you can read other people's code. For example, All of Carmack's code until Doom 3 is written in C.

GLSL is based on C. So is HLSL, and NVidia's Cg. So if he ever wants to do graphics work, it would be helpful to know C.

So, I think it'd be best if he learned C first.

Also I didn't say C++ was the same thing as C. I said C++ is awesome, and he should learn C first. Which he should.

Edit; Though I agree about the BASIC comment.

Share this post


Link to post
Share on other sites
C may be simple but it sucks to use, I found I've been having the greatest success with Python, seems to have a just right amount of language features, and has a great standard library and addon libraries making it easy to make games and other applications.

Share this post


Link to post
Share on other sites
Quote:
Original post by EligZero
Quote:
Original post by jbadams

Quote:
very useful
It's generally accepted that non-trivial programs will take longer the develop and may be more prone to error when written in C than with a higher level programming language. C is useful because it's extremely portable; this is not of great importance to beginners or even a large number of professionals.

Quote:
It's also free.
Most (perhaps all, I can't be bothered reading back through the thread to check if there are any that aren't) of the other languages mentioned in this thread can be learnt using free tools as well, so this point is irrelevant.


I think C is one of the simplest languages there is.

In what way? I would strongly disagree.

Quote:
I said it's USEFUL. It's very useful. Specifically for embedded systems. Which it is. Very useful.

The OP is asking about starting game development, not embedded system development. I realize that game consoles can be considered embedded systems (some of them, at least), but it's unlikely he would start with console development.

Quote:
What I meant by that was that there are a LOT of libraries for C and it's generally very useful in any application you want to program. Compared to, say, Delphi.

There are many libraries for C. There are also many libraries for other languages, sometimes even C libraries that can be used through a foreign interface system.

Quote:
Also, you're right, the others are available for free. I didn't say they weren't. I said C was free. That's all I said.

The statement "C is free" is meaningless. C is a language specification.

Quote:
Further, I think he should learn C because it's the root of a LOT of different programming languages. Java, C#, and C++ to name three.

All of the languages you listed are either merely loosely influenced by C (primarily through it's syntax) and/or are programmed in a very different style.

Quote:
It's also a very influential language. It influences the design of a lot of modern languages so it's good to know where this influence is coming from.

How so?

Quote:
Further, a lot of video game engines have been written in C. It helps learning how to write video games if you can read other people's code. For example, All of Carmack's code until Doom 3 is written in C.

Many popular commercial video game engines are also full of ugly hacks. Should you also use that as an example?

Quote:
GLSL is based on C. So is HLSL, and NVidia's Cg. So if he ever wants to do graphics work, it would be helpful to know C.

Again, those languages are quite different from standard C.

Quote:
So, I think it'd be best if he learned C first.

Also I didn't say C++ was the same thing as C. I said C++ is awesome, and he should learn C first. Which he should.

I disagree that he should learn C first and that C++ is "awesome."

Other than C and C++ (and other C influenced languages), what languages are you competent in?

In my opinion, a good language to start with, if you are interested in game development, is Python. You can find the relevant link in my signature.

Share this post


Link to post
Share on other sites
Quote:
Original post by EligZero
I think C is one of the simplest languages there is.


This is true: it has very few basic concepts to manipulate (although these concepts can be counter-intuitive if you don't 'get' the philosophy of the language, which requires some grounding in language semantics beforehand). It's certainly not a 'simple' language to use, though.

Quote:
I said it's USEFUL. It's very useful. Specifically for embedded systems. Which it is. Very useful.

What I meant by that was that there are a LOT of libraries for C and it's generally very useful in any application you want to program. Compared to, say, Delphi.


This is debatable: it depends on your definition of 'useful'. The point being that, aside from embedded or systems programming, C is inferior to other existing languages in almost every other domain in terms of productivity and, as a consequence, performance. Also, most C libraries can be imported in other languages (and most relevant libraries have .NET bindings, or exist in .NET in a better form).

Quote:
Further, I think he should learn C because it's the root of a LOT of different programming languages. Java, C#, and C++ to name three.

It's also a very influential language. It influences the design of a lot of modern languages so it's good to know where this influence is coming from.


This is either incorrect or irrelevant, depending on what you mean. The main relationship between Java and C, C# and C, or modern C++ and C, is the syntax (the reason they are called 'C family languages' is mostly because they use braces to delimit scopes, semicolons to delimit statements, Type var to define variables, and some other syntax-level gimmicks) which is irrelevant (you could also start with C#, and move back to C after that). At the semantic level, the relationships are minimal: though C++ uses at its core the C rvalue/lvalue model, it twists and extends it beyond recognition. Java and C#, however, use a completely different imperative semantic model based on references.

Learning C to work in Java and C# seems to me about as useful as learning latin to speak italian: you get the alphabet, but you'll just sound stupid. C++ is a corner case: while you can write programs using a C++ compiler once you learn C, it has been often observed that C programmers have much more trouble learning C++ and using it efficiently (that is, not writing in 500 lines what could be done in 25).

Quote:
So, I think it'd be best if he learned C first.


Jumping to conclusions. Your post is a nice argument for learning C, but not as a first language. Before learning how C-functions work, learning about functions would be a good idea (hint: C-functions are not first-class citizens, why?). Before learning how C-arrays work, learning about containers would be a good start (hint: C-arrays are not first-class citizens, why?). Before learning about C pointers, learning about reference semantics and iterators would be a good idea. Before learning about C strings, learning about string manipulation in general would be a good idea.

Share this post


Link to post
Share on other sites
Quote:
Original post by aCynic2
Quote:
Original post by Roboguy
Quote:
Original post by aCynic2
Quote:
Original post by Roboguy
Quote:
Further, a lot of video game engines have been written in C. It helps learning how to write video games if you can read other people's code. For example, All of Carmack's code until Doom 3 is written in C.

Many popular commercial video game engines are also full of ugly hacks. Should you also use that as an example?


You're equating poor design and implementation habits to the language?

Games go out on the market today in poor shape, and they use C++ or C#. Is that a result of the language?

NWN2 is the buggiest game in my playing history. It's crafted in C++ and C#.


Not at all. What I was saying is that he appears to be saying that you should use C because many popular game engines are written in C. I believe, from that line of reasoning it follows that you should also use their coding style as inspiration for your own, which I do not think you should do.


I'm going to go outside of this whole argument and say the best thing they can do for their future career is not choose a language to learn, but learn a proper process by which to work by. This is general enough to be applicible to any project at any level in any language.

Learn to design on paper before ever touching the keyboard.


Firstly, I fail to see how this follows the conversation you quoted. Secondly, I disagree. If you start by just learning to design on paper, then you will need to learn a language. If you start with a language, you will already know some of a language. You can usually generalize ideas from one language to another fairly easily, when you have sufficient experience.

EDIT: This is a weird bug. Apparently the "l" in "generalize" in the main body of this post is being replaced by a "!" Hopefully it won't be a heisenbug that will be affected by this edit.
EDIT 2: Apparently it was. Still, someone might want to investigate possible causes.

Share this post


Link to post
Share on other sites
Quote:
Original post by EligZero
Quote:
Original post by arthurprs
Finnally i would recomend some things:
- Don't Start with C++!!!
+ evade completely C++ at the begin
unles:
+ you want to be a "professional" game developer -> don't expect this with not a good university course too

This is all lies, C++ rocks.

Learn C. C is easy. Very easy and very useful, learn it first. It's also free.


I don't said nothing wrong, just to skip it in the beging,
i know c++ and i like it too

C is not too "bad" choice to start but, it have a easy part but the the hard one is CRYPT!
I keed recomending to skip C/C++ in the begin, but you can also forget it, if programming for hoobie/fun

Quote:
Just to clear up the misconceptions I'm seeing here. C# is not restricted to Windows. You can use the Mono Project to use C# in Linux or OS X. You also are not restricted to XNA. There is the Tao Framework which exposes managed wrappers of SDL and OpenGL so you can make a true, cross-platform game using C#. There's even a few managed DirectX wrappers around that you can use. I just don't want anyone to think C# can only be used with XNA. (Though XNA is pretty awesome ;)).

I know, but "I" don't see a very good choice to use C# without XNA

Share this post


Link to post
Share on other sites
I used to use C++ primarily for games, and it worked great. If you need speed then go for it. I mean if you just want to make games for fun then C# with XNA is very nice and easy to do and does all the tedious work. I actually only use C# and XNA for class, I'm more of a ActionScript person myself (aka flash).

I will however state though that C++ is definitely the way to go. Having to implement every little detail gives you so much more experience in coding than with other languages. For instance, using XNA for texture loading is cool but writing your own texture loader or your own rendering system to learn is much more gratifying IMO.

Share this post


Link to post
Share on other sites
I learned programing in basic (on a PC jr.) then later lisp (never again) and pascal. And honestly it all helped.

Don't remember where it was said but: programing is understanding. No matter what the language you have to be able to think out problems / structures / relationships throughly and clearly.

Now I use C++ for 80% of what I write and python for the remaining 20%. Both are great. But once on knows how to program the language is secondary.

edit: just wanted to add that even though it sounds ridiculous, the learn 'em all comment isn't that far off.

Share this post


Link to post
Share on other sites
Quote:
Original post by Roboguy
Quote:
Original post by EligZero
Quote:
Original post by jbadams

Quote:
very useful
It's generally accepted that non-trivial programs will take longer the develop and may be more prone to error when written in C than with a higher level programming language. C is useful because it's extremely portable; this is not of great importance to beginners or even a large number of professionals.

Quote:
It's also free.
Most (perhaps all, I can't be bothered reading back through the thread to check if there are any that aren't) of the other languages mentioned in this thread can be learnt using free tools as well, so this point is irrelevant.


I think C is one of the simplest languages there is.

In what way? I would strongly disagree.

Quote:
I said it's USEFUL. It's very useful. Specifically for embedded systems. Which it is. Very useful.

The OP is asking about starting game development, not embedded system development. I realize that game consoles can be considered embedded systems (some of them, at least), but it's unlikely he would start with console development.

Quote:
What I meant by that was that there are a LOT of libraries for C and it's generally very useful in any application you want to program. Compared to, say, Delphi.

There are many libraries for C. There are also many libraries for other languages, sometimes even C libraries that can be used through a foreign interface system.

Quote:
Also, you're right, the others are available for free. I didn't say they weren't. I said C was free. That's all I said.

The statement "C is free" is meaningless. C is a language specification.

Quote:
Further, I think he should learn C because it's the root of a LOT of different programming languages. Java, C#, and C++ to name three.

All of the languages you listed are either merely loosely influenced by C (primarily through it's syntax) and/or are programmed in a very different style.

Quote:
It's also a very influential language. It influences the design of a lot of modern languages so it's good to know where this influence is coming from.

How so?

Quote:
Further, a lot of video game engines have been written in C. It helps learning how to write video games if you can read other people's code. For example, All of Carmack's code until Doom 3 is written in C.

Many popular commercial video game engines are also full of ugly hacks. Should you also use that as an example?

Quote:
GLSL is based on C. So is HLSL, and NVidia's Cg. So if he ever wants to do graphics work, it would be helpful to know C.

Again, those languages are quite different from standard C.

Quote:
So, I think it'd be best if he learned C first.

Also I didn't say C++ was the same thing as C. I said C++ is awesome, and he should learn C first. Which he should.

I disagree that he should learn C first and that C++ is "awesome."

Other than C and C++ (and other C influenced languages), what languages are you competent in?

In my opinion, a good language to start with, if you are interested in game development, is Python. You can find the relevant link in my signature.


First of all, Python heh.

Second, It's not relevant what programming languages I know, but nice try. Third, you don't like C++? Hahah.

Fourth, The statement C is free is to differentiate it from things like Delphi.

And don't try to tell me there are as many libraries for other languages as there are for C. That's simply not true.

I fail to see how or why any of you think C is a more complicated language than anything else.

Java and C# are very notably influenced by C, I don't see how anyone could argue that.

Further, I wasn't jumping to conclusions. I stated my case, and stated my opinion.

And it's not debatable that C has a lot of libraries. That's just insane. Of course C has a lot of libraries.

Share this post


Link to post
Share on other sites
Quote:
Original post by EligZero
First of all, Python heh.

That does not give any actual information on your thoughts on Python.

Quote:
Second, It's not relevant what programming languages I know, but nice try.

It is in the sense that it will affect your perception of other languages. I does, trust me; I used to only use VB 6 and refuse to learn any other language. That, however, was a long time and many languages ago.

Quote:
Third, you don't like C++? Hahah.

Yes, I do not. Am I not entitled to my own opinion? Also, I would like to point out that many people nowadays do agree with me on this point.

Quote:
Fourth, The statement C is free is to differentiate it from things like Delphi.

As I said, the statement "C is free" is meaningless because C is a language not a product. Delphi is not a language, it is a product of the Borland Software Corporation that is an implementation of the Object Pascal language.

Quote:
And don't try to tell me there are as many libraries for other languages as there are for C. That's simply not true.

Have you heard of foreign function interfaces? Basically, in languages that support them, you can call functions from another language (often C). This is, IIRC, how pygame works. It uses the C library SDL through such a system.

Quote:
I fail to see how or why any of you think C is a more complicated language than anything else.

That statement does not make sense. More complicated than what? I think it's more complicated than some other languages and less complicated than others.

Quote:
Java and C# are very notably influenced by C, I don't see how anyone could argue that.

I can. Like I said, they were primarily influenced through syntax. There semantics are quite different.

Quote:
Further, I wasn't jumping to conclusions. I stated my case, and stated my opinion.

Where did I say you were jumping to conclusions?

Quote:
And it's not debatable that C has a lot of libraries. That's just insane. Of course C has a lot of libraries.

Where did I say C did not have a lot of libraries?
Quote:
Original post by Roboguy
There are many libraries for C.



I also recommend you be a little bit less defensive.

Share this post


Link to post
Share on other sites
Quote:
Original post by EligZero
Quote:
Original post by arthurprs
Finnally i would recomend some things:
- Don't Start with C++!!!
+ evade completely C++ at the begin
unles:
+ you want to be a "professional" game developer -> don't expect this with not a good university course too

This is all lies, C++ rocks.

Learn C. C is easy. Very easy and very useful, learn it first. It's also free.


C and C++ are greatly different having worked with both. and in my opinion the quirks in C arent worth it. But i do agree with C++. C# is considered greater by many here but is one of those microsoft only ones and is a hassle sometimes to work with since microsoft just wants to make money. All and all though if your a beginner C# or Python might be good. But i still like C++ more but thats just my opinion.

Share this post


Link to post
Share on other sites
Quote:
Original post by Spylogo
C# is considered greater by many here but is one of those microsoft only ones and is a hassle sometimes to work with since microsoft just wants to make money.
C# is an ECMA and ISO standard, it isn't controlled by Microsoft. You can run C# applications on non-Windows platforms using Mono or to a lesser extent DotGNU. Mono provide a good cross-platform C# IDE in MonoDevelop and if you're on Windows Microsoft provide their excellent Visual C# 2005 Express Edition for free. There are other non-MS IDEs available both for Windows and other platforms, but the two presented are really the best choices. It's unquestionable that Microsoft is out to make money -- that's what businesses do -- but your assumptions about C# aren't really true and you shouldn't let your views of MS influence your opinion of a perfectly good language.

Quote:
Original post by EligZero
First of all, Python heh.
I'm going to assume you're expressing your disdain for Python there (how about you actually provide a useful comment or not mention it all if you're going to participate in the discussion?) and respond with the observation that Python is used extensively by Google and Industrial Light & Magic amongst many others. A couple of notable uses relevant to our industry include EVE Online (succesful MMO written mostly in Stackless Python), Civilization IV (succesful TBS, made extensive use of Python) and ToonTown Online (succesful MMO, written almost entirely with Python using Panda3d). I won't comment further except to observe that Python is quite capable and a lot of very knowledgable people and succesful companies do not share your apparent disdain for the language; if you don't like it personally that's fine, but don't pretend the language itself isn't a good choice for others.

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