Opinion: Taking Ruby to the kids?
I want to look at the history of the BASIC language, the uptake of novice programmers, and how Ruby could capitalize on them in the future.
My first programming experience was before my brain began recording stuff I can still remember today, but it was on either a Commodore Vic-20, Acorn Electron, or BBC Micro, as these were the computers my father used. All these machines had their own version of BASIC, like the majority of 1980s microcomputers.
BASIC did little to open my mind to the more interesting aspects of software development, but it certainly reinforced basic procedural logic and structure. Millions of people began coding this way in the 1980s. The keenest budding developers often moved on to discover C and Pascal although BASIC retained significant mindshare, best demonstrated by the popularity of QBasic (as bundled with DOS 5 and 6 and Windows 95) in the mid 1990s. BASIC was even taught in schools, often being the only option available (and LOGO's power being woefully underestimated - something I am only now just realizing).
From BASIC's popularity grew Microsoft's Visual Basic (geek trivia.. my first after-school job was to save up the £70 for Visual Basic for DOS - yes, there was a short-lived DOS version!) which continues to be popular and is used in an ungodly amount of commercial software, along with Visual Basic for Applications which is used in millions of business systems in conjunction with Microsoft Office. BASIC's ease of use, low barrier to entry, and overall flexibility of use (despite being an inflexible language) all helped it amass and retain significant mindshare even in the face of significantly better languages (C, Pascal, and now C# or Java). All those kids and teenagers who tapped in 10 PRINT "HELLO" 20 GOTO 10 and copied computer game source code from the back of flimsy magazines in the 1980s still feel a sense of warmth towards BASIC.
How can we bring the same experience to today's novice programmers? It's no longer trivial to begin programming. While downloading Ruby or Python themselves is relatively easy, the whole environment isn't exactly novice-friendly. irb is a superb 'immediate' tool, but more cryptic than a total programming novice would bear. Chris Pine's Learn To Program is incredibly well written, but, again, is perhaps a little too much for either a total novice (let's say, a 6 year old kid) to grasp.
The way I envision the solution, using Ruby, is by providing a browser based Ruby IDE and run-time environment along with a highly tailored version of Ruby that can use a number of special libraries and methods (that are built-in). Built-in classes would make placing and controlling graphics and sounds within the viewport easy. Tutorials could, potentially, be built into the IDE. Ruby is ideal for this, since Ruby can be used in a procedural, pure OO, or functional way merely with slightly different syntax, and by pre-loading different classes and methods at run-time!
But why a browser-based IDE? One of the problems we're seeing with schools nowadays (and this was even a problem 10 years ago when I was still in school) is that they want to maintain sanitary environments. Installing new software can be troublesome unless there's an official buy-in / policy from the school (although for one superb education-focused client-side IDE / run-time environment, check out Liberty Basic). Browser environments, however, are a lot easier to use, since all they require is Web access.
Is this all pie in the sky on my front? I sense that learning about algorithms and 'how computers work' was a part of significantly more kids' lives in the 1980s than it is now. Kids aren't typing in BASIC source code and wondering what a 'variable' is anymore, rather than working out how to game MySpace or play Flash games. Macromedia / Adobe have a massive potential in this sector as Flash makes an ideal scripting + fun environment to develop in, but they're seemingly uninterested.
Can we take Ruby to the kids and the novices and make Ruby the next BASIC? That is, of course, without the negative connotations ;-)
(Further thought: Why aren't there more efforts to get ordinary folk to write their own mashup scripts and Web tools using scripting languages over the Web? Ning is a start but still significantly more complex than it could be. This is something I'm digging into.)