Hacker News new | ask | show | jobs
by noamyoungerm 3936 days ago
I don't get why people always think that "programming for kids" has to be done with blocks and drag-drop interfaces. It feels like it limits the complexity of what you can build to what fits on a screen, and makes applying anything beyond basic programming logic (like functions) more complex. It also feels like talking down to them instead of letting them experience an actual challenge.

I think it would be far more pedagogically correct to build a simple scripting language than to limit kids to these interfaces. If it weren't for the sheer age of it, I'd still recommend http://tedfelix.com/qbasic/ as a way to wrap your head around the basics.

1 comments

Before I reply, can I just say the fastcode site is one of the worst reading experience I've had in years. Truly appalling.

For young kids, the problem with traditional languages is that you have to spend a huge amount of time dealing with syntactical issues like whitespace, nesting brackets, the right kinds of colons, singe/double quotes, etc, etc on any non-trivial program. I've taught my girls (10 and 11) a little Python, but kept it small scale largely because of this. On the other hand they can create pretty complex interactive animations in Scratch without having to deal with any of that, because they can focus their attention on the logic and the functionality of the commands.

I suspect that once they get to 12 or 13 this will be less of an issue, and my eldest coped with the syntax issues better than her sister when writing a bit of Python, but when they first started learning Scratch at age 8 and 9 I think it would have been extremely challenging for them to use something like Python or BASIC.

One thing I loved about the default BASIC on the computers of the 70s and 80s was the ease of doing graphics and easily seeing something tangible on the screen.

What is the equivalent of that today? For instance, is there an easy-to-use Python library that lets kids do simple drawing with ease?

Ie, on the TRS-80's Level II BASIC, just doing SET(X,Y) coloured a white pixel at that coordinate, and RESET(X,Y) turned it black. And you could see immediately the utility of applying FOR loops to make horizontal and vertical lines, etc.

I don't remember QBASIC, but the customized BASIC on my Tandy 1000 In the late 80's had graphics modes with I think PSET(X,Y,C) to light pixel with color C, and even had some built-in commands for making line, rectangles, circles, and ellipses.

So it was very easy to type a few lines and get something cool on the screen, but still required a bit of thought on x,y coordinages and some programming constructs to do anything complex.

I only dabble a bit in Python, but what's the best way to do something like that today?

I think there's much more of a feeling of "Wow, look what I made!" after drawing something this way than just using the painting mode for sprites in Scratch.

Modern computer operating systems won't let you arbitrarily switch pixels on the screen on or off, so you'd need to either write a program that uses a GUI library to create a window, controls, etc, or generate an image file you can open in a viewer.

For Python, matplotlib(1) will let you generate plots and graphs, including simple x/y graphs, or you could use the built-in TkInter(2) library to do a simple GUI with a drawing canvas.

(1)http://www.labri.fr/perso/nrougier/teaching/matplotlib/ (2) http://www.python-course.eu/tkinter_canvas.php

Thanks. The drawing canvas seems just what I'm looking for.

(And yeah, I totally get I can't just flip arbitrary screen screen pixels, any more than I can access arbitrary system memory like I used to be able to with PEEK and POKE).