I first learned to program in middle school in the mid-70’s on a teletype terminal using Basic, which was very easy to learn and use on my own.
What’s the equivalent easy-to-learn, fun-to-play-with language these days? My kids are approaching the age I was when I started and I’d like to coax them away from just playing computer games.
This is not hard-core programming but there is a free program available from MIT called Scratch. They can use it to make animations. It is graphic-based and teaches basic programming concepts without getting too hung up on code syntax. If they’re older than 13 they may be ready for something more advanced.
You could do a lot worse than Guido van Robot, which is, essentially, Logo re-implemented in Python. The basic idea is to control an on-screen robot moving around an environment by writing software to get the robot to do things and make decisions. It’s very simple, impossible to screw up that badly (as opposed to, say, making a bad POKE in BASIC), and Python, the language they end up learning, is a real language seeing real use in a wide variety of domains.
Finally, of course, it’s free in every sense, so you don’t need to buy into any corporate dogma and hope the company you purchased from doesn’t cancel the project you bought into, like Microsoft did with VB6.
Basic is still around, still used, and still relatively easy. Alternately, you might try to get them interested in Java, C++, or some other more practical language. They can be harder to learn, but there’s no reason you have to tell them that.
I think BASIC is a bad choice, mainly because it’s so different from anything else used today and it is impossible to go smoothly from writing software in BASIC to actually solving problems unless you buy into the whole Visual .Net World Order.
Also, learning Java and C++ first is just too big of a jump to make on your first try. To begin with, the lack of immediate feedback implied by the edit-compile-debug cycle is precisely the wrong approach for a teaching language, especially as I look at my calendar and notice that it is not 1963 any longer.
Finally, Python is immensely practical. Do you actually think people who create serious dynamic web sites do the server-side coding in a static language like Java or C++?
We cross-posted; that wasn’t a reply to you. I can’t criticize teaching kids Python (not least because I’m not familiar with it myself); Java and C++ were just the first things that came to mind for “practical languages which are still widely useful”. I do see the point about an integrated editing/running environment (which usually seems to imply interpreted rather than compiled code) being useful for teaching purposes, though.
Aliceis a pretty cool way to get kids into programming. I have participated in a few weekend workshops with local Pittsburgh kids involving this particular program and they all responded very well to it. Having nothing else to compare it to (I went to CMU which was one of the developing schools) I couldn’t really tell you how it compares to other programs but its free so check it out and see.
I wouldn’t start with a programing language at all.
I’d start with XHTML and then move to JavaScript.
They are simple to learn and they will tell you if you’re kids have any interest or ability to program.
Since HTML (XHTML) is a mark up language it’s so easy and with HTML-5 coming out soon, there will be a call for it.
Then move to Javascript and PHP (PHP is open sourced so it’s more in demand)
Also VBA for Excel is a great thing to know as everyone uses Excel, well not EVERYONE but you get the idea.
Once they show any interest they can move toward “REAL” program languages. Which would be toward the more popular C++ or C#
Again HTML is great as it will show if your kids have the basic organizational abilities to handle scripting and it will allow them to build simple websites ASAP and it will give them the immediate gratification to encourage them.
Why not move them from playing games to creating games?
I got my son going with a tool called GameMaker. The basics are very, very simple: just creating static backgrounds and sprites that move over them. They can make a “game” that actually does something in their first session. Then, they deal with more and more advanced concepts as they enhance the game: variables for scorekeeping, velocities and collisions for movement…
Next thing you know, they’re writing event handlers.
I haven’t messed with GameMaker in years, but hopefully it’s still around.
It also came with a set of pre-built games (including knockoffs of games like Pac-Man) which you can modify.
Javascript is just as much a programming language as C++ or assembly. XHTML is a markup language, and in this case will mainly serve to describe a document for the Javascript to manipulate.
This is a little like saying they should learn Betamax 'cause VHS is coming: XHTML is dead and HTML5 killed it. The differences between XHTML and HTML5 are significant enough that confusing them might result in web pages that don’t render correctly.
Replace PHP with Python. Everywhere. The world will thank you.
This is less defensible: Given how easy it was for MS to kill VB6 you can’t trust VBA to be relevant for very long.
C++ and C# and Python and Javascript are all equally real. (PHP is just real bad.) The implementations exist, after all. They aren’t just hypothetical languages.