Advertisement

Choosing programming language

Started by March 31, 2018 01:03 PM
19 comments, last by katelucky 6 years, 10 months ago

Hello. I have 18 years old and I will be finishing school now. Which programming language should I learn for making games? Secondly, I was thinking about making websites like this one https://mmoauctions.com I want to go to university. IT it will be a good choice? Thanks for all answer.

It doesn't matter which language you learn, because you will probably end up learning many different ones! If you've never programmed before, Python is a good choice to get started with. If you want to dive straight into making games, it might be worthwhile downloading Unity and teaching yourself C#, which is the main language Unity uses for game-making. And for professionals working on 'AAA' games, it is common to use C++, although that is a more complex language and probably not recommended as your first choice.

Advertisement

Aloe, you should ask your education (career preparation) questions in the Careers forum. 

-- Tom Sloper -- sloperama.com

It doesn't really matter what is your first language, as you will learn new languages as you advance through your career. When I was in highschool (I graduated 2006), I learned Visual Basic 6 as my first language. The four year university I attended taught everyone C++, and required it for the most of the four year program, although they encouraged learning other languages and offered classes in Java and C#.

Now, I use C# professionally at work. Started learning it three years just simply trying to make a telescope mod for Kerbal Space Program. Worked with it a little bit in school, and since then, have used it for 18 months at my job. In addition, at my job we use PowerShell scripts for special one time scenarios. 

The point is that the important thing is that you learn good programming practices and how to program, rather than learning just one language. Throughout your career you will need to use multiple languages depending on what you're working on and who you're working for. 

I had the same question back when I was in college. Later I realised that language doesnt really matter, its all about OOP.

If you are completely new to game develpment. I would suggest you not to start with C,C++,C#,Java. Also, I would recommend that you dont start with Unity or any other big engines.

Dont jump straightaway into it just because it is popular and widely used in the game industry. Start smaller. Go with python(pygame). There are plenty of resources available(easily and freely) to get you started. Get fimilar with:-

1.How a game loop works.

2.What are sprites and how to use a spritesheet.

3.How to animate your characters and other game objects.

3.What is a tileMap and how to generate a map from an array of data.

4. Game physics . Collision checks and resolution.

These are the basics.  Once you are comfortable with it.

Then you can move on to Java(libGDX) . You will realize how smooth the transition is now that you are familiar with the workings of a game loop. You can then move on to the languages like C++ or C#. 

The next thing to master would be the design patterns. How to structure your code. 

GoodLuck!

this:

http://cs.indstate.edu/~cbasavaraj/cs559/the_c_programming_language_2.pdf

followed by this:

https://handmadehero.org/

Is EVERYTHING you need to make your own games, nothing more: just these two things.

 

ps: if you've never programmed before, you will probably need a good amount of practice before moving to the second step.

pps: please, stay away from oop.

Advertisement
1 hour ago, erpeo93 said:

this:

http://cs.indstate.edu/~cbasavaraj/cs559/the_c_programming_language_2.pdf

followed by this:

https://handmadehero.org/

Is EVERYTHING you need to make your own games, nothing more: just these two things.

 

ps: if you've never programmed before, you will probably need a good amount of practice before moving to the second step.

pps: please, stay away from oop.

What benefit would @Aloe2 have from only learning C Programming and refusing to learn OOP because someone like 'Handmadehero - Casey Muratori' holds a strong opinion against the use of OOP entirely.

I don't understand any bias when it comes to choosing the paradigm you will code in. OOP, procedural, functional, ect... are just tools available to help solve the problem. It's extremely arrogant for someone to toss out OOP as 100% bad, or to give it the praise of being 100% good while discounting everything else (the same applies to any paradigm). I would strongly suggest that every new programmer becomes familiar with the various types so they know when to use the best tool for the job.

I've seen the same 'concept' when people debate programming languages. At the end of the day all that matters is that our goals are being accomplished, it doesn't matter what tools you use. I've met people that believe real games are only made in C++, which is absolute non-sense and I've been using C++ for 18 years, but I have enough sense to know GameMaker can produce good games. They attempt to devalue, or eliminate other tools to bring a form of elitism to their way of working.

If @Aloe2 is looking at attending school to obtain an IT degree, then to get hired post-graduation while only programming with C, and refusing to touch OOP, it would heavily impact @Aloe2's ability to obtain employment in the present time, and years to come. I can only state this in my area, but most entry level jobs are either C# or JAVA based, and require knowledge in OOP. C++ can go either way because it's a multi-paradigm language. I don't see a lot of C based jobs at entry level.

Programmer and 3D Artist

11 hours ago, Rutin said:

What benefit would @Aloe2 have from only learning C Programming and refusing to learn OOP because someone like 'Handmadehero - Casey Muratori' holds a strong opinion against the use of OOP entirely.

I don't understand any bias when it comes to choosing the paradigm you will code in. OOP, procedural, functional, ect... are just tools available to help solve the problem. It's extremely arrogant for someone to toss out OOP as 100% bad, or to give it the praise of being 100% good while discounting everything else (the same applies to any paradigm). I would strongly suggest that every new programmer becomes familiar with the various types so they know when to use the best tool for the job.

