August 22, 2014

Small Programs, Immediate Feedback

Filed under: Main — admin @ 12:01 am

Programming a computer may seem like a daunting task, but it’s actually one of the simplest things you can learn — provided that it’s taught properly.

It helps to be motivated to learn anything. I’m sure some people would be reluctant to into outer space or date a celebrity if they lacked proper motivation.

The motivation to learn a programming language could be for a career, to start your own billion dollar app company, to complete a dratted college course, or just curiosity. No matter what, if you’re willing to learn, I can teach you how to program. It’s really easy.

The problem with teaching programming is that the people who teach it are generally programmers — and they’re good at what they do. They’ve been doing it so long that everything makes sense. They don’t question anything. And they completely forget what it’s like to be a beginner. This holds true today as much as it did back in the early 1980s, back when I first learned to program.

Back in the microcomputer era, learning was done by reading books.

Weird, I know.

I purchased tons of books on programming. Generally, they were all the same: a huge, complex program opened Chapter 1 and never left. The author would talk down the reader. And it seemed, for the most part, that he was more interested in impressing his colleagues than teaching a beginner.

To prove how nothing changes, recently I watched an online training course for learning C programming. The first “lesson” was about 4 minutes long. It featured the standard Hello, World program, but the code was several dozen lines long. It also included two header files, one referenced inside the other. (If that doesn’t make sense, then understand that it’s just a complicated, awkward thing to do.)

Looking at that online course through a beginner’s eyes, I could imagine how daunting it would be. Heck, I’d give up! Based on the course, programming was obviously too complex. Yep, things haven’t changed much.

My approach is simple: Small programs. Immediate feedback.

That simple approach is how I first learned to program. The BASIC training manual that came with my TRS-80 was based on an earlier work done by Dr. David A. Lien, Learning TRS-80 BASIC. All the examples were small, maybe 10 lines of code maximum for each program. That made it easy to type and especially to view all at once on the screen.

Then, throughout the text, new concepts were introduced by subtly modifying the code. You’d change one thing, then run the code to see how it worked. That prompted experimentation, which works when you’re learning to program. Feedback is immediate; the compiler (or interpreter) pretty much knows exactly what the problem is and where in the code things went awry. That’s a great way to learn, as opposed to the “You Got It Wrong!” approach for other complex things, such as accounting and women.

You’d think this method would be well-known and popular now, but it’s not. And teaching this way is no secret, as it’s been done successfully for years. Lamentably, some things never change.

4 Comments

  1. You make a good point, but in the micro era pretty much every machine booted to a BASIC or similar prompt (I do remember the Jupiter ACE booted to FORTH). There was no IDE to configure, Your ‘C For Dummies’ was pretty much the ideal book in that it spent less time messing around with IDE. I can see this happening with some of todays scripting languages (Python for example) there is too much “this is how you store data” and not much of “this is what data is”…

    Comment by glennp — August 23, 2014 @ 8:46 am

  2. Funny that you bring up configuring IDEs.

    I did some training work recently and was told to use Eclipse as the IDE for learning C. I spend days trying to write about how to configure Eclipse (which is built for Java programming) to do C. It was a nightmare: You installed Eclipse, then you had to install Java Runtime, then you had to find a compiler. That sucked. Code::Blocks is such a better solution that I convinced the folks I was working for to use it instead. Now they’ve redone all their training to use Code::Blocks for both C and C++.

    If I had the time, I’d enjoy taking a beginning programming course at our local college and see what troubles the students have. I know a lot of university kids get my books and email me, writing, “Thank God for you book! Now I finally passed my programming requirement.” But they never write about what specifically was horrible with the course.

    Comment by admin — August 23, 2014 @ 8:54 am

  3. I think in the future we are going to see more compiled languages with an option to run interpreted mode. There are already a lot of functional languages like this like Haskell and Ocaml. Apple’s new language Swift is supposed to be able to run interpreted in a console. In fact Swift could turn out to be the language that finally makes C/C++ obsolete by being the first garbage collected language that runs as fast as C/C++. It might even replace Java and C# as well since it is a very safe language.

    Comment by BradC — August 25, 2014 @ 5:48 pm

  4. Yeah, Swift was certainly a surprise! Adios, Objective-C!

    Comment by admin — August 25, 2014 @ 5:53 pm

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.


Powered by WordPress