?

Log in

No account? Create an account

Previous Entry | Next Entry

Why Johnny Can't Code

(saved here for my later perusal, and to share with friends who might have comments or suggestions...)

BASIC used to be on every computer a child touched &emdash; but today there's no easy way for kids to get hooked on programming. Quietly and without fanfare, or even any comment or notice by software pundits, we have drifted into a situation where almost none of the millions of personal computers in America offers a line-programming language simple enough for kids to pick up fast.

at Salon.com...

Comments

( 23 comments — Leave a comment )
nathanw
Jan. 5th, 2007 02:51 pm (UTC)
Interesting.

It's a little weird that he gets all the way to the end of the article before truly conceding that BASIC itself might not be the right thing, but I agreee with the idea that there should always be *some* programming tool to play with, and an interactive one is better. His casual dismissal of Logo in particular seems weird.

Similar complaints can be heard in electronics circles, though those tend to be less about building things yourself (you can still do it, even if you have to go a bit farther out of your way) and more about the way that integration makes most devices un-disassemblable.
crs
Jan. 6th, 2007 05:39 am (UTC)
Make Magazine is a good place to find stuff about the more physical manifestation of this general modern problem... They go philosophical about it pretty often.
nathanw
Jan. 6th, 2007 05:41 pm (UTC)
subscriber since issue #1, baby!

of course, I don't feel like I've done anything Make-like in years, so it just sort of accumulates a lot of neat ideas without actually doing anything.....
melted_snowball
Jan. 5th, 2007 03:09 pm (UTC)
tirianmal
Jan. 5th, 2007 08:05 pm (UTC)
GAAAAAH! Scheme! Back! *grabs garlic* Back, I say!!! *waves cross* DEMON!

:)
chriswicke
Jan. 5th, 2007 03:16 pm (UTC)
I will offer, that if you have MS Office which many people do, you get VBA, the red headed stepchild of Basic.

Now, it's not nearly as fun as BASIC would be but it is fairly accessible.
(Deleted comment)
(Deleted comment)
navrins
Jan. 5th, 2007 08:50 pm (UTC)
Event-driven programming seems evil to you because you're using the wrong analogy.

Old-style BASIC instructions had to be of the form "Do this. Then do this. Then do this. Then do this." Which is fine if the computer is supposed to do only one thing at a time, but it's terrible in a modern environment where your computer is always doing multiple things at once. It's as if I gave you instructions for going to Boston that required you to continuously look and keep asking "Is the train there? No, okay, is it there now? No, okay, is it there now? ..."

"Event-driven" programming means that your program doesn't need to do that. It can instead say, "When the train stops, go to the door and get on." While you're waiting for it, you can be reading a book or talking to a friend or whatever else. Or, back in programming land, "When someone clicks on this button, do these things," and in the meantime the computer can be showing you a web page, or checking your email, or moving the mouse cursor around. It really is a MUCH better system for programming modern computers.

It is, unfortunately, somewhat more complicated than old 1980s BASIC - especially if you haven't figured out the paradigm shift and still expect things to work the old way. I have no idea whether it's harder or easier for someone to learn from scratch who's never done that sort of thing before.
crs
Jan. 6th, 2007 06:38 am (UTC)
The question remains, what can we put in front of our kids so they can have the joy of typing

10 print "WalMart sucks!"
20 goto 10
run

...and getting out of the computer department
...and then going home and making it better, little by little?
navrins
Jan. 6th, 2007 03:17 pm (UTC)
You're absolutely right; I was responding to gentlescholar's criticism of the event-driven programming model rather than to your point.

I *do* think that whatever is going to fulfil that function should have an event-driven programming model, rather than what you and I first learned. Teaching a kid old-fashioned BASIC today and calling it a step toward learning programming is almost like teaching him to ride a horse and calling it a step toward driving. I think Visual Basic might actually be the right thing, in fact, except that it's not as accessible.
nathanw
Jan. 6th, 2007 05:44 pm (UTC)
I sort of agree. Only sort-of, though.