I've seen the same 'concept' when people debate programming languages. At the end of the day all that matters is that our goals are being accomplished, it doesn't matter what tools you use. I've met people that believe real games are only made in C++, which is absolute non-sense and I've been using C++ for 18 years, but I have enough sense to know GameMaker can produce good games. They attempt to devalue, or eliminate other tools to bring a form of elitism to their way of working.

If @Aloe2 is looking at attending school to obtain an IT degree, then to get hired post-graduation while only programming with C, and refusing to touch OOP, it would heavily impact @Aloe2's ability to obtain employment in the present time, and years to come. I can only state this in my area, but most entry level jobs are either C# or JAVA based, and require knowledge in OOP. C++ can go either way because it's a multi-paradigm language. I don't see a lot of C based jobs at entry level.

OP asked for "Which programming language should I learn for making games?" not for "Which programming language should I learn to land a job in the IT industry?", and I replied accordingly to my experience. 

Unfortunately just learning a programming language isn't enough to make games... you also have to develop good programming practices that allow you to build good software.

A paradigm is something that forces you to think in certain ways and to make software accordingly to that paradigm, oop being the most restrictive one (and the most commonly used unfortunately).

I totally agree that everything has it's own place, and that op should learn and see a bit of everything... but oop isn't the best way to approach game development, and every good game programmer will tell you the same.

 

I would say "please stay away from any programming paradigm in particular, and just learn good programming practice". Sounds good now?

 

 

28 minutes ago, erpeo93 said:

OP asked for "Which programming language should I learn for making games?" not for "Which programming language should I learn to land a job in the IT industry?", and I replied accordingly to my experience.

You need to take the OP's post in the entire context displayed (It's clear English isn't the poster's native tongue):

"Hello. I have 18 years old and I will be finishing school now. Which programming language should I learn for making games? I want to go to university. IT it will be a good choice? Thanks for all answer."

People usually don't go to University after finishing High School to obtain an IT degree and not seek employment. As this is a Game Development forum it's safe to say that the OP's intent is to get an IT Degree and obtain employment in the game industry, otherwise why not just post on a general programming platform for advice? If I'm wrong, then @Aloe2 is free to correct me.

28 minutes ago, erpeo93 said:

"At the end of the day all that matters is that our goals are being accomplished" I totally agree with that... that's the reason why I suggested him to stay away from oop... It should be obvious that I'm not saying that just because muratori said so, but because I've tried programming games both ways, and oop isn't going to hold up when talking about programming games.

Claiming OOP doesn't hold up when programming games is a fallacy. I've programmed engines, tool kits, and games using OOP without any problems. I've also programmed games without using OOP, and even worked on tool-kits using no OOP whatsoever. These are nothing more than different approaches to completing the same end result. You have to consider what you're trying to achieve, and what tools you need to complete that objective.

If you're personally unable to make a game using an OOP approach, that's more of reflection on your ability, not the paradigm being used.

As an example, on my Pac-Man entry I used C++ with a mixture of OOP and non-OOP in the same project, and my project completed just fine... On a commercial project I'm working on it's designed with OOP in mind.

I'm interested in reading how you've come to the conclusion that OOP doesn't hold up when talking about programming games. That's a very broad claim. As an example, you could make the same game using different paradigms, or a combination of paradigms if the language allows it.

Programmer and 3D Artist

1 hour ago, Rutin said:

You need to take the OP's post in the entire context displayed (It's clear English isn't the poster's native tongue):

"Hello. I have 18 years old and I will be finishing school now. Which programming language should I learn for making games? I want to go to university. IT it will be a good choice? Thanks for all answer."

People usually don't go to University after finishing High School to obtain an IT degree and not seek employment. As this is a Game Development forum it's safe to say that the OP's intent is to get an IT Degree and obtain employment in the game industry, otherwise why not just post on a general programming platform for advice? If I'm wrong, then @Aloe2 is free to correct me.

Claiming OOP doesn't hold up when programming games is a fallacy. I've programmed engines, tool kits, and games using OOP without any problems. I've also programmed games without using OOP, and even worked on tool-kits using no OOP whatsoever. These are nothing more than different approaches to completing the same end result. You have to consider what you're trying to achieve, and what tools you need to complete that objective.

If you're personally unable to make a game using an OOP approach, that's more of reflection on your ability, not the paradigm being used.

As an example, on my Pac-Man entry I used C++ with a mixture of OOP and non-OOP in the same project, and my project completed just fine... On a commercial project I'm working on it's designed with OOP in mind.

I'm interested in reading how you've come to the conclusion that OOP doesn't hold up when talking about programming games. That's a very broad claim. As an example, you could make the same game using different paradigms, or a combination of paradigms if the language allows it.

I'm not unable to program in oop, is just that I don't feel confortable with it because it forces me to do stuff "in a certain way", as any other paradigm does. I'm not  against oop in particular, I'm saying that the op should not focus on any specific paradigm. The fact that most people tend to suggest  oop as a "way to do games" made me address that specifically, otherwise I wouldn't have said that.

 

oop doesn't hold up because you're often forced to blindly bind operations to data types, and especially in something as mutable and complicated as a game, where the design and the architecture is constantly evolving, the more you can delay that binding, the more you're able to develop the game organically.

The fun fact is that "objects" exists in all the programs (my game too of course), but they emerge from the organic development of the game, they're not created "artificially" by the programmer.

 

 

 

 

This topic is closed to new replies.

Advertisement