ID:1553461
 
(See the best response by Ter13.)
So I really want to start coding and develop my own game.. and ive tried using the beginner tutorials on coding but the problem is that a tutorial shows you how to do something but it doesn't always explain why the coding is composed the way it is.


see I'm more so a creative person, meaning art and writing come naturally.. Technical things such as coding and mathematics can puzzle me. Basically I want to know what developers here have done which helped them not to just code but to UNDERSTAND it? If that makes sense. My problem is that I can follow as many tutorials as there are perfectly, but my lack of understanding coding is what holds me back from creating my own projects outside of tutorials.
The best way to learn is by doing. Use what you know to make something, get an idea in your head and go from there. There are some terrific commented tutorial source codes on the website already, and you can use them to pick up some of the basics. Search around here
You have to understand the whole computer, how the different parts work together in the hardware, how the different parts of the software interact, what the code you write is actually doing. When you understand the whole picture it makes it much easier to visualize the logic and make sense of things.

You can't work on a solution until you fully understand the problem you're trying to solve.
I recently came across the website code.org with some basic tutorials to teach function and control flow. This way of learning takes the language specifics out of the equation and allows you to focus more on what you're doing. This is the same type of style that the top universities in the country use to introduce the concepts of coding to new computer science students and has proved to be very successful.

Use the link below, each section has a short explanation of what is being added as things get more complex. The first set of lessons say they can be completed in an hour.

http://learn.code.org/hoc/1

Take a look at the concepts provided, they are the same in DM code as in this lesson (and most other programming languages) so you should be able to relate what you're learning to the BYOND compiler.
In response to MagicMountain
I don't agree with this personally. I like to know because it does help for somethings, but the reason for encapsulation is to allow you to work on things without having to know everything.
Best response
I don't agree with this personally. I like to know because it does help for somethings, but the reason for encapsulation is to allow you to work on things without having to know everything.

The first thing any budding programmer should learn is how computers store and manipulate data. Without a cursory understanding of this, you will wind up using less-ideal solutions to problems left and right.

I spent close to 9 years learning to program without bothering to understand the underlying theory, and finally, when I chose to re-learn everything from scratch by focusing on the underlying theory, it took me less than a year to get back to where I was before, and surpass it.

The most important thing about programming, is logic. Unless you understand to at least some cursory level how computers work, you cannot make logical decisions about how to approach a problem.
My take on it is that it is not too far removed from learning a traditional language. Knowing the finer points of the underlying language is part of mastering a language, but not a necessity to use it. Most four and five year old kids do not know anything about grammar, but can sure talk up a storm about this and that. Likewise, you can learn to do a lot of cool things without needing to know the nitty gritty details of assembly and the hardware below. What's most important is you. After all, only you can decide what is enough to satisfy your curiosity.
In response to Ter13
Thanks all for the posts.. Really helpful. I will check out that site, Pirion.

@Ter, what resources do you recommend that you used to learn about the underlying theories of how things work?
Start out with this wonderful Harvard lecture series on understanding computer science.

http://computerscience1.tv/2011/spring/

Google is your oyster.
In response to Ter13
Ter13 wrote:
I don't agree with this personally. I like to know because it does help for somethings, but the reason for encapsulation is to allow you to work on things without having to know everything.

The first thing any budding programmer should learn is how computers store and manipulate data. Without a cursory understanding of this, you will wind up using less-ideal solutions to problems left and right.

This, exactly. I'm not saying you need to know how to etch a PCB or program Tetris in assembly but you do need to know what compiling is and what a register is and what a program is. Sure you can write code without appreciating the memory you're shaping but you're just crippling yourself. Understanding the code begins with understanding the environment.
You are spot on.

Without understanding how memory is managed, you can't possibly understand when a contiguous array is better to use than a vector. It's all about making logical decisions.

Take a look at the object creation/deletion thread in bug reports where I diagnosed and tested thoroughly an issue with the way BYOND manages reference ids.

How could I have figured all of that out without having looked at DM's source code? It's because I understand the fundamentals, and that understanding allowed me to interpret the results of my tests in a manner that revealed the approach being taken by the software.

And in some ways, my tests revealed some things that even Lummox wasn't aware of, buried deep in the guts of Dan's old code.
I'll just put this here too. If you're bored and need a good listen to, I at least enjoyed it.

Harvard Programming