A while ago I was introduced to Scratch when a fellow teacher was using it to teach high school students programming and my initial reaction was “great, it’s logo all over again”. I’d like to think that my childhood aversion to logo was because even at an early age I recognized it wasn’t really programming. However that assessment may be a bit harsh since even tho it’s not really programming it does teach programmatic thinking, approaching a program from a logical direction and organizing your thoughts into a simple list of do-this-then-that. And Scratch is very much the same thing. It’s not really programming but it’s programming like and allows for a wide array of cool things to happen.
I was finally convinced to try it out and the results of my first foray are thus: Palm Ski.
I realized when I first saw Scratch that it could do a lot of the same things that old Atari games could do. So I went to play old Atari games and, with my new perspective, saw that the old ski game wasn’t you moving down the screen, but other stuff moving up the it at the same pace, the background a field of indistinct white. In fact the old skifree for windows was the same thing too. So I sat down and two hours later had banged Palm Ski out.
Scratch is easy to use, no surprise there. I had to watch 2 minutes of a tutorial to realize I had to switch toolsets and use one of the “start here” objects, but once I did I was off and running. But scratch is also pretty limited and that’s it’s frustration. If there’s no control for what you want to do then tough. Consequently the tree’s “When you get to the top” is actually “when you get to any edge”. Not a big deal but I can see how it would be a limitation in other projects. There is also no “collides with any object” qualifier so my collision detection ended up being a long line of “if (collides with thing1 or (collides with thing2 or (collides with thing3 or (collides with thing4 or (…))))” and if I ever added a tree to up the difficulty I had to edit that line. Huzzah. (Alternately I guess I could have made collision a function of the tree object. Odd, but that might have worked better.) There was no way I found to generate entities, presumably because there was no way to pass in parameters to a newly created object. This makes for a very static experience both programming and playing. Scratch is clearly not the way to make an actual game, just a little toy to pass the time with.
Does it teach programming? I guess. Not the sort of real-life programming you could use to help with your taxes, but in a way it teaches programming skills: structure, logic, creativity and problem solving. But I wonder if learning programming this way is a gateway or a deterrent to learning actual programming.
Either way you can check out PalmSki. I wont get offended if you get bored of it in a few minutes.