ID:98313
 
Keywords: dm, guide, programming, source
The below was created in reply to the following topic:

http://www.byond.com/members/BYONDRPG/forum?id=2248#2248


In which a rather heated dispute was made over someone choosing to use and learn from a source file rather than actual structured learning material.

Since I was beaten to the punch in creating my reply, and I decided it did not deserve to be deleted, I figured I'd generalize it and use it to address the larger problem on a whole.

First, the reply. It might not mean much out of context, so if you can spare the time, give the topic a once-over.

I have summarized my view below the reply, at the bottom of this page.





-----------------------------------------------




SnowWolfX wrote:
I know why the numbers of Byond are Depleting.
People like to be welcomed with warmth.

But that is not the case.



And you can say all you want about me using "enter" too much, but i dont hear you say something about HiddeKnight who is using CAPSLOCK which is even more annoying.


I already got my Code to work since "Lige" was so helpfull

Which is not how the rest here treast a curious visitor.


I was curious.

I ask a question.

all i get is "stupid people" who Force shit down my throat.

I dont ask for answers unless it was to 'help me fix the problem i had'

Which has neither HiddeKnight nor Mikau nor Schnitzelnagler done.

You can attack how i write, how bad my 'visions are'

You can SHOUT AT ME IN CAPSLOCK.

That does only point to the fact that you people hate to help!



You could all take an example from Lige.

He is a Friendly helpfull Person.

Willing to help somebody in trouble.
Without "Assuming i use it for evil"

Just a simple question, a simple answer.

After Lige gave me the answer, i have the program running like a charm.

No thanks to you guys.

Who only post on the forum to "harrass" people.





Congratulations, you fixed this problem. How long until the next one?

We offered you help different to what you want. You wanted a quick fix, the quicker the better - if you could copy paste and didn't need to think, all the better.

We offered you the chance to learn and understand what the problem was, what you did wrong, why it was wrong, and what you could do to fix it.

Instead you completely ignore us.

And now you try and take the high road by accusing us of harassing you?


Perhaps you could listen to us.

var/list/admins=list("SnowWolfX","Scullkid","Prodigy_SD","Dream Girl","Zell213","Shy_guy197",\
"GeneStarwindStarlet","Arc-mage22","Supergotron","Zajan","NeoStrider","UnknownOrb","Barthezz",\
"Uralan","Dragonballfan312","KendriX","Neo_Undead","Innocent Child","DragonHero226","Karu_01")
client//Client is better because you are assigning these verbs to the KEY, not the CHARACTER
New()
..()
src<<sound('mus2.mid',1)
mob.loc = locate(75,68,1)//You should really be using target warp node object, plus this would be located elsewhere but for your copy-pasteable goodness, I'll leave it here
if(key in admins)
verbs += typesof(/mob/Mod/verb)




Because maybe, just maybe, we actually know what it is we're talking about.


But my guess is, you can't even tell what the difference is between yours and my example.


-----------------------------------------------





With that out of the way I want to address why it's such a big deal. (At least to me)


There is a reason there are structured learning materials in the first place.
With any material you decide to study, you can only learn as much as is contained within it.

A source file created without intent to be a learning document most likely will not have any comments or explanation associated with it - or it will be sparsely dispersed and badly explained when present.

That way, when you are studying it, you can very easily misunderstand any given subject.
If there are any mistakes in the code, you will probably just accept them, as it is unlikely for you to know better.

There may be bad practices, bad habits, and you will certainly pick those up.

But enough of the negatives - they won't dissuade anyone who has convinced themselves to 'learn by doing' via the route of hacking to bits a source file - or at least, not on their own.

Let's take the BYOND guide for example. This is by no means the only introductory documentation for DM, and I am not claiming it is the best - but it's very polished, professional and will serve as our example very nicely.

The depth and level of detail to a guide devoted to teaching will always outstrip an uncommented source file, even if the source file IS problem free(Which is highly unlikely). Most guides will come with some snippets of source code themselves, and in the process of following them, you will develop, from start to finish, your own source file, understanding how it came to be, why everything is where it is, and most importantly, what the purpose of everything is.

