Advertisement

Where do I begin?

Started by March 09, 2015 10:01 PM
13 comments, last by Shpongle 9 years, 9 months ago

I'm sorry but it is NOT the way to go. Your advise is like - "so you want a driving license? Good, first you have to learn how to build a car and make one yourself".

Be careful about giving poor advice. Your analogy is not accurate. It would be more like "so you want to learn how to build cars? First you can learn how the various parts of a car work".

Data Structructures are a fundamental concept, and beginners that wish to do any non-trivial level of Game Programming should be learning them. Simple ones like linked lists, stacks, queues and different trees are small and concise enough to implement that they are a great tool for learning a language.

Of course they do not need to be learned, and you should give your reccomendation on how to start, but blantantly saying a certain method is wrong is doing a disservice to many.


I'm sorry but it is NOT the way to go. Your advise is like - "so you want a driving license? Good, first you have to learn how to build a car and make one yourself".

Be careful about giving poor advice. Your analogy is not accurate. It would be more like "so you want to learn how to build cars? First you can learn how the various parts of a car work".

Data Structructures are a fundamental concept, and beginners that wish to do any non-trivial level of Game Programming should be learning them. Simple ones like linked lists, stacks, queues and different trees are small and concise enough to implement that they are a great tool for learning a language.

Of course they do not need to be learned, and you should give your reccomendation on how to start, but blantantly saying a certain method is wrong is doing a disservice to many.

I would make this analogy more along the lines of:

"So you want to learn to drive? You first must learn about the different types of roads you are allowed to use. A highway will get you there faster, but use more fuel, whereas a side road will get you there slower but use less fuel."

Read this as, in computing terms:

"So, you want to learn to store data? You must first learn about the different ways of doing this. A linked list will allow for fast insertion and deletion of items, but no way to access an element immediately by its indicies, and an array will allow for quick access to an item by its index, but no inexpensive way to insert or delete items from the list".

Nowhere in there was there any mention of:

"So, you want to learn to drive a car? Well, you'll be driving them on a road, but it helps to know that a road is a flat surface made from asphalt which is commonly composed of 5% asphalt/bitumen cement and 95% aggregates (stone, sand, and gravel). Due to its highly viscous nature, asphalt/bitumen cement must be heated so it can be mixed with the aggregates at the asphalt mixing plant..."

I'm sure you understand what i'm trying to say here, an understanding of how the different data structures behave is neccessary, knowing how to create them, for anyone but C++ library developers, is generally not required these days.

That's my story, and i'm sticking to it. :)

Advertisement


I'm sure you understand what i'm trying to say here, an understanding of how the different data structures behave is neccessary, knowing how to create them, for anyone but C++ library developers, is generally not required these days.

Haha! I agree with your general sentiment that knowing how to use them is more important than creating them. I took issue with the sentiment that it is "Wrong" to implement them yourself.

The basic data structures are relatively trivial to implement, and provide a good exercise for learning a language, so broadly saying not to implement them is actively toxic advice in my eyes.

That being said, I would expect an entry level developer to be able to implement any of the basic data structures with their eyes closed (or at least thats whats expected where I work). They are so fundamentally important, that someone without that understanding would immediatly throw up red flags.

We are starting to peter off topic here, so im going to leave it at that!

You have to learn the basics and be comfortable with them otherwise you can build nothing. Know how to move and shape data, control flow etc

A good programmer can read code and understand and reason about what it does in the same way a good musician can read music and know what it will sound like, its progression etc.

Without a deep knowledge you will end up a cut and paste programmer, searching for snippets on google and trying to bodge them together and then have no idea why it is not working when things go wrong.

On the whole, the language does not matter too much. That said C/C++ are close to the metal languages that require you to manage resources so probably better to start with something with garbage collection, C#, Java, Lua etc

Also learn about source control and use it. Not enough people recommend it to beginners but there is nothing worse than starting a set of changes, realising they are wrong and now you have broken code and are trying to remember what you had and rewrite it. The single most valuable tool in all software development is source control. :)

Personally, I would recommend starting with the fundamental, straight-up, C/C++. Forget all the "Visual" stuff and the bells and whistles; the focus is to develop your programming skills and hone your troubleshooting skills. I would also recommend a dedicated programming environment such as Linux (CentOS is my flavor of choice) using only the command-line GNU compiler. This will do many things to benefit you in the long run, from keeping it simple to helping you learn a non-Windows environment, if you don't already.

From there, don't even THINK about game development; not even Ro Sham Bo. That's the goal, but not the focus. You'll start with your obligatory "Hello World" and progress through to implementing your own data structures; linked lists, stacks, queues, and binary trees. Then you'll have a real solid understanding for the fundamental concepts that many budding programmers miss these days.

While on the one hand I kinda get where you are coming from, on the other hand I think this is really bad advice for a beginner. Throwing them in the deep end by suggesting a whole new OS and eschewing any modern IDEs is most likely going to confuse and frustrate most people. And then they'll be much more likely to give up.

Likewise, suggesting someone can't start making games until they know things like linked lists and binary trees is absurd. Lots of simple and fun games can be made without data structures more complicated than a basic array. For a beginner it's important they start seeing results early on a get a feeling of progress. Over time they can build on that knowledge when they need something more complicated.

This topic is closed to new replies.

Advertisement