Hacker News new | past | comments | ask | show | jobs | submit login
A Computer Culture for Children [video] (youtube.com)
75 points by francescoc on Dec 3, 2020 | hide | past | favorite | 27 comments



It's interesting and a bit disappointing to me that there's no real current trend towards beginner-friendly (or "end-user"-friendly) programming. For a while we had some interesting candidates, like Processing, Rebol, or how _why presented Ruby, and even Tcl and Python seemed more all-encompassing. These days it seems every programming language development is going again for "professionals" -- Typescript, Rust, Go, etc. (and even Python looks like it's "non-programmer" appeal targets otherwise scientifically literate and educated people)


> It's interesting and a bit disappointing to me that there's no real current trend towards beginner-friendly (or "end-user"-friendly) programming.

I'm honestly not sure it's really needed. This year I teach a class of graphic students, who have zero coding experience, how to do generative art with p5.js (Processing but in JS). It took a grand total of 8 hours to go from ground zero to making them able to write things involving loops, variables, etc... and making simple generative art autonomously - if anything, they struggle a fair bit more with the maths needed to make pretty things (here are my slides, feedback very welcome! https://interactive-design.jcelerier.name/).


Had the very same experience while teach some programming intro courses for artists and designers (mostly simple python for maya/cinema 4d, and java for processing). Learning the language is rather easy, and if you're in design you're already experienced into translating and idea between different cognitive fields.

But wrapping their head around algebra and trigonometry and making them conceptually "think" about them was extremely hard. It looked like years of rote formulas memorization and the "don't worry about why it works like that, just accept it" teaching approach took a toll on their minds. The fact that most maths textbooks are terse to the point of being cryptic didn't help at all.


> But wrapping their head around algebra and trigonometry and making them conceptually "think" about them was extremely hard.

oh yes haha, I even made this small animation for them to try to explain the trigo circle : https://editor.p5js.org/jcelerier/sketches/acPp467og but it didn't help much, wonder how I could improve it..


Making this interactive, Bret Victor style, with a slider for theta and show the actual numbers somewhere - might help?


> But wrapping their head around algebra and trigonometry and making them conceptually "think" about them was extremely hard.

You should abstract these concepts in some way. For example, when you are moving an object in 3D you don't need to spend time projecting 3D objects into a 2D display using linear algebra. You just set the x,y,z coordinates and the engine does the hard work.


> For example, when you are moving an object in 3D you don't need to spend time projecting 3D objects into a 2D display using linear algebra. You just set the x,y,z coordinates and the engine does the hard work.

but setting x,y,z coordinates so that they do the kind of motion that you want is exactly where you need linear algebra.

Say you want to make a ball move in a spiral motion, how do you do that, from code, without students understanding algebra and basic operations like "translation on a plane" ?


As a young kid doing qbasic, everything moving around on the screen was x/y/xchng/ychng. The watershed moment for me was in highschool and suddenly recognizing that sin/cos were how to get from polar to cartesian, and atan2 was how to go the other direction. A week later my little platforming arena shooter had heat-seeking missiles in it.

I think a big part of the problem is a failure to emphasize the right stuff. I always see trigonometry presented in terms of all six functions and arcfunctions and the relationships between them— this is a bunch of abstract stuff that most people don't care about and will never need; it's nuts to present all of this at once when the small piece of it needed for polar coordinate operations is so immediately and obviously useful.


Yeah, and I think you can even take the argument further. 14-year olds with little innate quantitative reasoning ability can be quite facile in Unity3D. And then the point is not how to teach introductory CS concepts. But rather how can they express themselves in 3D, VR, AR, etc. As digital natives, who have grown up with interactive entertainment, they grok the communicative power of new media much more readily than even their instructors might. And the outcome is that they are able to express their truths to their peers with a global reach that really was inconceivable back in Cynthia Solomon's time ;)

This Unity course provides a glimpse:

Real-Time Animated Storytelling

https://learn.unity.com/course/real-time-animated-storytelli...


I would disagree - Alice[1], Scratch[2], and Snap![3] are all attempts to be beginner friendly; that is the entire area of block based programming. There are also attempts via Python with websites like CodeCombat[4].

However, I would say the issue is there is no "transition" to "real" programming languages. No one builds a Red-Black tree in block based programming and there is still an unrecognized issue about how "end-game" programming should be. Is it through layers of abstraction like corporate Java or is it completely linear with the current adoption trends of Jupyter and Data Science?

In my opinion, where the issue stands currently is that older languages like BASIC made the visual creation aspect of coding super easy. You could write 250 lines of code and you have a rudimentary space invaders game. Today, this requires external libraries, creating objects, etc. It used to simply be "HPLOT" to make graphics, now you have to introduce shaders.

[1] https://www.alice.org/resources/lessons/programming-in-alice...

[2] https://scratch.mit.edu/

[3] https://snap.berkeley.edu/

[4] https://codecombat.com/


What made writing games in BASIC fun 30 years ago was that amateur graphics weren't much different to professional graphics. But in 2020 the difference between amateur and professional graphics is huge and it's discouraging. So as others have said, things like Pico8 really help fill that gap.


Maybe I'm biased and jaded, but I find alice scratch and snap MUCH harder to use than just coding.

I think the fallacy is that because its bright and pretty and cartoony makes it easier to use. Sure it is more attractive to the youth but when they actually want to build something in their mind they are met with disappointment due to its limitations.

How can we make this more positive?


I do agree and its one of the reasons my current research focuses on type-based languages instead. However, I think the issue is specific to your "when they actually want to build something" line - what does this mean? I agree and think this is where some of my reservations come from, but what exactly are we wanting kids to do with code outside of the structured lesson? Maybe they are doing them, but because its not this magical "everyone converts to coding" switch, we aren't seeing it.


> In my opinion, where the issue stands currently is that older languages like BASIC made the visual creation aspect of coding super easy.

This is why I think fantasy consoles like the TIC-80 and PICO-8 are actually valuable educational tools. They still represent a BASIC-like syntax and quick development/play environment for a tiny fraction of what it would cost to buy a Commodore 64 or ZX Spectrum (never mind the convenience of running them on your desktop).


I have an idea for a simple language similar to basic but using emojis to represent functions and variables (really putting the "symbolic" in basic), with click or drag n drop from a toolbox rather than pure typing so everything is available at the start.

This would be a toy language designed for to introduce the world of programming to those who are learning to read. So for example, ⭕5 would draw a circle of size 5 where the cursor currently is. I have a page of notes for implementation but haven't made time to try it out yet.


I started working on a similar idea, called "Wildcard"... The idea was to create a lower cost alternative to Lego Mindstorms for programming simple robots. So "⬆5" would tell a robot to move forward 5 rotations. The other idea I was playing with was to remove the need to type at a keyboard... instead, a child would have a deck of cards with all the syntax they'd need, then they'd lay out their program out on a table or floor, and then use a camera + computer vision to read in the program.

The idea was if we issued one robot to each child, it would be cheaper to program the robot with a camera and deck of "code cards" than to also have to give budget for giving them a tablet or chromebook, too.

Here's my original proof of concept: https://www.youtube.com/watch?v=dSOfMSS9aFY

And the code is up on GitHub: https://github.com/hugs/wildcard


your idea (and hugs's) sound a lot like a pictographic version of netlogo's turtle programming. I believe netlogo is open source, so maybe you could just write a frontend that picks a nice subset of the netlogo functions and maps emojis to them?


That's almost where I'm stuck. I was going down a path where Wildcard would "simply" transpile to JavaScript and inherit JS semantics... But yeah, it's so close to Logo, I couldn't decide if I should transpile to Logo instead.


do you think this is clearer in any way than "circle 5" ?

for one, it looks harder to type just with a keyboard


for the reason that my preschool kids can identify a circle from a picture but not the words typed, yes (which is where this is targeted). This wouldn't be programmed from a keyboard (which also is difficult for that age), rather a toolbox would have all the commands available and you would just tap or click or drag them to the program.


True on one hand, but we should not make the mistake and place kids in completely surveilled child pen that only fills parents with delight.

How old were you when you started to dabble with computers? And was anything made specifically for you being a child?

I fear kids these days use mostly closed systems so the option to dabble is as hidden as it gets.


> programming language development is going again for "professionals"

Processing is the trust fund kid of programming languages. It is the epitome of the aesthetics of programming. It is literally purpose built for idiosyncratic graphics applications. It was hatched in the crucible of trust funded computing. It cannot, and will never be used, for meaningful software.

Every kid should be learning Python.


FYI, Rebol ideas took their root in a historical continuation:

https://www.red-lang.org/p/about.html


Well, all of those things still exist, though?


I am 100% enthused about programming thanks to Logo. My first buzz, when I told the computer to make a circle. I'll never forget the awe I had, that I could tell the computer what to do. I guess some of us are born for this life.


I had a similar experience. It was my first introduction to programming, I was rapidly hooked, and feel very lucky that happened.


Logo is such an elegant programming language!




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: