Why (Most) On-line Programming Tutorials SUCK!


The opinions expressed by RudeJohn do not necessarily reflect the opinions of the Basix Fanzine or its staff. In fact, they probably disagree with me entirely. Everyone else does. <grin>


Regardless of the title, this editorial is not an attack upon any person or persons. Rather, it is an attack upon the ill-conceived approach to writing on-line programming tutorials which the internet continues to engender.

It's Geek to Me!

If I had a nickel for every Usenet post that said something like this:

I've never programmed before, but I want to learn how to program in <language>. Can anyone tell me if there is a free tutorial on the internet that will teach me how to program in <language>?

Didn't Yoda warn Luke that the dark side of the force was "easier, more seductive"? Well, that's the warning I would give anyone who thought that they could learn how to program from a language-specific tutorial. Although the reader will no doubt learn something about programming in <language>, he may never appreciate the simple fact that learning to program, and learning to program "in", are just not the same thing.

It's been said that the most famous algorithm in history is Euclid's algorithm for calculating the greatest common divisor of two integers. Correct me if I'm wrong, but I don't think that Euclid knew the difference between an Intel processor and a 3-pack of rubbers. Yet, without benefit of MMX technology or prophylactics, Euclid formulated an idea which today exemplifies the nature of procedural programming. Obviously, an algorithm is not a computer program. An algorithm is a description of a method, and a program is an implementation of that method. While programming languages are limited by their syntax , an algorithm is limited by nothing less than the imagination.

Learning to program "in" burdens the hobbyist with all of the baggage peculiar to a specific language. On the other hand, learning to program in spite of a specific language enables the hobbyist to recognize what different languages have in common. Once that commonality is established, it becomes far easier to take advantage of the differences between programming languages because those differences become features rather than obstacles.

It's unlikely that any hobbyist would want to learn programming from a purely theoretical point of view. Who can resist the lure of writing and running a working program? Nonetheless, a little practical application is good for the ego. The sensible approach lies somewhere between the extremes of theory and application. IMHO, a healthy dose of theory should proceed a first attempt at programming "in", while further doses of theory should be endured at regular intervals as the hobbyist becomes more facile with his language(s) of choice.

End Game

IMHO, learning to program should not be sacrificed for the sake of learning to program "in." If the reader is going to depend upon language-specific tutorials to teach him how to program, then he is -- as far as I am concerned -- in very deep fertilizer. Every concept that a language-specific tutorial presents must be filtered through the syntax of that programming language. As a result, the tutorial will discourage the reader from pursuing any idea which is beyond that language's ability to express.

Q: How would you illustrate an idea using a programming language which was designed to ignore that idea?
A: Badly.

"I'm rude. It's a job."

RudeWare | Papers | Projects | Fragments | Tutorials | Lynx

[ Back to Basix Fanzine Contents Page ]