So how is this not, 'learning by doing'?

But more importantly, you understand the process, and with a structured learning guide, you will cover more topics and situations than any source file. You will learn beyond what is NECESSARY to get the program to run and into what is PROPER. Other people have covered the problem of, 'just because it runs doesn't mean it's right'-
See Tiberath's post:
http://www.byond.com/members/ DreamMakers?command=view_post&post=95390
-And this kind of experience can only come from doing more than the bare basics.



So if you're still tinkering away at somebody else's source file, ask yourself this:
Why isn't it YOUR source file?
Well... The DM Guide is pretty offsetting. And newcomers would probably be deterred from it, especially if they have no clue how what some of the terminology means.

Before they attempt to learn DM, I think it would be much wiser if they bought a book on programming in general - Just to learn some concepts. Plus, having something of the sort can be more exciting, since you wont seem lost. Half-Price books has em, Haha.

And after thinking about it, there are plenty of helpful people on the forums. Granted, some can be assholes, others will have no problem in providing some information for learners.

Learning is definitely about questions, not answers. If you ask the wrong question, you will get the wrong answer. So, messing with source-code will get you nowhere. What will is learning, than asking "Why" or "How can this be used?"

Learning by source-code is like memorizing formulas in mathematics - You will only be able to use, never derive.

So, your absolutely right. Plus, learning from source code is like trying to decode patterns and determine what they do. And we all know that can lead to some pretty bad fallacies.
Whether you're learning from the DM guide or from a larger example, you have to suspend your confusion. Take the first snippet in the DM guide as an example:

mob
Login()
world << "Hello, world!"


There are lots of questions you could ask about that. What's a mob? What's Login()? When does Login occur? What's world? The problem with learning from larger examples is not that you won't fully understand them - people don't even understand the most basic examples!

When you start learning you're not expected to fully understand what you're doing. The trick is to not get lost in the confusion. Start making sense of little things and continually revise the way you think about things to reconcile new ideas with your current understanding. You need to accept that the example outputs "Hello, world!" and realize that you'll answer the other questions (what's a mob?) later on.

If the first time you see a for loop is when you asked "how do i output a list of all players in the world?", you'll naturally think that for loops are used for looping over all players. As you play with the code and see for loops in more places, you'll learn more uses for them and build up a proper understanding of them.

Because DM has a lot of built in things (mobs, objs, turfs, areas, clients, screen objects, save files, verbs, etc.) that C or Java don't have, a lot of DM must be learned by example. There's not much conceptual background to screen objects, you just need to see an example of how to use them.

Learning from examples is not a bad thing if you have the right mindset. With the wrong mindset any approach to learning can fail.
Forum_account wrote:
Learning from examples is not a bad thing if you have the right mindset. With the wrong mindset any approach to learning can fail.

This, exactly. We've been over this in Chatters as well -- there is nothing wrong with preferring to learn by experimentation. That's what we have demos for. The current trend of shoving two book's worth of guides and references at newbies serves only to alienate the majority of them. And this is something ironic I've noticed. Many, many people here, who hail the DM Guide as the one-stop station for beginners, haven't learned DM that way at all.

If the only real way to learn was through reading materials, the word 'autodidact' wouldn't have come into existence. My first introduction to programming was through a source code (written in Scheme) rather than a guide. I learned the majority of what I know through experimentation, and have only come to rely on references and guides later on when I had a firm grasp of syntax rules and the such. In DM's case, which I believe was my first introduction to OOP (I tinkered with Java before but not much came out of it), I never read a tutorial and learned the syntax through playing around with source codes that were available. I eventually realized that many of these source codes were poorly made, and started making my own programs. I don't think it hindered me in the long run.

Now of course, if you wanted to really get to the heart of things, you'd start reading books and articles about programming. That's what dedicated dilettantes or CS students do. But as for us amateurs, get off our backs, please.

