Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Zuckerberg Shows Kindergartners Ruby Instead of JavaScript

timothy posted about 9 months ago | from the presto-changeout dept.

Education 144

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!"

cancel ×

144 comments

Sorry! There are no comments related to the filter you selected.

What? (5, Insightful)

Anonymous Coward | about 9 months ago | (#45567405)

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...

How did that change cause a problem? (0)

jfdavis668 (1414919) | about 9 months ago | (#45567417)

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?

I mean, they are kindergarten kids. (1, Insightful)

Shavano (2541114) | about 9 months ago | (#45567811)

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?

Re: I mean, they are kindergarten kids. (0)

Anonymous Coward | about 9 months ago | (#45567889)

Hey, I've worked with quite a few developers that couldn't write coherent sentences or spell. Not all of them were bad at coding, however.

Re: I mean, they are kindergarten kids. (2)

ShanghaiBill (739463) | about 9 months ago | (#45568143)

Hey, I've worked with quite a few developers that couldn't write coherent sentences or spell. Not all of them were bad at coding, however.

I bet they knew the alphabet, and could at least read the keywords. I volunteer for an after school program that teaches Scratch [mit.edu] to 3rd and 4th graders. At that age (8 and 9) they are ready to understand programming. In kindergarten they are not. You can't keep the kids interested unless their programs involve graphics and animation. To do that, they need to understand distance, angles, and rotations.

Re:I mean, they are kindergarten kids. (1)

GrumpySteen (1250194) | about 9 months ago | (#45567983)

There are over 50 million school-aged kids in the US and hour of code is only trying to reach 10 million of them. K-12 is just shorthand for grade school. It doesn't mean that they're trying to teach kids in kindergarten how to code before they learn to read. They're putting it out there and it's up to teachers to decide whether it's appropriate for their classes.

Aside from that, if you'd looked at the Angry Birds example given, you'd have also seen that you don't actually write anything in Javascript, Ruby or any other programming language. Zuckerberg's example has absolutely nothing to do with that exercise and isn't going to confuse the kids going through it.

The submitter wrote an ill-informed rant (probably more because hating Zuckerberg is cool these days than any genuine anger) and went directly to "think of the children" to distract from the fact that the hour of code is not about teaching kids to code (you can't do that in one hour). The goal is to introduce make it clear that coding is an important skill to learn and show that the basic concepts of coding are easy to learn.

tl;dr The submitter is a moron and you believed everything in his idiotic rant.

Re:I mean, they are kindergarten kids. (0)

Anonymous Coward | about 9 months ago | (#45569511)

I remember doing RPG maker programming as a kid, I couldnt get my head around a simple to write switch statement. So yes, I agree that it is pointless.

Re:I mean, they are kindergarten kids. (1)

narcc (412956) | about 10 months ago | (#45571243)

There's tons of research. No, they can't write code. (See Jean Piaget)

They can do some code-writing like things. Papert, who had worked with Piaget, worked with Feurzeig's team to developed the logo programming language. There was some research done in the late 1970's- early 1980's with young students (and a bit more done with young deaf students).

The point is that we've got a perfectly good, well researched, language for teaching computer programming concepts to very young children. Why piss around with javascript or ruby?

At Long Last... (5, Insightful)

Anonymous Coward | about 9 months ago | (#45567437)

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.

Re:At Long Last... (1)

Anonymous Coward | about 9 months ago | (#45567545)

This isn't 2007 anymore.
Ruby 2.0 is a little bit faster than PHP and close to Python. Also Ruby if coded correctly, does scale very well.

Re:At Long Last... (1)

binarylarry (1338699) | about 9 months ago | (#45567819)

Given that PHP and Python are both horribly slow, how does that show Ruby is now scalable for big apps?

Re:At Long Last... (2)

cmdr_tofu (826352) | about 9 months ago | (#45567939)

Ruby is a beautiful language, much easier to learn (syntactically) than javascript. I don't know that Ruby is a better choice than Javascript, Python, BASIC, LOGO, or (Something else), but it does have some advantages for a young mind.

  1. 1. it's pure OO
  2. 2. control structures are intuitive. I prefer "for (;;) {" style, but "1.upto 100 do |counter|" style is more intuitive.
  3. 3. Cartoon characters can teach you Ruby lessons in a collaborative environment. This is mostly due to the work of one WhyTheLuckyStiff, but the work is done. Why not use it? http://hackety.com/ [hackety.com]
  4. 4. there is a great ruby community

I do think that children preference should be given for open source technologies rather than proprietary ones (or at least the option should be given). Children should be able to take what they learn in school and run it on their own equipment without spending a fortune on a particular company's product. All of that aside, teaching your kids Javascript would certainly be worthwhile too!

Re:At Long Last... (3, Interesting)

AuMatar (183847) | about 9 months ago | (#45568525)

Number 1 is actually a negative. The right paradigm to use for kids is procedural. First off because it matches how they're likely to think- plenty of stuff is broken down into steps 1,2,3 etc just like procedural, but nothing is broken down by objects outside of programming. Secondly, they have to learn procedural and structured code anyway to write functions- why confuse them with extra stuff? Teach them without objects first, then teach them objects- as an added bonus they're more likely to understand *why* they're useful.

Three is an app. It can be written for any language. Its not a good reason to pick one language over another.

There's great communities for every language. There's also horrible ones for every language. You just need to know where to look, which a teacher should. Not an advantage.

You have exactly 1 point that stands up.

Re:At Long Last... (1)

cmdr_tofu (826352) | about 9 months ago | (#45569049)

You can write procedural code in Ruby, but I think even a beginner benefits from *using* objects. Beginners might not create their own classes. TFS gives the example of Mark showing kids

facebook_user.each do |user|

which is clean code. So my one point that you agree with (syntax is easier), does piggyback a bit off the OO. I agree that 3 can be done for any language, but using what's available has obvious advantages to rolling something new.

Again I'm not sure I know the one-true-language for kids to learn, but Ruby has some advantages (and of course some disadvantages too). I do like Ruby.

Re:At Long Last... (1)

semi-extrinsic (1997002) | about 9 months ago | (#45570015)

The code snippet you showed may be "clean", but I have NO IDEA what it does, and I program daily in 5+ different languages. That tells me that Ruby is a poor choice, since the syntax doesn't resemble common languages like C, python, perl, fortran or bash.

Re:At Long Last... (1)

Requiem18th (742389) | about 9 months ago | (#45570429)

I don't blame you, Ruby syntax can be rather arcane.
facebook_user.each do |user| ... end

Can be translated as:
facebook_user.map(function(user){ ... })

Basically "each" is an array method and "do |var| ... end" is a "block"/closure/anonymous function. "|var|" can be omitted if there are no arguments, I don't know the syntax for multipel arguments. I do know that "do ... end" can be written as "{|var| ... }". I really don't know which version is considered syntactic sugar of the other. BTW Ruby blocks aren't *really* anonymous functions. You cannot save them to a variable as:
foo = do |bar| ... end

Blocks can only be passed to methods, but, not as arguments as so "facebook_user.each" is actually being called with no arguments like "facebook_user.each()" the method is passed the block through another channel that sets a flag inside the method which then calls the block as a closure using the "yield" keyword. Of course you can only pass 1 block this way. If a method needs two callbacks it must return some sort of delegate object that has a method that can accept the next callback as another block.

Oh and almost forgot to mention that there is an implicit "return" at the end of all ruby blocks. This is Ruby's idea of simple. But at least the syntax for map is really compact!

Re:At Long Last... (0, Flamebait)

Anonymous Coward | about 9 months ago | (#45570919)

That you "program daily in 5+ different languages" does not qualify you as an advanced programmer. If you do not understand at all by looking at the code even if you do not know Ruby, that means you are still a beginner.

Re:At Long Last... (1)

AuMatar (183847) | about 9 months ago | (#45570217)

That syntax doesn't piggyback on OO at all. Basic had the same syntax- FOR i FROM 1 TO N. There's no benefit for a beginner using objects when first learning- it adds more to the learning curve that can easily be added later. The first rule of teaching is KISS.

As for your snippet being clean- umm I have a 13 years of professional experience, over 20 years if you include hobbyist. I have no clue what that does. My guess is some kind of foreach loop, but the part to the right of the do is completely opaque. For that matter, the each part isn't clear either- it looks like a field or method invocation, but you're passing it no parameters. Its a pure Rubyism that exists nowhere else and isn't an easily understood mathematical concept, that's the opposite of clean.

Which is reason enough to not use Ruby- no other language on the planet has syntax like it, meaning changing to any other language in the future would be more difficult, while Ruby itself is a minor (and declining) language. They're better off learning something where the syntax is closer to standard.

Re:At Long Last... (1)

RabidReindeer (2625839) | about 10 months ago | (#45570949)

Alan Kay seemed to think that kids found the idea of playing with objects more intuitive than playing with loose code.

I'm not so sure I disagree with him, having seen what can come of loose code.

Re:At Long Last... (1)

Eythian (552130) | about 10 months ago | (#45571173)

CItation needed.

Squeak Smalltalk was done by Disney and Apple, is pure-OO, and is very, very easy to teach.

Re:At Long Last... (2)

AuMatar (183847) | about 10 months ago | (#45571209)

I'm sure both other users of Smalltalk will agree with you.

Re:At Long Last... (1)

Eythian (552130) | about 10 months ago | (#45571239)

That's not relevant at all, however.

Re:At Long Last... (0)

Anonymous Coward | about 9 months ago | (#45569245)

1. Ruby is not pure OO. Smalltalk is much closer to pure OO. Ruby is wildly inconsistent and borrows heavily from different places, including functional languages. I think this statement you made is wildly naive and inaccurate.

2. Personal preference.

3. Doesn't really seem like a reason at all. But it is a great tutorial in terms of style at least.

4. Not so sure of that. Lots of libraries, but starting to become like many growing languages quantity over quality.

I'd say teaching kindergartners programming is a stupid idea. I picked up programming around that age, but I also could already read in 2 languages and was not a normal child in terms of computer access, reading level, and interest at the time. It seems like a huge waste of time and money, and Zuck isn't exactly someone I'd look to teach children anything, especially not programming.

In terms of languages in general, Smalltalk and any Lisp (Clojure being the most practical right now) are much more interesting choices for any age. Smalltalk at least has some level of educational background, but unfortunately has suffered a bit since its decline and out-marketing by Java (despite a resurgence last few years).

As for Ruby, as someone who used Ruby even before Rails and really wanted it to fill a niche left by Smalltalk, I can safely say it's a mediocre and over-hyped language. I find it easy, but a mess and it only becomes palatable in terms of comparing it to PHP, Python, Perl, or something similar. Anyone who's used a nicer designed language can see a lot of the flaws, not even counting the flaws that come after heavy usage in certain environments like the web. I've noticed that people coming from PHP and Java might be wowed, but those with more diverse experience across many languages aren't too impressed. I still use Ruby sometimes for some pre-baked libraries I can use in shell scripting, but for real apps, not so much.

Re:At Long Last... (0)

Anonymous Coward | about 9 months ago | (#45570845)

Smalltalk is the perfect language to teach basic programming concepts especially for those never exposed to procedural or functional programming. I recall using DigiTalk SmallTalk at university during first semester and in many subsequent courses.

Re:At Long Last... (0)

Anonymous Coward | about 9 months ago | (#45567965)

>Given that PHP and Python are both horribly slow

Why should anyone take you seriously if you're living in 1999?

Re:At Long Last... (0)

Anonymous Coward | about 9 months ago | (#45568031)

I think you need to keep up... PHP is quite fast nowadays due to Facebook's efforts.
http://www.javaworld.com/javaworld/jw-07-2013/130726-facebook-invents-php-virtual-machine.html [javaworld.com]
https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/ [facebook.com]

Re:At Long Last... (1)

binarylarry (1338699) | about 9 months ago | (#45568137)

LOL I can just imagine how fast that JIT will be trying to optimize fabulous PHP code.

It's hilarious that a company with that much money would even attempt this.

Re:At Long Last... (1)

niftymitch (1625721) | about 10 months ago | (#45571009)

Given that PHP and Python are both horribly slow, how does that show Ruby is now scalable for big apps?

Look again.... features and functions that are slow and get in the way of big applications can be coded in C or C++.
Parallel is just understanding what can be done on different nodes without interfering with each other.

Ruby is a darn fine modern language. Slightly better than Python.

JavaScript has legs because it is the incumbent not because it is better.
Dart may improve the fate of JavaScript. I just noticed some Node.js recast
as Dart and found it easy to read....

I am a big fan of these interpreted prototyping languages. Getting programmers to
write correct code is hard as heck. Most programs that are run multiple times
can simply be run on multiple machines. Remember good machines today are less expensive
and a lot easier to find than quality programmers.

Those that care about speed should read J Bentley - 1999 Programming Pearls.

Re:At Long Last... (0)

Anonymous Coward | about 9 months ago | (#45567823)

lololol

Re:At Long Last... (0)

Anonymous Coward | about 9 months ago | (#45568045)

It's certainly not 2007 any more and still no competent engineers who are serious about performance and scalability [cloudflare.com] are selecting ruby.

My point stands, these kids aren't writing server side code and if they were then there would saner choices.

Wat? (3, Interesting)

Greyfox (87712) | about 9 months ago | (#45568277)

Wat? [destroyallsoftware.com]

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.

Re:Wat? (0)

Anonymous Coward | about 9 months ago | (#45569921)

I started with procedural programming in BASIC and was compiling assembly language long before I was ever introduced to OO via python, but I think I would have benefited from the exposure at an earlier point. It took a while for me to appreciate the paradigm, and even longer to start writing my own useful OO code. The difficulty for me was that once I understand the CPU was running procedural machine language, there didn't seem to be a need to think in a higher-level abstraction. I'd probably be a much more structured programmer now if someone had introduced me to objects sooner.

I still wouldn't wish Ruby on anybody, though.

Sigh (5, Insightful)

ledow (319597) | about 9 months ago | (#45567443)

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.

Re:Sigh (3, Insightful)

BenfromMO (3109565) | about 9 months ago | (#45567557)

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.

Well said, and I agree. The hint for me is in the name of the language. For children, you want something that gives near instant gratification and which they can understand as they go. Even the horrendous goto statements allow children to see clearly where things go...and so with children its probably is the best bet. You are not trying to train good programming quite yet at this level, you just want to interest children, so why not go with something that is not the buzz of the week?

Re:Sigh (0)

Anonymous Coward | about 9 months ago | (#45567721)

Even the horrendous goto statements...

Teach weird logic - suddenly, you're leaping around, rather than reading straight down a screen.

Kind of something you need to get used to if you're programming.

Re:Sigh (0)

Anonymous Coward | about 9 months ago | (#45567813)

You aren't teaching them anything, it's an introduction. You can introduce them via BASIC and not mention GOTO. And if they take a BASIC course the instructor may choose to deemphasize that logic. Or emphasize it to show it can be a bad thing.

Re:Sigh (1)

gigaherz (2653757) | about 9 months ago | (#45567783)

Maybe they don't want to teach kids how to program, they want to raise a generation of dumb web developers instead.

Re:Sigh (0)

Anonymous Coward | about 9 months ago | (#45568069)

How many years has Ruby been 'buzz of the week?'

Re:Sigh (2)

Nerdfest (867930) | about 9 months ago | (#45567587)

The problem is that people keep writing things in these languages and they end up being extremely difficult to maintain because of deficiencies in the language. Yes, you can write bad code in any language, but a few of them encourage it. I grew up on BASIC, and it's one of those languages. You can write some of the best spaghetti in BASIC. Visual Basic was another.

JavaScript is better but has *way* too many inconsistencies and gotchas. I think Ruby is a good choice, although I think a strictly typed language would be a better first language.

Re:Sigh (3, Informative)

csumpi (2258986) | about 9 months ago | (#45567605)

Agreed completely.

The traps in both javascript an ruby can make even a grown person's head explode, let alone a kindergartner.

I'm also not convinced by "block programming". OK, it's easy to make a pig move 3 steps forward by sticking three "move forward" blocks together. But that' gets old in minutes, and you want variables and functions. At that point (about an hour in) block programming becomes more of a hassle than typing "A=11".

As for programming languages, there's also Pascal. Just like BASIC, it was created to for teaching programming [wikipedia.org] .

And why does everything need to be Angry Birds? (Which reminds me, nice slasvertisement again, timothy.)

Re:Sigh (1)

MouseTheLuckyDog (2752443) | about 9 months ago | (#45567841)

So what would have been wrong with a BASIC-like:

FOR EACH USER IN USERS
        SENDMESSAGE(USER, "Happy Birthday")
NEXT USER

Ruby doesn't look much different:
Users.each{|user|
              user.SendMessage("Happy Birthday")
}

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.

Yeah but then Bill Gates came around to spoil it.

Re:Sigh (1)

ceoyoyo (59147) | about 9 months ago | (#45568189)

All those symbols is what's wrong with the Ruby. What does |user| mean?

Good teaching languages don't have a lot of symbols you have to remember. Personally, I think good working languages also use of arcane symbols only where absolutely required.

Re:Sigh (0)

Anonymous Coward | about 9 months ago | (#45568853)

like APL?

Re:Sigh (2, Interesting)

Anonymous Coward | about 9 months ago | (#45568059)

No, BASIC is also a pile shit in pedagogical terms: complex, fiddly, inconsistent, crude. Edsger Dijkstra described potential programmers exposed to BASIC as "mentally mutilated beyond hope of regeneration", but I increasingly think this description could be generalized to cover all students raised in the Algol school of programming - and since Algol begat C and Pascal, which in turn begat C++, Java, ObjC, Python, Ruby, PHP, and JavaScript, I think it sums up nearly all mainstream programmers today.

Seymour Papert once had the right idea: you don't teach "programming", you teach structured thinking and analytical problem solving. That students learn how to program along the way is just a nice side-effect of the platform used, which in Papert's case was LOGO. Algolites frequently perceive LOGO as a toy language for little kids because it looks ludicrously simple compared to Algol-family languages, those vast baroque monuments to their own extreme cleverness. But any idiot can do complicated: it's doing it simple that's hard. Syntactically and semantically, LOGO only has two primitive structures - words and lists - yet it can express everything that a "proper" language like Pascal can. Heck, you can even learn Computer Science Logo Style [berkeley.edu] , which makes me think that CS departments should actually be teaching LOGO as their first language.

As Guy Steele once put it (back before he went to the Dark Side): "The most important concept in all of computer science is abstraction." And LOGO - bless its crystal clear sense of priorities - gets right to the heart of this, introducing itself like so:

1. This is a word.
2. This is how you run a word.
3. This is how you add your own words.

Simple, beautiful, and incredibly powerful and empowering. No bullshit, no fuss. Just the total essence of computer programming, expressed in terms that even a child can understand and use.

Basically, the Algol-family languages teach students to "bang the rocks together" - the procedural ones neatly wash the rocks first, while the object-oriented ones paint them all shiny silver to show what hot shit they are. The apex of achievement is measured by how hard and rhythmically they can bring the rocks together, and how many rocks they can get through before their arms fall off. Whereas the Lisp school, of which LOGO is part, could not be less impressed by all this sturm und drang clatter of rocks. Their only interest is in learning how to use those original stones to manufacture flint knives, which can be used to fabricate clothing and axes, which can be used to construct buildings and forges, which can be used to smelt iron... and so on. Honestly, if civilization had been built by C and JavaScript programmers, we'd all still be living in caves today.

The genius to LOGO's pedagogical approach is that what it teaches is not merely tool use, but tool creation. Start with a primitive core vocabulary, then build it out and enrich it until it can effectively and efficiently express your own specific wants and needs. And the reason it can get on and teach this right away is because it doesn't spend 99% of its time drowning its students in vast swamps of micromanaging make-work nonsense. The myriad 'special forms' that all those macho Real Languages so proudly present as if they're the most important and special fundamental concepts in all of programming - statements and expressions and operators and conditionals and loops and types and values and variables and punctuation and so on - turns out to be entirely unimportant and not special at all; it's just garbage, with no real value beyond obfuscating and distracting and keeping honest onlookers from developing the sneaking suspicion that most of today's programmers don't really know what they're doing nearly as much as they pretend to.

It's just a tragedy that Khan and Zuckerberg and others have now progressed to the stage where they're now enthusiastically evangelizing their own Algol-crippled mentalities upon millions more. I'm sure they mean well enough it, but the world could really do without such Dunning-Kruger idiocy going recursive.

Re:Sigh (1)

Cutterman (789191) | about 9 months ago | (#45569401)

"Seymour Papert once had the right idea: you don't teach "programming", you teach structured thinking and analytical problem solving. " Disagree. When I started programming as a kid 30 years ago BASIC taught ME structured thinking and analytical problem solving. Mac

Re:Sigh (0)

Anonymous Coward | about 9 months ago | (#45570321)

And do you consider yourself "mentally mutilated beyond hope of regeneration"?

Re:Sigh (1)

AvitarX (172628) | about 9 months ago | (#45570367)

The problem with LOGO as a kid was either limitations of the language or the way it was taught.

Basic was fun, you could program games (really really shitty text adventures, maybe with a little non deterministic combat even, guess the number games, craps, simple character based action games (or modify ones that came in magazines)).

LOGO may teach concepts of building blocks and using them better, but all that was really covered (in my upbringing) was drawing shapes. Sometimes it was a robot turtle, which was kind of neat, but primarily a diversion.

At that age, the learning of concepts wasn't enough of it's own reward.

Re:Sigh (1)

varmfskii (2910763) | about 9 months ago | (#45568283)

Of course your example has almost nothing to do with the BASIC that its creators created.

Re:Sigh (2)

Chemisor (97276) | about 9 months ago | (#45568523)

So what would have been wrong with a BASIC-like:
FOR EACH USER IN USERS
                SENDMESSAGE(USER, "Happy Birthday")
NEXT USER

The fact that learning this example will help these kids grow up into spammers.

Re:Sigh (1)

cascadingstylesheet (140919) | about 9 months ago | (#45569433)

Yes, BASIC rocks for learning. It's not half bad for many real world purposes, either.

It fails miserably at being an obscure way to limit programming to a guild, though. Hey, maybe those things are not unrelated ...

Re:Sigh (0)

Anonymous Coward | about 9 months ago | (#45570095)

FOR EACH USER IN USERS
        SENDMESSAGE(USER, "Happy Birthday")
NEXT USER

users.each do |user|
    send_message(user, "Happy Birthday")
end

Scheme? (1)

JanneM (7445) | about 9 months ago | (#45570399)

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)

Re:Sigh (1)

RabidReindeer (2625839) | about 10 months ago | (#45571019)

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.

Historically, Kemeny and Kurtz had had little or no exposure to object-oriented design in 1964. I believe that the first serious attempts at Object-Oriented thinking didn't even begin until 1964.

They were basically attempting to create an interactive "FORTRAN Lite" language. Which they did, quite successfully. I love FORTRAN. But I am also quite aware the creation of the term "spaghetti code" probably owes more to FORTRAN than it does any other language except assembler, and even more, probably, than COBOL.

Structured Programming was an attempt to tame the spaghetti bowl, but it didn't begin to see wide use until the 1970s. OOP was just beginning to be a thing, as it broke out of the narrow specialty languages such as Simula and achieved widespread fame in SmallTalk, before it finally went mainstream in C++.

Sometimes things get more complex as time progresses, but sometimes with time we learn how to make complex things simpler. Procedural starts off simple, but then a procedure inside a basic class is simple. The difference is in how they grow and in how you think about what you are doing.

Lazy kids (4, Funny)

nbritton (823086) | about 9 months ago | (#45567501)

Kids today are lazy. Back in my day, knowing assembly language was a pre-kindergarten requirement.

Re:Lazy kids (4, Funny)

Guppy06 (410832) | about 9 months ago | (#45567771)

I worked with machine language in elementary school!

(We used discarded punchcards in arts and crafts.

Re:Lazy kids (2)

gallondr00nk (868673) | about 9 months ago | (#45570003)

Cretins! I built a working Difference Engine before even leaving the womb!

Re:Lazy kids (1)

VortexCortex (1117377) | about 9 months ago | (#45570623)

What apathy! I got into genetic programming the moment I was conceived!

Re:Lazy kids (0)

Anonymous Coward | about 9 months ago | (#45567943)

When I was a kid, we were lucky to be able to get on a computer, if you want to call them that. We barely knew what a keyboard was but that was 4th grade. Actual computer classes didn't start until high-school and even then, there was only one programming class and it was visual basic =/ I learned more with rpg maker to build games than I did in that horrible class where the teacher did not teach but rather told us to read the help files to visual basic in order to learn. Brutal when you can't really grasp the concept of variables =(

Re:Lazy kids (0)

Anonymous Coward | about 9 months ago | (#45568205)

If the kids are lazy, then teach them Haskell, the lazy language for the stylish slacker of today!

My 5 year old says "Pft. Lamers." (5, Funny)

stonebit (2776195) | about 9 months ago | (#45567523)

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.

Re:My 5 year old says "Pft. Lamers." (0)

Anonymous Coward | about 9 months ago | (#45567985)

I learned C at that age (well, maybe a year or two after it) and don't regret it for a second. Teaches you all sorts of things about memory management and pointer arithmetic, and lets you toy around with systems, real-mode, or (nowadays) kernel programming.

language wars still hot for good reason (2, Interesting)

bzipitidoo (647217) | about 9 months ago | (#45567525)

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.

Re:language wars still hot for good reason (0)

Anonymous Coward | about 9 months ago | (#45567743)

You're post clearly indicates why you have nieces instead of daughters and a stunning lack of common sense. Why you picked something and then bash it makes no sense. It's not the language, it's you. You made a poor decision and then tried to follow through on it.

Hint: 7 year old. I agree with the other post about BASIC and I'd start with pseudocode: IF ROOM CLEAN GET COOKIE ELSE GROUNDED. In BASIC that is already 80% coded. Or take it even higher: FOR EVERY STUDENT IN CLASS IF ON THE LIST INVITE TO BIRTHDAY PARTY.

Their parents will be so proud that you crushed any interest in coding / scripting and the service industry will welcome them with open arms and minimum wage.

Re:language wars still hot for good reason (0)

Anonymous Coward | about 9 months ago | (#45568319)

Because programming is the only job, right? It's that or McDonald's.

Don't be an arsehole.

Re:language wars still hot for good reason (3, Insightful)

binarylarry (1338699) | about 9 months ago | (#45567847)

I hope to god this post is some kind of bizarre troll attempt.

Re:language wars still hot for good reason (2)

msclrhd (1211086) | about 9 months ago | (#45568357)

Python is a good language to build up from the ground up -- just type "python" and you start a Python interpreter. You can then start typing. For example:

        >>> 5
        5
        >>> 5*2
        10

This allows you to only teach the absolute minimum of what is needed at the time. You can even tie it into things like mathematics.

Re:language wars still hot for good reason (1)

Memetic Rebroadcast (1439085) | about 9 months ago | (#45569713)

Can't the same be said for any language that provides REPL?

Re:language wars still hot for good reason (2)

fermion (181285) | about 9 months ago | (#45568537)

A big part of the problem is that young people still think very concretely and still do not always get cause and effect. A big problem is that people focus on the language rather than the basics of programming.

I learned to code simple things in basic, use a compiler, and run a program around age 11. But I did not learn programming until two years later using FORTRAN. But we did not get to FORTRAN immediately. We talked about how to break down a problem, how to write steps in simple statements, how to translate those steps in code. One of the first things we actually wrote ourselves was the swap function. No one told us how. We just did it, and learned about variables through code that did not produce the desired results. At that point we got to abstract thinking.

Here is the nice thing about the computer. It will do exactly what you tell it. This means that errors in one's thinking and logic are concretely reproduced in errors in output. If one focuses on that then when a child becomes a teen, any language can be introduced, be it C, Forth, Python, FORTRAN, Ruby, Basic, Shakespeare [wikipedia.org] and all will be well.

This is why robotics is so nice for K-8 programming. First, the child has to create a procedure and code the procedure into the robot. If the procedure is not correct, the robot will not do what it is supposed to do. Immediate concrete feedback for a concrete problem. As the child gets older, more number sense can be added, and ultimately variables in terms of sensors, and logic based on those sensors. All concrete. The problem with robotics after grade 6 or so it becomes overwhelmed with the physics and engineering. It no longer is primarily a tool for teaching kids how to program.

By time a child is 10-12, some can handle more abstract problems in the same way that some kids can deal with algebra prior to high school. This isn't necessarily something one can tell with test scores or based on how hard the student is willing to work. It is simply mental maturity. At this point formal languages can and should be introduced. The problems should become more abstract. I recall one of the things I things I did on an Apple II back in high school was use shape tables to display a 3D looking cosine function.

In terms of what language to use, I have become fond of Python because it is powerful but does not have all the complexities of other languages. I have used it with high school kids to work up an online game. But initially the programming language should not the primary issue. A person who is a software developer, who can think abstractly, should be able to handle any language. Mandating a language is like mandating an Office application. You are limiting the flexibility of students to learn.

Re:language wars still hot for good reason (1)

istartedi (132515) | about 9 months ago | (#45568669)

I learned to code simple things in basic, use a compiler, and run a program around age 11. But I did not learn programming until two years later using FORTRAN

I learned BASIC and then assembly when I was 14. I'm not sure when I learned programming. Arguably, none of us have.

If the Commodore 64 taught us anything it's that the language shipped with the system is crap and you have to dig deeper. Maybe yesterday's PEEK and POKE assembly programmers are reflected in the next generations. Maybe there are "screw these web apps, let's hack the browser" kids in grade-school today. That will lead them into C, C++ and even assembly if they're curious enough.

10 years from now (3, Insightful)

Anonymous Coward | about 9 months ago | (#45567535)

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.

Re:10 years from now (1)

MacDork (560499) | about 9 months ago | (#45567879)

Then we should form a trade union with accreditation. First we need to get a law passed that demands only accredited individuals be allowed. Pick any tech disaster (healthcare.gov?) where we can point and say, "See! We need some standardization in who is qualified to write software!!" We can charge large amounts of money for 'official' training from our accredited university programs. Then we intentionally limit the number of people who can be allowed through the system each year. Finally, if someone with accreditation decides to do something we don like (make a programming environment anyone can figure out) then we disbar them or take away their medical license, or whatever end up calling the programmer accreditation stripping process.

Yeah? No. I prefer the current meritocracy where anyone is permitted to play if they like.

PHB's are the real issues not unaccredited coders (1)

Joe_Dragon (2206452) | about 9 months ago | (#45568179)

When coders don't have the time frame they need and don't have the needed QA time you get stuff like healthcare.gov

Re:PHB's are the real issues not unaccredited code (0)

Anonymous Coward | about 9 months ago | (#45570607)

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.

Re:10 years from now (1)

eyenot (102141) | about 9 months ago | (#45570135)

OP was right. I don't know where you came from with all the other stuff, but it didn't originate in OP's post.

The whole purpose of flooding the market would obviously be to make it a cheaper skill. You can package that up any way you want it, but the end result is the same.

Consider the Zuck. He's duplicitous and shrewd as hell. He supports relaxed immigration laws because it will provide a cheaper work force.

take away the fact that (0)

Anonymous Coward | about 9 months ago | (#45570141)

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

Re:10 years from now (1)

PJ6 (1151747) | about 9 months ago | (#45570801)

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.

But a skilled trade is exactly what programming is. Nothing wrong with calling it that. Show me a developer that's more a scientist or theorist than a tradesman, and I'll show you someone who should be kept clear of production.

And hey, if they want to pay too little... they'll get burned because demand for competence far outstrips the supply. And as far as I can tell this is true for nearly all engineering disciplines - but especially programming.

Poison (0)

Anonymous Coward | about 9 months ago | (#45567559)

Leave these kids alone fucknut

hmmm (3, Funny)

buddyglass (925859) | about 9 months ago | (#45567595)

So this is kind of like letting them play with elemental mercury instead of chewing on chips of lead paint.

Inconsequential (2)

WPIDalamar (122110) | about 9 months ago | (#45567623)

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.

20 goto 10 (1)

theodp (442580) | about 9 months ago | (#45568729)

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 [urbandictionary.com] 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! :-)

Re:Inconsequential (1)

eyenot (102141) | about 9 months ago | (#45570113)

Right, so let's get right to wasting kids' time and confusing the hell out of them with this ADHD style bullshit. I call shenanigans. This is all about having a younger audience for marketing, not at all about educating the new generation at an earlier or faster rate.

Zuckerberg, role model? (0)

Anonymous Coward | about 9 months ago | (#45567627)

Zuckerberg's the last motherfucker I'd let anywhere near my kids, let alone allow them to look up to the asshole.

Re:Zuckerberg, role model? (1)

PPH (736903) | about 9 months ago | (#45568545)

Its OK. After nap time, we're bringing in Walter White to teach chemistry.

Because there has been little innovation since (0)

Anonymous Coward | about 9 months ago | (#45567709)

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.

Language not as important as motivation / context (1)

greg_barton (5551) | about 9 months ago | (#45567933)

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.

Re:Language not as important as motivation / conte (0)

Anonymous Coward | about 9 months ago | (#45568129)

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.

Re:Language not as important as motivation / conte (0)

Anonymous Coward | about 9 months ago | (#45568597)

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.

Re:Language not as important as motivation / conte (1)

iiiears (987462) | about 9 months ago | (#45569051)

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.

Re:Language not as important as motivation / conte (1)

greg_barton (5551) | about 9 months ago | (#45569665)

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.

Re:Language not as important as motivation / conte (0)

Anonymous Coward | about 9 months ago | (#45569425)

Bukkit has several scripting plugins available. I use VariableTriggers and Skript. Watch their videos on the Tube of U.

Minecraft perfect intro for children. Parent++ (1)

jfisherwa (323744) | about 9 months ago | (#45569475)

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)

Re:Minecraft perfect intro for children. Parent++ (1)

greg_barton (5551) | about 9 months ago | (#45569707)

Hah! The only subject in K-12 I ever bombed was hand writing. :)

Webscale (1)

ynoref (3297285) | about 9 months ago | (#45568155)

I hear all the cool kids are using ruby these days with mongodb to make their apps webscale.

More important than what you do with the language (1)

umafuckit (2980809) | about 9 months ago | (#45568411)

Fairly predictably, this post has led to comments regarding which language is better for teaching kids. There is merit to that discussion, of course, but the main goal of teaching programming to kids to get them interested and maintain their interest. With regards to this, it matters more what they learn to do with the language than what the language is. The smart, creative, motivated kids will figure this out for themselves; those are the kids that will self-teach. The rest will need to be shown the utility of what they're learning. I remember trying to learning BASIC as a kid: I progressed a little but I never really "got" it. It was only much later, at university, when I had to learn MATLAB to analyse data, that things really clicked. It clicked because I could see how learning this language made my work radically easier and more effective. Since then I've dabbled a bit with Perl, Python, and C++.

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...

Kindergarden? (1)

gravis777 (123605) | about 9 months ago | (#45569153)

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.

Re:Kindergarden? (1)

eyenot (102141) | about 9 months ago | (#45570059)

Yeah but the article is *about* something real. Something really stupid!

An ellipse for K-12? (1)

Sir Holo (531007) | about 9 months ago | (#45569743)

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.

God, wow, throw the teapot in the ocean why doncha (1)

eyenot (102141) | about 9 months ago | (#45570027)

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."

Well at least it's better than a lousy (1)

PJ6 (1151747) | about 9 months ago | (#45570815)

case-sensitive scripting language.

Duh (0)

Anonymous Coward | about 10 months ago | (#45571301)

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?

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?