Hacker News new | ask | show | jobs
by buo 1552 days ago
From my experience seeing others use Scratch, part of its value is the ease with which it can be used to tell interactive, visual stories. Programming in Scratch is a means to tell a story, not an end in itself. If you're using Scratch to teach recursion, then you're using it wrong.

Another high point of Scratch is that it includes message passing and concurrency. This allows for telling complicated stories, and it also introduces some very hard to track bugs -- so, kids learn some debugging as well.

1 comments

Plenty of kid-oriented tools and instructional content share that "telling stories" element; it's a compelling way of picking up on humans' raw social intuition and using it to work on complicated problems. Perhaps some variation on Scratch could make for an intuitive and kid-friendly introduction to subjects that are often considered obscure, such as distributed systems and the formalisms used to reason on them like the Temporal Logic of Actions.

Recursion would be comparatively easy; you could even teach linear logic by endowing your "characters" with an inventory of objects that they could pass on to each other and transform by acting on them, a common trope in adventure games.

I think as programmers we forget that syntax is a pain for newcomers. Scratch tackles that problem at least.
There is that. I've seen it a lot when trying to tutor beginner programmers. It takes a lot of time for people to get used to every little symbol and space being critically important. It takes even longer to get people used to maintaining coding standards so that what they write is easy to understand. I start to view Python's significant whitespace as a feature here - it's a net plus to tell beginners that your spacing must be correct right off the bat, or your program won't work right.
> It takes even longer to get people used to maintaining coding standards so that what they write is easy to understand.

Formatting tools with a standard default syntax solve that problem quite nicely, and they do it more effectively than something as error-prone as significant whitespace.

I disagree that it solves the problem I described. For beginner users, every extra tool you set up exponentially increases their setup efforts. They are highly likely to be skipped or bypassed, and it's not like they're contributing to large group projects yet. It's more beneficial for at least a few core standards to be enforced at the language level.