If you think about it the best way to learn a language is primarily through hands-on experience. If you know the basic syntax of English, you should be able to become fairly fluent after spending a year or so in UK. Surely enough you would have a hard time if you try to learn English without knowing anything about it, but it's still very much possible. I offer Joseph Conrad, Polish, one of the most highly regarded English authors, who wasn't fluent in English until his late twenties and never wrote in it until his thirties, as an example. Less notably, I offer myself - I learned English from scratch while watching TV shows - as an example. In comparison, I have yet to meet someone who became fluent in English through textbooks.
Toadfish wrote:
Forum_account wrote:
Learning from examples is not a bad thing if you have the right mindset. With the wrong mindset any approach to learning can fail.

This, exactly. We've been over this in Chatters as well -- there is nothing wrong with preferring to learn by experimentation. That's what we have demos for. The current trend of shoving two book's worth of guides and references at newbies serves only to alienate the majority of them. And this is something ironic I've noticed. Many, many people here, who hail the DM Guide as the one-stop station for beginners, haven't learned DM that way at all.

If the only real way to learn was through reading materials, the word 'autodidact' wouldn't have come into existence. My first introduction to programming was through a source code (written in Scheme) rather than a guide. I learned the majority of what I know through experimentation, and have only come to rely on references and guides later on when I had a firm grasp of syntax rules and the such. In DM's case, which I believe was my first introduction to OOP (I tinkered with Java before but not much came out of it), I never read a tutorial and learned the syntax through playing around with source codes that were available. I eventually realized that many of these source codes were poorly made, and started making my own programs. I don't think it hindered me in the long run.

Now of course, if you wanted to really get to the heart of things, you'd start reading books and articles about programming. That's what dedicated dilettantes or CS students do. But as for us amateurs, get off our backs, please.

If you think about it the best way to learn a language is primarily through hands-on experience. If you know the basic syntax of English, you should be able to become fairly fluent after spending a year or so in UK. Surely enough you would have a hard time if you try to learn English without knowing anything about it, but it's still very much possible. I offer Joseph Conrad, Polish, one of the most highly regarded English authors, who wasn't fluent in English until his late twenties and never wrote in it until his thirties, as an example. Less notably, I offer myself - I learned English from scratch while watching TV shows - as an example. In comparison, I have yet to meet someone who became fluent in English through textbooks.

Agreed. The only upside with textbooks is that they are "trying" to teach, compared to source-code, etc.

Experimentation will indeed be the best way to know that your learning. From that first example in DM Guide of the "Hello World", I might assume mob had something to do with the person. Hence, I could confuse it with client, etc (Conceptually).

So Yes, experimentation will teach you the most. Its like that in everything. But if you got someone who was disorganized, etc with their source - You might pick up on it. Basically, teaching material eases the "trip" of learning. Thats all. Eventually, if you are experimenting, and you developed a wrong concept, it will come to light when an inconsistency occurs.

Either style can be used. But without experimentation, it would be like making a doctor perform surgery without residency - Complete disaster.
If he learns by "doing", then he's not "doing" very well.
Nothing is stopping you from experimenting with a source file you created yourself from following a guide.

How many of these people who 'learn by doing' only do so because they can get ownership of a game faster?
How many of them have tried to use a guide, but gave up, or had legitimate problems with them?

Whenever asked which tutorials they tried, which guides they followed, where they had a problem, etc, the answer(If you get one - most likely is the question will be dodged) will consist of loose terms like 'I tried reading the guide but it was too boring'.

Boring it may be, but that's what it takes to learn something, and learn something well, particularly something as complicated as programming.
But we only just established the guide is not necessary to learn. I'm not doubting its usefulness, but there's no need to raise an eyebrow whenever someone prefers to learn by directly studying source codes.

Yes, there is a difference between an honest want to study and just wanting to get your game up faster, but that's besides the point. Your post dealt with the possibility of learning by doing, not what kind of person it takes.
And I am saying that I doubt anyone who legitimately wants to learn will or can learn everything they need simply by studying source codes.

How can you? You cannot learn programming by trial and error, as there is simply too much to try.