Letters to the Editor

Letters posted here are associated with the following Salon Premium Member:

mitch

Published Letters: 42     Editor's Choice: 26

  • Too hard to figure out?

    [Read the article: Why Johnny can't code]
    [Read more letters about this article: Here]

    The great irony of this piece is that in the middle of a paen to the joy of figuring things out, we find out that the barrier that kept Misters Brin from using the better alternatives out there was this: they were too hard to figure out!

    Extremely limited, but helpful. All of the others, every last one of them, was either too high-level (missing the whole point!) or else far, far too onerous to figure out or use. Certainly not meant to be turn-key usable by any junior high school student. Appeals for help online proved utterly futile.

    Too hard to figure out, or else, too "high level". There's a fundamental tension here--low level things are more complicated. Hiding that complexity is the whole reason "high level" things exist. If you don't wan't "high level", you have to deal with the complexity.

    No one is telling today's kids that they should "simply be consumers of software"; there is, however, a big push to hide the complex details, largely because of old farts complaining that things are too hard to figure out.

    I learned programming using BASIC, and I write software for a living now. I've learned a variety of other languages, and if I had a child that wanted to learn to program, I'd keep them as far away from BASIC as I possibly could.

    There really are much, much better ways to learn now. Among technical people who actually care about programming (as opposed to those who just do it for a living) BASIC is widely considered a source of brain damage. Not because it's too low level, or because it's not "fancy" enough, but because it really is obsolete. It teaches bad habits that will make it that much harder for little Johnny to actually understand what the machine is doing and how best to make it do what you want.

    I'm sure Mr. Brin has heard lots of suggestions for what the alternatives might be, but since he's rejecting them for being too high level, too limited, or too hard to get going, I'll limit my suggestions to one: Scheme. If you were to take all of programming and reduce it down to the fundamental basic ideas, you'd end up with something pretty close to Scheme. This makes it a good place to start learning. Everything else can be comfortably built on top of that foundation.

    Some people criticize Scheme for being too "high level" in that it's pretty far from the bare metal of the machine, but I think it's easiest to start with the abstract and save the nitty-gritty details for later. Some people might criticize Scheme for being too "low level" in that it doesn't always provide all of the built-in functionality that other languages do, but Mr. Brin isn't looking for whiz-bang functionality, and in any case implementing some of those things yourself is a great way to learn.

    Part of the problem is that Mr. Brin has been asking "senior Microsoft officials" and "the masters of IT", who almost certainly have axes of their own to grind here. I suppose an article like this is the best way to ask for this kind of help; the answers you'll get are from the people who actually care about the your problem.

    As far as the "lingua franca" thing goes, software is just moving too fast at the moment. Keep the code out of the textbooks for a while until things settle down some (or, alternatively, make the textbooks electronic so that they're easier to change). Until then, you're just going to have to figure some things out for yourself.

  • Scheme

    [Read the article: Why Johnny can't code]
    [Read more letters about this article: Here]

    Yes, there is some academic writing on Scheme that would be tough for a newcomer. I forgot to include a link in my first comment:

    http://www.drscheme.org/

    I'm sure there are some introductions to scheme that are easier to digest than that jargon-laced description.

    For those who still find Scheme too pointy-headed I recommend giving it a go anyway; I don't use it much anymore but I still think about it fairly often. It really does do a good job of presenting the basics in a way that's uncluttered.

    If learning to be a programmer isn't your long term goal, then the suggestions that other people made for Ruby or Python are good ones. If you're really interested in the low-level details, C is tough to beat, though that's not how I would choose to start out.

    BASIC really is pretty awful, though. It's where I came from but I'd never go back there.

    These days there is some great stuff freely available out there. Part of the reason reading this article was so jarring for me is that we're pretty much in a golden age software-wise; if anything the problem is that there's too much stuff. The solution to that problem is to pick one of the very good current alternatives, though, not to try and bring back the days when one crappy option was the obvious choice.