As mentioned
before I got into programming by playing round with the
BBC Micros at school. I vividly remember the first time someone showed me how to do
10 PRINT "Hello World!"
20 GOTO 10
and the screen filled up with "Hello World!". And you could put a semi-colon at the end of the PRINT statement to get it to fill the screen horizontally as well! And I did that! I made the machine do something! The machine is my BITCH!
(ObAside: as a 6 year old I was unlikely to use the words "shit" or "bitch" but you get my meaning)
As many have lamented we just don't have computers that boot straight into a programming environment. Although Windows might still have QBasic knocking around and Macs will be able to drop to the shell and thus have access to Perl, Python, Bash and, god forbid C, Objective-C and C++ this is not the same thing.
I'm convinced that it was this access to an easy hacking environment that allows Britain to punch way above its weight in the world programming stakes (although it doesn't explain why so many mad, cool hackers are Swedish and Finnish).
So how could we replicate this sort of environment? I was pondering this over a lunchtime sandwich and thought about a really cheap appliance-esque computer like Nicholas Negroponte's
100 dollar laptop or maybe have it run under a games console (the Xbox 360 with its USB and keyboard and Harddrive would seem ideal).
It would boot almost immediately into a pseudo-IDE. The language would have the normal constructs like if, while etc etc - probably AND in favour of &&. It would have scalars like Perl's and interpolation as well as lists/arrays and hashes (dictionaries for the Pythonistas). There would be no memory management. I'm undecided whether all types would be first class objects or not.
The language would be interpreted and the IDE would support halt-and-resume and a really good debugger like Visual Studio but much much simpler. It would have powerful (but probably not exposed) reflection capabilities so that a really good refactoring browser, source highlighter and auto-completion (with inline help and docs) could be supported. A 'play' button would start interpreting the language immediately. It would be a minimal amount of key strokes to get a "Hello world!" running.
I imagine a list of projects (the current running code could be saved into a project so that the overhead to start coding would be minimal) which consist of assets (being source code and graphics, movies, sound etc etc). Assets in a project would automatically have seamless version control.
It should be easy to write games in.
It should be easy to distribute the games to your friends - either through a central web site or 'beamed' somehow. In fact it would be cool if projects were also extensions/modules/libraries so when you got a friend's game through you also got all his (or her) source code but you could seperate out common functionality into modules and use that in your other games. Or download them from somewhere.
The standard libraries would be available as projects so you could use them and delve into them.
It would come with a number of games that act as a tutorial - much like I remember my teachers 'tricking' us into programming by showing us how to use Logo. Or how when you used Big-Trak you didn't realise you were doing a crude form of programming.
Of course this gets filed in the big drawer marked "Grandiose and Idealistic projects that I'll never get round to doing" but heh-ho.