I haven't had a chance to play with Swift Playground on iPad but Swift as a language itself is a lot fun. I wonder what languages he would favor over Swift for kids who might be interested in programming.
I haven't had a chance to play with Swift Playground on iPad but Swift as a language itself is a lot fun. I wonder what languages he would favor over Swift for kids who might be interested in programming.
An assembly that is fairly simple teaches so many fundamentals and at the same time is about is easy to learn as it gets. No crazy syntax, no OOP bullshit, no ceremony and boilerplate bullshit. It's as simple as it gets. Instructions and data.
I know so many people who learned Python and Java in early CS classes and then had their fucking minds blown and experienced so much pain just understanding the concept of a pointer. I remember my packed highschool "Intro to Programming" class where we started with VB and that was a struggle so they switched to one of those "Visual Programming for Kids" which became even more of a hassle for everyone.
When I try to learn anything new I want to distill it down to the most basic, core concepts and build from there. Doesn't matter if it's learning a framework, learning bass, or woodworking. Whatever happened to "keep it simple stupid"?
But if you're seeing it all for the first time, I don't think the concepts are overly complicated or confusing.
The only current downside to Swift is the fact that it keeps getting updated, sometimes with drastic changes. Beside that it's an alright language to start with.
I only have a sample of 1 (my six-year-old son, turning seven today), but he is perfectly capable of typing, understanding function definition and composition, data structures, and working with reactive I/O. He's not some super-genius. He's a regular kid who likes to swim, ride his bike, play Pokemon, and watch Netflix. But he can also make things by "real" programming. I'm sure other kids could as well.
The thing about Scratch is that it's designed to be easy for kids, and that's not a good thing but only seems to be one. In presenting Scratch to a child one makes an implicit statement along the lines of "Here is what you can do. This is your level." There's something intensely limiting about that. It's like being given toy plastic versions of Dad's power tools and told you can use them to actually make things. Kids are ignorant, but that's not the same as dumb. No one is going to fall for this, and it will earn you the enduring contempt of those on whom you try it.
Whereas when you sit a kid down in front of something like Applesoft BASIC or I guess a Ruby or Python interpreter, a Lisp or Node REPL, whatever - the implicit statement is instead along the lines of "Here is a thing that does things. Find your own level." And there's something intensely liberating about that. It's a vote of confidence, and that counts for a lot to a kid just like it counts for a lot to anyone - perhaps quite a bit more.
And by all means feel free to tell your son that some random goober on Hacker News wished him a happy birthday!
> he thinks that there may have been better languages to start with.
Which could be taken several ways.