Wednesday, December 24, 2008

a better way to learn programming languages

Computer programming languages are usually taught like this:
Lesson 1) 'hello world'
Lesson 2) strings, arrays, classes, headers etc.

There's no interim step. There's no middle ground to get you thinking in progressive steps as you would when learning ANYTHING that is new to you. Most programming classes in college state that you must already have some programming knowledge under your belt. So how do you learn programming without already knowing it?

I propose that computer programming languages be taught the same way as spoken languages. There is no reason C++ can't be taught the same way as German.  Computer programming languages share all the same basic principles of spoken languages: vocabulary, grammar, slang, history & evolution, and even culture.  

When you learn a foreign language you usually start off with 'hello' 'goodbye' 'please' 'thank you' and numbers.  Lesson 2 is never jumping right into the classical literature! Even as an adult you learn with a little taste of children's books and concepts.  As you progress, you get into more grown-up ideas and vocabulary.
If you're learning a language based on non-Latin characters, you're learning a whole lot more, but at all steps, the equivalents to your native language are always drawn. The differences, the nuances are always pointed out. 

I remember in the C and Pascal classes I took at FSU the instructors would go over the lesson for that week and say something like "you could use a GOTO statement here, but don't" At that point, every hand went up to ask "why not?" The answer was "y-y-y-you.... you just don't"
In C, you have to start your code with something like:
int main(void)
{

}

WTF does that mean? What is the difference between { } and ( ) ? What does "void" mean in this context?  the answer: "don't worry about what it means, you just have to do it"

Why are programming languages taught with such a painful method? I think the problem is that computers are the realm of nerds (such as myself). Nerds aren't known for having great social graces - it probably relates to the common Asperger's defect in us.  SNL's "Nick Burns: your company's computer guy"  is a prime example of someone who would also design computer classes in their current state. Why should he spend time going over what are "basics" to him? That's beneath him. SOME people *DO* learn programming just fine, but the odds are they probably have a bit of Asperger's or Autism themselves and already think in those ways.  I guess I'm not as big of an Aspie as it takes to learn computer languages.

I would love to sit down and talk to professors in the College of Education and in Computer Science and get them to come up with a better method of teaching programming.  It would open up the world to many more people who do have talent and skills, they just don't know how to use the tools yet. 

Now if English teachers could give us a clear-cut explanation on the use of the semicolon...

Wednesday, December 17, 2008

xmas

It's been rainy. Kinda cold. I'm not motivated to do much. In fact I can't really do much because of $$. This is definitely the leanest of christmases since I was a kid.