Zuckerberg Shows Kindergartners Ruby Instead of JavaScript
theodp writes "If one was introducing coding to 10 million K-12 kids over 5 days, one might settle on a programming language for examples more than a few weeks before D-Day. But the final tutorials for the Hour of Code aren't due now until the day they're to be taught, so Code.org was able to switch the example Facebook CEO Mark Zuckerberg uses to illustrate Repeat Loops from JavaScript to what looks like Ruby (earlier /. discussion of the JavaScript example), which will no doubt make things clearer for the kindergarten set working on the accompanying Angry Birds tutorial. Khan Academy, on the other hand, is sticking with JavaScript for its Hour of Code tutorial aimed at middle-schoolers, which culminates in a project showing the kids how they can draw a circular plate by invoking an ellipse function with equal major and minor axes. By the way, as Bret Victor might point out, the 2013 Khan Academy lesson looks a lot like circa-1973 PLATO!"
If one was writing a summary, one might settle on a summary that explained the point it was trying to make rather than providing a set of disconnected statements...
I mean, they are kindergarten kids. Like they are going to recognize that the syntax was different? Or is this some kind of knock on Zuckerberg?
Ruby finds it's niche. IIRC Twitter switched anything that mattered from ruby to scalar / JVM the very moment their platform became more than a toy.
He'd probably be better off showing them javascript, no need to install 3rd party software. Kids already have access to all runtime libraries and development tools with a web browser and a text editor. Really makes no sense to show them ruby.
Is it just me that thinks that, when aiming at kids, BASIC still probably is the easiest language to understand (if not the most rigorous)?
The first example is just HORRENDOUS anyway - boilerplater and ternary crap getting in the way. The second is simplified using specific language facilities and objects.
So what would have been wrong with a BASIC-like:
FOR EACH USER IN USERS
SENDMESSAGE(USER, "Happy Birthday")
NEXT USER
As I get older, I believe more and more than the creators of BASIC knew what they were doing, and make something kids and beginners could understand quickly even if it wasn't perfect.
Kids today are lazy. Back in my day, knowing assembly language was a pre-kindergarten requirement.
He says it's all C or nothing. C++ if you're weak but want to look cool. I can't believe how hard core he is. I had no idea 5 year olds could form such hard ideals about programming. He says at school, all the kids who use Java are picked on. Some of the teachers tried to front Ruby, but they just got all up in her grill.
I tried introducing my nieces to a bit of programming. The older was about 7 when I tried it, and she hated it. The younger took her sister's lead and wouldn't even try it. Settled on SVG with reservations, thinking that drawing pretty pictures that a browser can display might interest them. Hoped SVG might be a little like LOGO in a browser.
A big part of the problem was unnecessary complexity. Doesn't seem like any language does well on that. C or Pascal? Can't just dive in to those. Have to have some boilerplate (the "int main() {... return 0; }" stuff), and a bit of command line training to run the compiler (make is right out) and the executable, or some training to use an integrated environment. A "scripting" language like Perl does better on the boilerplate, but still need to learn extra stuff to get going.
One of the problems with SVG is the underlying XML syntax. XML is horrible. It's not just verbose, but verbose in a redundant, cluttered way. Maybe syntax highlighting for XML like languages should set the names of closing tags to white on white or black on black, anything to reduce eye clutter. SVG isn't a true programming language anyway, have to at the least drag in JavaScript for that. Then you're into the whole mode mess, very much the same sort of thing with C and makefiles, and the C preprocessing directives.
Cleaner, simpler syntax might not have been enough to make the difference. The girls are, I think, a bit prejudiced against the nerdy. But it would have helped.
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
Kids will be choosing to work at a McD's or writing JavaScript code. This is all tech industry's goal of making programming and development a skilled trade - much lower paying trade.
Leave these kids alone fucknut
So this is kind of like letting them play with elemental mercury instead of chewing on chips of lead paint.
Did anyone watch the video? The code was completely inconsequential to what was talked about and only shown for a brief few seconds as a "ooooh look at code". It wasn't really meant to be read or understood.
Zuckerberg's the last motherfucker I'd let anywhere near my kids, let alone allow them to look up to the asshole.
Looks like Plato because there have been precious few advances in programming since the '70s. OO is good for UIs and functional programming has value but no one uses it, but besides that what else is new? IBM created virtual machines in the '70s and one could run multiple instances of different versions of OS/370 and other apps at the same time, supporting hundreds of users doing real time CAD to design Boeing aircraft - all with 4Mb or RAM. Things have advanced? I don't think so. Why does it take 100Mb to run a browser? Why does it take 200Mb to run the latest version of Photoshop, which does little more than Photoshop 3 did in 4Mb of RAM? Why does it still take 10 seconds to load a word processor, when processors are 1000 times faster than they were when Word came out? Web services is a new innovation? Really? Seems like we had RPC in the early '90s. There is nothing new that is not inferior to things that were invented decades ago.
So what's the fucking point? Where's the science that says year old kids have the essential wiring and have mastered the prerequisite skills to understand computer programming?
Christ! you're trying to teach the little bastards to read and now they're supposed to write code before they can write coherent sentences and spell?
My 6yo daughter loves minecraft. She's played it since just before her 5th birthday.
Minecraft is the perfect vehicle for teaching programming to kids, but not for the reasons you might think. Just playing the game teaches several core concepts: 1) 3D visualization and imagination, 2) acquiring and applying arcane knowledge, 3) solving tasks by breaking them down into subtasks easily accomplished, 4) solving problems in debug (creative) and runtime (survival) modes, 5) finding even more arcane ways to manipulate a computer by typing commands, (cheat codes) and 6) outright hacking. (Minecraft mods)
The only thing missing is a scripting ability. If I can't find that I'll be learning how to mod minecraft and will build a little script parser, probably something simple like logo for placing block types in the 3D landscape.
Look up Craftscript. I've never used it, so I can't vouch for how suitable it would be for a 6 year old (never mind a specific individual 6 year old), but it allows you to write scripts (in js) that manipulate the world. Also, working with redstone might have some nice educational value and fun.
I hear all the cool kids are using ruby these days with mongodb to make their apps webscale.
When coders don't have the time frame they need and don't have the needed QA time you get stuff like healthcare.gov
Ok, so technically learning to program doesn't have the same set of requirements as production programming. Back in the day you were likely to get BASIC and then moved on to Pascal, C, Fortran or (god help you) COBOL. Once you realize that all languages have essentially the same structures, you start to say things like "languages are just syntax. Learn to program in one language and you can pick up any other language very easily." This is not actually completely true, but I'll get to that in a moment. They also didn't tell you much about the environment beyond giving you the "vi cheat sheet" and instructions on how to invoke the compiler. Near as I can tell they don't do a much better job of it today.
Rolling objects into the mix really doesn't change that much. You still need to know structural programming because you're going to need to write your methods and you don't want to write them as spaghetti. You have a whole other set of concepts to master for OOP. You can show people objects, but until they're ready for them, they're not going to understand them. I don't know how many people remember learning to program, but when you're looking at it for the first time, even basic language structure like function parameters (and functions) and variable initialization are confusing.
So yeah, Ruby and Javascript might make OK learning languages, inconsistencies and all. Of all the ones I looked at when I was a wee programmer (And I looked at them ALL,) Logo and Pascal seemed like the most sensible. We did Pascal in my high school (in the '80's) in a programming environment on Apple II machines. They environment was mildly quirky, but didn't take long to pick up. That let us concentrate on the language. Logo offered the most immediate feedback about how your changes affected the behavior of the program. At least for me, immediate feedback was very helpful to the learning process. You can definitely get that with the interpreted languages. The same things that make them reasonable languages to learn programming also make them not-so-great for production projects, at least not without a lot of unit testing that no one ever bothers to write.
Of course, the more you work with different computer languages, the more you start to realize that the statement that "all languages are the same" is not really true. You discover things like the ones mentioned in the presentation I linked to at the beginning of this post, and find yourself having to work around deficiencies in the language. At a basic level all languages are the same and once you learn the control structures you can write simple code in any language very quickly. To actually learn the quirks of a specific language and truly master it, that could take years. I'd go so far as to say that most programmers will go their entire career never having truly mastered a single language. What they give you in school are the tools to achieve that mastery, and I don't feel that anyone even does a good job of doing that.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Kids understand the web, so perhaps a good approach would be to teach them HTML and CSS so they can make a web page. A mark-up language isn't a bad first step into programming and building a web page is something a lot of kids would care about. Then teach them about dynamically generated pages and they power these provide using any language of your choice. You could even do some simple Arduino programming and get them moving motors, etc, over the internet via their webpage. Just some thoughts...
soylentnews.org
This is a great idea; when I was little and being taught LOGO and BASIC, they had a real robotic "turtle" with LOGO and BASIC bindings, that drew on huge sheets of paper you could take home. I would have written something in Brainfuck (sadly not invented yet) if it would have gotten that little robot to draw things.
Moderate parent up.
Agreed. But if you're going to display code to show kids the concept of looping and impress them with just how fast computers can do things repeatedly, a simple 20 goto 10 infinite loop in BASIC is certainly a lot easier to grasp than the JavaScript Happy Birthday function that used arrays and 0-based-indexing, or the object-oriented Ruby/Facebook API example! :-)
The tutorial was likely incomprehensible to kindegartners but maybe Mark Z. was speaking equally to kindergartners as legisilators and educators
Your 6 yr old might enjoy the "ComputerCraft" mod.
Minecraft and Minetest have several forks, mods that allow coding in game and complete access to all the code in "grown up" languages. Teaching Scratch is easier but the two biggeest hurdles are still time and patience.
15TW = 15,000 Nuclear Reactors. (Approx. one accident a month.)
Yes, because we must teach Ruby before we teach kids how to read and write.
"Now kids, this is how you declair a variable in Ruby"
"Mr Z, can I go color now?"
The Article Title is so stupid, and the summery is even worse, that I have no desire to even look at the article.
Bukkit has several scripting plugins available. I use VariableTriggers and Skript. Watch their videos on the Tube of U.
My nephew has been into Minecraft since he was 3/4 .. and now a few years later, he is modding, watching HOWTOs on YouTube and loving the Minecraft music videos (he even wants to produce his own) and has gotten a fantastic amount of experience with basic programming logic through pistons and redstone. The social aspect has even been positive--he enjoys joining servers and helping others.
As someone that learned to program at the age of 4/5 in C64 BASIC (copying games out of magazines line-by-line), I feel that Minecraft is the perfect avenue for empowering the developing mind in a way that will allow them to step back and consider a program's architecture/structure. Something that I feel is much more important than shoving syntax down someone's throat. (i.e. no kid likes cursive)
What I dig about minecraft's effects on my daughter is that it motivates her immensely. We started out playing on the iPad but she wanted to move on to the PC version. I told her we would do that if she 1) build a 2000 square foot house in the game, 2) build at least 3 floors, 3) use at least 3 different building materials, and 4) make all possible tools using all possible materials. She was five years old at the time, but she eventually did it. It took her three months! (And she could have done it in a week if she'd applied herself, but hey she was 5. :) ) At no point did I push her to do anything, but I didn't budge an inch on letting her play the PC version until she finished. It taught her exactly what the game itself teaches: you can break a big task down into little tasks and make cool stuff.
Comment removed based on user account deletion
Really? An ellipse as a coding example for K-12 kids? Kids don't even learn what the definition of an ellipse *is* until trigonometry or calculus.
This approach to having a generation of coders on the way seems like throwing the teapot in the ocean to fill it. And throwing a torch in after it to make tea. And saying you're being efficient because you picked a rainy day.
These kids are going to be watching these presentations, going "huh?"
Kindergarten is, remember, that "grade" before 1st grade. It's not even an education-oriented grade. The point of kindergarten is to establish social awareness and really basic, proper conduct. Kids are given rudimentary handwriting, the most simple math you can imagine ("2+1 = which is it, kids, 3 or 4?"), how to recognize shapes and colors, and really basic spelling and syntax. "C A T that's a cat." Etc.
The other function of Kindergarten is to observe whether a child has any behavioural, emotional, psychological, physical, social, or learning troubles. Maybe the child has a disability. If so, this needs to be found out early before attempts at education really begin in earnest.
NOWHERE in any of that do you find any foothold for something like symbolic instruction. The idea of doing a Ruby lecture in front of kindergarten students brings to mind -- for me, personally -- one specific thing: that pairs of highly intelligent parents are at a higher risk for conceiving a child with autism. Why is that? Because of a dominant trait?
I mean, how fucked up in the head do you have to be to try and teach your kindergartner computer programming? Aren't you more concerned about social awareness and making sure they know it's okay to use a public restroom? I think any parent who is nodding sagely at the concept of having Mark "Does He Still Kill His Own Food Or Was That Bullshit" Zuckerberg has some real generalized problems with the sage center of their brain.
"The Accompanying Angry Birds Tutorial"? Really, folks? Your kindergartner is really prepared for velocity vectors and derivatives? I think you miiiiiiiiiight just have your head up your ass on that one. I doubt most parents putting their children through these lectures have any idea what it's about except "programming".
It's like a primate, knee-jerk reaction. "Oog. Oog. Program. Programming. Oog. Programming. Good. Oog. Good for. Oog. Good for Baby Too."
"Stratigraphically the origin of agriculture and thermonuclear destruction will appear essentially simultaneous" -- Lee
coding creates unique ideas that mcdonalds doesn't
as long as one can create a unique idea that catches on and makes money, the much lower paying trade will be incumbent on someone being content with working in such a situation
As many point out BASIC has a lot of problems, and it's easy to acquire bad habits with it.
So how about Scheme? Seriously; there's very little boilerplate code, and kids don't know the language is supposed to be hard:
(for-each sendmessage users)
Trust the Computer. The Computer is your friend.
Word. The problem isn't programmers who don't understand programming, it's managers who don't understand the development cyle. Plus programmers who don't have time to learn the problem domain and don't have any control over the development cycle.
case-sensitive scripting language.
Well of course he would show them a useless language which a completely non-standard syntax. Why would he want to raise a generation of competition?
Dude, doing it in front of kids is to impress his wife. "Look, I'm good with other people's kids. We don't need to have any of our own."
Moderate parent up.
I've got OCD, you insensitive clod, and you messed up the equilibrium.
Mod parent down.
Much better now.
I'm teaching my kid assembly in utero.
Dupe http://news.slashdot.org/story/07/06/26/1855202/day-of-silence-on-the-internet
I saw no new frontpage stories for over a day, whats up /. ?
Hivemind harvest in progress..