Hacker News new | ask | show | jobs
by creer 782 days ago
Scratch is far better and deeper than most people think. It's also interesting because the developer interface forces thinking for yourself on things like how to manage complexity in your project, or how to get different modules to communicate - and that's useful (if only helpers thought to point that out).

It's very unlikely the school is digging deep in Scratch. Most likely they are keeping to the very basics - and a kid can go deeper on their own... or not.

As the next step, moving to python or whichever other language is okay. And I doubt very much that at 11 they are already exhausting Scratch. A web browser and javascript is fine too.

5 comments

> A web browser and javascript is fine too.

There seem to be many online environments where you can type your {html, css, javascript} code and run it. For example, MDN has one at

https://developer.mozilla.org/en-US/play

(Unfortunately it has advertisements... which I suppose is incentive to learn how to use custom stylesheets.)

I wish there were an offline environment like that built into firefox. You can bring up a javascript console, but it's not really a friendly development environment. And something like visual studio code is capable but large and complicated.

Unfortunately for javascript in browsers, the browser DOM is complicated and unwieldy. It's hard for beginners to figure out the right subset/features of (html, css, javascript, DOM) that they could use to create simple apps and games.

not sure it counts as "HyperCard" but for environments there's p5js.org (https://editor.p5js.org/)

> I wish there were an offline environment like that built into firefox. You can bring up a javascript console, but it's not really a friendly development environment. And something like visual studio code is capable but large and complicated.

That seems like a day project in electron. At least to MVP. Use CodeMirror or Monaco. As long as you pass the right options you can run the user's code in an iframe in a separate process. That way you can kill it even if it has an infinite loop.

> I wish there were an offline environment like that built into firefox. You can bring up a javascript console, but it's not really a friendly development environment. And something like visual studio code is capable but large and complicated.

I use BBEdit whenever I do web stuff (caveat: not a pro web dev) — if someone wanted to learn HTML/JS from scratch, I'd suggest a plain text editor like that.

Agreed. It would be nice if more apps would build scripting in.

Krita has: https://scripting.krita.org/lessons/introduction

while for Inkscape there is: https://inkscape.org/~pakin/%E2%98%85simple-inkscape-scripti...

> I wish there were an offline environment like that built into firefox

Webmaker[1] isn't built in, but it does offer an offline code playground

[1] https://webmaker.app/

It is deeper, of course it's turing-complete, and I do applaud how easy it is just to get started, and make something, which is absolutely the key to getting kids interested and keeping them so.

But I take huge issue with some of the 'deliberate' limitations. No function returns? No way to share code blocks? These are some of the fundamentals of code.

In my experience these limitations present a big barrier to kids who want to just get some things done, and teaches a very hacky style to those who are willing to learn the complex workarounds to overcome the barriers. Ultimately it leads to the majority being 'confined' to doing typical simple scratch projects, and a small 'elite' who go beyond. Possibly the opposite of what was intended.

Take a look at Snap. It was originally a scratch mod, but does allows for all sorts of advanced things. https://snap.berkeley.edu
Yes, snap is great. Unfortunately it's far more daunting than Scratch, if only just in the number of blocks and the way they are presented, using a smaller font, etc, so it's not so good for younger kids just starting out.

But it works as a next step for sure.

Next step is usually into regular code. We stepped into Godot, in our case. After working with scratch on one serious project you realize its limitations and their associated pains. And moving to regular programming language relieves most of this.
That's one thing scratch really needs: a quick way to switch back and forth between "visual" programming and text based programming.
Sure. But it's now easy to move on to the next bigger thing. A kid, club or school, can onboard with Scratch, and any laptop can also run python et al. By the time a kid notices all the cool stuff that seems possible and that they could achieve total world domination, they are in a decent situation to pick another language: python, javascript, whatever. And they can do that on their own - they don't even need the school anymore.
Well there's quite a big jump in complexity moving to python or whatever.

It's complex to even decide what to jump to, then there's setting up the environment, learning text editing and syntax, usually much more complex (and completely unfamiliar) graphics libraries, etc. And then they can't share projects so easily and aim to be curated, etc.

I like lua and love2d as the next step, as it's much simpler and cleaner than kitchen-sink Python (don't get me started on significant-whitespace), but it's still a big jump from Scratch. I wish there was a Thonny for lua though.

It is a big step. But the kid is now older and knows what programming overall is about. Less likely to get discouraged then. But sure, Lua will work.

I agree though that debuggers are usually too complicated - print-based troubleshooting will be enough to start with.

I do elementary school Robotics, we program the robot in a version of scratch / blockly. There is a huge amount what you can do.

The programming club does some pretty cool game things.

Are there any good starter kits that you'd recommend on the hardware side that work well with the software stack you all use?
Also onterested
VEXIQ is what we use. It has a little sister called VexGO it’s limit is the 4 channel brain. All of the mechanical parts are interchangeable, so do some VexGO, then add more motors, sensors, etc with VexIQ
Thanks for the pointer, these look awesome (not cheap, but well designed to not be too frustrating for kids).

Trying to figure out if it can handle proper full res camera input, looks like the optical sensor is a bit limited. Maybe these ports don't have enough bandwidth, tho. EDIT: Looks like the Exp level has the "AI Vision Sensor"

You would be surprised what you can do without the camera. The EXP/V5 camera is a closed garden, for example it can't do April tags yet.

Two schools of thought are 1)Software is the key to robotics - so the more powerful brain / camera is the selling point 2) Mechanical interfaces to the physical world is the key - the VIQ ecosystem makes this practical at a pretty low cost. If you root around on ebay for HEXBUG VEX ROBOTICS you can see lots of the plastic kits for sale that can give you parts that make something that you can later frankenmash into other things.

Good luck with your adventures!

> Scratch is far better and deeper than most people think.

Scratch has no local variables, no recursion, no pointers or references, and no data structures, correct?

Check out https://pytch.org/ which is a great way for kids (or anyone) to transition from Scratch to Python. Built by a friend of mine.