I did a stint with Lynn Stein and her reinvented introductory curriculum, and the model definitely wasn't linear computation - "compute f(x)" isn't a great model for general-purpose computing - but was closer to "while (true) { do something }", and we spun it explicitly as being good for respond-to-the-environment situations like games and robotics. Modern "event driven" programming has a lot of layers of magic in the capturing and dispatch of events that really obfuscates the learning process, I think.
navrins
Jan. 6th, 2007 08:05 pm (UTC)
Modern "event driven" programming has a lot of layers of magic in the capturing and dispatch of events that really obfuscates the learning process, I think.

And yet, if you want to write consumer software, that's exactly what you need to learn. So I think that the need is for a good process to learn how capturing and dispatch of events works.
nathanw
Jan. 6th, 2007 11:58 pm (UTC)
I don't think we're talking about writing commercial software; we're talking about dabbling and playing in software. As a learning exercise, it may lead one to explore more of the world of programming, which will eventually hit things like event-driven systems and OOP, but I don't think it should start there.
navrins
Jan. 7th, 2007 12:09 am (UTC)
I agree that we're talking about "dabbling and playing in software..." and I would think that what a modern 10-year-old expects software to do is to have things that happen when you move the mouse or press buttons or drag things around the screen. (I would happily defer to anyone who's actually seen a modern 10-year-old with a computer; I haven't.) The event-driven model is the best way to make that happen, and also the easiest if you have the right programming environment (which may not exist). I wouldn't expect a 10-year-old to consider printing text in a scrolling window to be very interesting given what he sees computers doing every day.

yakshaver
Jan. 6th, 2007 06:11 pm (UTC)
xcube:~/tmp xela$ python
Python 2.3.5 (#1, Mar 20 2005, 20:38:20) 
[GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> while 1 > 0:
...   print "Walmart Sucks!"
... 

I'll spare you quoting the output.
cityofbeige
Jan. 5th, 2007 03:23 pm (UTC)
Yeah, that's exactly how I learned to program. The other problem is that programming is no longer "fun". Computer games were so simple and crude then, that sometimes you would resort to programming them yourself. However, things like SW Flash and Java Applets have somewhat picked up this slack.

But while every computer operating system now comes with a web browser built in, programming applications had disappeared from operating systems about five years before the web browser became a standard tool.
(Deleted comment)
kallan
Jan. 5th, 2007 04:39 pm (UTC)
Remember Logo? I wonder if there are still math classes out there letting kids figure out how to program a turtle to draw a spiral. I miss that little turtle.

(also nice esteban icon! though now I'm going to have the song in my head all day)
tirianmal
Jan. 5th, 2007 07:47 pm (UTC)
What kids really need is a programming language, albeit for kids, that brings them up through the ranks of simple procedural up to maybe a real simple OOP or AP type programming style. Kind of a game, but with programming languages and as you beat each "level" you get to go on to the next one.

It's kind of like trying to find the analogue of the old chemistry kits that were supposed to get you interested in chemistry. There's no way a modern chemist would learn what he needs from those kits, but they were a way of getting folks interested.

Logo was cool but gets old quickly. Basic is too simple for what most folks see day to day in Flash animations or such. I'd suggest Java but that's got its own problems and doesn't have a good editor that kids could use.

I sense a business in here somewhere, but not one with a lot of money in its future.
crs
Jan. 6th, 2007 06:40 am (UTC)
This is a good line of thought...

I'd almost say Perl can be taught that way, except that the punctuation would likely scare kids away. I know that even the limited punctuation that was there in Logo kinda made me veer off from the really complex stuff.
hauntmeister
Jan. 6th, 2007 12:21 am (UTC)
But you've got one ... Right there in your web browser!

How about using Javascript as a programming language?
crs
Jan. 6th, 2007 06:41 am (UTC)
Isn't there a bit of... um... barrier to entry, there? I for one wouldn't know the first step in making a Javascript program run in my browser.

Maybe that's my deficiency, but I don't see parents finding the right book to make this happen, and I certainly don't see it being put in kids' faces as one of the fun wacky things to do with this new device of theirs.
( 23 comments — Leave a comment )