Slashdot Mirror


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

144 comments

  1. What? by Anonymous Coward · · Score: 5, Insightful

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

  2. How did that change cause a problem? by jfdavis668 · · Score: 0

    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?

  3. At Long Last... by Anonymous Coward · · Score: 5, Insightful

    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.

    1. Re:At Long Last... by Anonymous Coward · · Score: 1

      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.

    2. Re:At Long Last... by binarylarry · · Score: 1

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

      --
      Mod me down, my New Earth Global Warmingist friends!
    3. Re:At Long Last... by Anonymous Coward · · Score: 0

      lololol

    4. Re:At Long Last... by cmdr_tofu · · Score: 2

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

    5. Re:At Long Last... by Anonymous Coward · · Score: 0

      >Given that PHP and Python are both horribly slow

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

    6. Re:At Long Last... by Anonymous Coward · · Score: 0
    7. Re:At Long Last... by Anonymous Coward · · Score: 0

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

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

    8. Re:At Long Last... by binarylarry · · Score: 1

      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.

      --
      Mod me down, my New Earth Global Warmingist friends!
    9. Re:At Long Last... by AuMatar · · Score: 3, Interesting

      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.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    10. Re:At Long Last... by cmdr_tofu · · Score: 1

      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.

    11. Re:At Long Last... by Anonymous Coward · · Score: 0

      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.

    12. Re:At Long Last... by semi-extrinsic · · Score: 1

      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.

      --
      for i in `facebook friends "=bday" 2>/dev/null | cut -d " " -f 3-`; do facebook wallpost $i "Happy birthday!"; done
    13. Re:At Long Last... by AuMatar · · Score: 1

      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.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    14. Re:At Long Last... by Requiem18th · · Score: 1

      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!

      --
      But... the future refused to change.
    15. Re:At Long Last... by Anonymous Coward · · Score: 0

      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.

    16. Re:At Long Last... by Anonymous Coward · · Score: 0, Flamebait

      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.

    17. Re:At Long Last... by RabidReindeer · · Score: 1

      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.

    18. Re:At Long Last... by niftymitch · · Score: 1

      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.

      --
      Truth is stranger than fiction, but it is because Fiction is obliged to stick to possibilities; Truth isn't. Mark Twain.
    19. Re:At Long Last... by Eythian · · Score: 1

      CItation needed.

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

    20. Re:At Long Last... by AuMatar · · Score: 2

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

      --
      I still have more fans than freaks. WTF is wrong with you people?
    21. Re:At Long Last... by Eythian · · Score: 1

      That's not relevant at all, however.

    22. Re:At Long Last... by fisted · · Score: 1

      I can only agree. I have several friends who really know their C# -- and they drive their taxis so well!

    23. Re:At Long Last... by Anonymous Coward · · Score: 0

      The goal is to teach programming, not to prepare them for their next job interview, so Smalltalk is a fine choice. It's also a self-sufficient environment that comes with a UI and IDE without extra installation and runs on almost any OS with minimal processor power.

      Java came and really destroyed a lot of the Smalltalk ecosystem via marketing and taking advantage of greedy Smalltalk vendors at the time (free vs. pay). But that doesn't change the fact there are still old and new Smalltalk systems, especially in some of the higher paying programming jobs like financial analysis. Smalltalk has also seen a small web resurgence with frameworks like Seaside.

      Finally, conceptually Smalltalk is a lot more like where other languages like Ruby try to go, but Smalltalk has already been there a long time. Moreover, the VM concept especially is something that we may see make a comeback in the near future. And I don't mean the JVM or CLR or things like that, but an actual VM with a truly live, interactive environment. The trouble with Smalltalk is it took this to an extreme and isolated itself from the OS so much that it didn't provide some of the benefits the OS automatically does.

      Anyway, more people need to at least be exposed to modern Smalltalk. Perhaps they'd stop making stupid mistakes when creating languages like PHP, Ruby, Python, and so on. Just because it's not wildly popular doesn't mean it can't teach you something. Go look at what people like Gilad Bracha are doing and you'll see the clear influence of Smalltalk directly. It has been relevant for a long time and still is, sorry.

    24. Re:At Long Last... by Anonymous Coward · · Score: 0

      "but nothing is broken down by objects outside of programming"

      This is probably one of the most nonsensical things I've ever seen written on Slashdot. Did you actually mean this or was it a mis-statement?

      Even from the moment we teach kids to count we work with the concept of objects - if I have 3 apples in a bag, and I take 1 out, how many apples do I have?

      The concept of objects is firmly embedded in the way we as a species think and act. People are used to thinking about a thing (object), it's properties (fields) and the actions you can perform with it (methods).

      It sounds very much like you were brought up on a firm diet of procedural (I was too FWIW) but never quite got the conceptual jump to what OOP is all about if you really meant what you said with that statement.

      OO has it's problems (doesn't often map well to problems requiring solutions involving concurrency for example) but being conceptually unnatural for most people isn't one of them.

    25. Re:At Long Last... by AuMatar · · Score: 1

      I made the jump to OO just fine. But the objects used in programming with methods, data, and various scopes have very little in common with objects in the real world. They only do at a very abstract level. Children would have difficulty in making that leap. Its a better add on for later once they've learned the basics of programming and begun to think in mathematical abstractions.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    26. Re:At Long Last... by Anonymous Coward · · Score: 0

      facebook_user.each do |user|
      puts user.name
      end

      That should be obvious to all but the most stupid

      The syntax is Smalltalk inspired so it exists elsewhere.

      each is a method on the module enumerable which Array mixes in.

      The do .. end is a block, aka anonymous function, if you don't know what those are you are more retarded than your post suggests.

    27. Re:At Long Last... by Anonymous Coward · · Score: 0

      You can write completely procedural code in Ruby if that is what you want.

      You can ignore the fact that everything is an object.

    28. Re:At Long Last... by vilanye · · Score: 1

      Everything in Ruby is an object. Without exception.

      Everything after a . is a method call, without exception.

    29. Re:At Long Last... by MikeBabcock · · Score: 1

      I do not find Ruby's structuring more intuitive. When teaching my daughter how computers work, using Python was immediately readable without having to teach her funny symbols.

      Write out the Ruby version of this sometime:

      friends = ['Mark', 'Andrew', 'David']
      for friend in friends:
                print "Hi, " + friend

      Expanding this to calculate ages based on birthdays, etc. was a breeze and very easy to understand. Ruby just has a bigger curve I found.

      --
      - Michael T. Babcock (Yes, I blog)
    30. Re:At Long Last... by MikeBabcock · · Score: 1

      As opposed to Python's [ welcome(dude) for dude in users ] ?? Because that actually makes sense.

      --
      - Michael T. Babcock (Yes, I blog)
    31. Re:At Long Last... by MikeBabcock · · Score: 1

      I like to point out that *all* code is procedural in that all instructions effectively happen after and because of a previous instruction. Objects are just a different way to organize those instructions, but easier to teach after the fact. Its easier to teach this:

      price = 10.00
      taxes = calculate_tax(price)

      And then explain how a "taxed_item" object is cool later.

      --
      - Michael T. Babcock (Yes, I blog)
    32. Re:At Long Last... by Xest · · Score: 1

      I think the problem is one of environments, the problem is that there seems to be this inherent assumption that kids need to learn the same tools that professionals use from the very outset. I'm not sure that's true.

      I think some of the best historic tools for teaching programming to kids like Scratch and Klik 'n Play provide visual representations - you can have say, a monkey and the teacher can say "So how do we make the monkey move his arm?" then it's a case of filling in the procedural code there by calling monkey.move(arm) or whatever.

      If we're talking about getting kids started whilst this might upset the purists who insist that children should write their first code in assembly or Borland Turbo C++ at a command prompt or whatever it's going to get the kids far more interest and be far more effective. They're learning about objects whilst writing procedural code and from there it's far easier to branch them off into either procedural or object oriented code in more professionally focussed environments. If you take them down the OO route you could use something like BlueJ which is a Java IDE that allows for dynamic execution of Java so you can see the effects of it on the fly - it's like a half way house between something like Scratch and a professional grade IDE.

      The problem with OO in a classic development environment is largely one of syntax - it's not that kids couldn't grasp the abstract concept of objects in the slightest, it's just that the overhead of OO equates to much more syntax to learn and that results in an overload of keywords, and syntax to take in.

      Abstract that syntax away into an environment as described above and let them write procedural code whilst referring to visualised objects and I think you have the best of both worlds quite frankly.

      So to me, the problem is one of IDEs - what's great for a professional developer is 99% useless for teaching kids because the environment itself will put the vast majority of students off the topic.

      I think this is where we go wrong with teaching a lot of topics for what it's worth, most prominently maths. I was always given lists of exercises to carry out with no idea what the relevance was to the real world and I found it dull and boring. I ended up with a B in maths at GCSE and dropped out at A-Level only to come back to study later on and get a 1st class honours in Maths at university. It wasn't that I was ever bad at maths, it was that the teaching was so pathetically dull I just couldn't concentrate in class - when I came back to it I was doing so because I wanted a better understanding of the fundamentals behind much of computing and because I had something to apply it too it was just all too easy.

    33. Re:At Long Last... by Requiem18th · · Score: 1

      Firstly, the original Ruby example isn't a a real map but a side effects iteration so the construct you are looking for is
      for dude in users:
              welcome(dude)

      And yes, it makes more sense than
      users.each do |dude|
              welcome(dude)
      end

      So much so that even Ruby has a better way to do it with
      for dude in users
              welcome(dude)
      end

      which is the one Zuckerberg should have used.

      --
      But... the future refused to change.
  4. Sigh by ledow · · Score: 5, Insightful

    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.

    1. Re:Sigh by BenfromMO · · Score: 3, Insightful

      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?

    2. Re:Sigh by Nerdfest · · Score: 2

      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.

    3. Re:Sigh by csumpi · · Score: 3, Informative

      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.

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

    4. Re:Sigh by Anonymous Coward · · Score: 0

      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.

    5. Re:Sigh by gigaherz · · Score: 1

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

    6. Re:Sigh by Anonymous Coward · · Score: 0

      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.

    7. Re:Sigh by MouseTheLuckyDog · · Score: 1

      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.

    8. Re:Sigh by Anonymous Coward · · Score: 2, Interesting

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

    9. Re:Sigh by Anonymous Coward · · Score: 0

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

    10. Re:Sigh by ceoyoyo · · Score: 1

      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.

    11. Re:Sigh by varmfskii · · Score: 1

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

    12. Re:Sigh by Chemisor · · Score: 2

      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.

    13. Re:Sigh by Anonymous Coward · · Score: 0

      like APL?

    14. Re:Sigh by Cutterman · · Score: 1

      "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

    15. Re:Sigh by cascadingstylesheet · · Score: 1

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

    16. Re:Sigh by Anonymous Coward · · Score: 0

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

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

    17. Re:Sigh by Anonymous Coward · · Score: 0

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

    18. Re:Sigh by AvitarX · · Score: 1

      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.

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    19. Re:Sigh by RabidReindeer · · Score: 1

      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.

    20. Re:Sigh by Anonymous Coward · · Score: 0

      It'll become the pariah when facebook gets pilloried like how healthcare.gov was when its use of NoSQL was publicized.

    21. Re:Sigh by fisted · · Score: 2

      Users.each{|user|

      That made my eye twitch. Gross syntax.

    22. Re: Sigh by akanouras · · Score: 1

      Your example reminded me of Python:

      for user in users:
          send_message(user, "Happy Birthday")

    23. Re:Sigh by cascadingstylesheet · · Score: 1

      "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

      Yep.

      If you start off too abstracted, you don't get anywhere, teaching-wise.

    24. Re:Sigh by Anonymous Coward · · Score: 0

      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.

      You're right about engaging reward mechanisms being an essential component too, but that's something for libraries and/or editor environment to provide. (e.g. Here's an Asteroids game written in FMSLogo.) Of course, you also need educators who can teach LOGO effectively and aren't just rote reading from some mindnumbingly tedious and creativity-killing "official teaching plan". The whole goal of LOGO is to drive self-motivated learning - the educator's job is simply to introduce concepts and techniques that aren't readily discoverable by themselves, such as the ability to define your own words (e.g. abstraction and procedures), at appropriate points in the student's learning curve.

      LOGO major problem has always been a presentation one. It failed to explain its motives, techniques and goals to the decision makers in positions of influence and control, allowing itself to be categorized and pigeonholed as everything it was against. Instead of being seen as a tool for learning structured thinking and problem solving, it was viewed as a tool for "teaching programming". Instead of being seen as a highly scalable, open-ended language, it was viewed as a "toy language". Instead of being seen as an egalitarian platform welcoming all students of all abilities, it was pigeonholed as something "for technical kids only". Instead of being seen as a foundation that users could progressively build up in layers to form whatever vocabulary they need to express themselves, it was seen as incapable of anything more than pushing a turtle around the screen with crude FD and LT commands. Instead of being deployed a vehicle for self-education and growth, it was frequently shoehorned into standardized, rote "teaching" patterns guaranteed to destroy any child's early love of learning and exploration.

      Now we have fashionable "post-LOGO" "kid-oriented" "teaching" languages like Scratch, which manage to take LOGO's key goals and toss them on the floor in an attempt to make themselves friendly and accessible to the GUI generation. Scratch looks easy because it is visual; LOGO looks hard because it's text. Yet appearances are deceptive: Scratch is really just a return to the old Algol way of endlessly banging rocks together - in trying to improve on LOGO it utterly misses the point of LOGO and undoes everything it tried to achieve. Rather than reward users for expanding its own primitive vocabulary into their own rich, powerful, tailored languages in which to efficiently express themselves, Scratch rewards them for mashing together ever longer and more convoluted chains of "Lego blocks". The best Scratch (or BASIC) programmer isn't the one who can express the most using the fewest number of words, it's the one who can make their chain the longest before burying themselves with insane levels of self-generated complexity.

      As reward mechanisms go, Scratch's brightly colored pluggable blocks could hardly be worse. Programming isn't about the journey, it's about reaching the destination by the shortest, most effective route possible. Scratch's cheap gamification of the coding process, combined with its failure to promote abstraction as the fundamental building block, communicates the reverse, rewarding students for generating complexity instead of eliminating it. Scratch users, like BASIC users, are absolutely notorious for producing spaghetti.

      The power of abstraction is in allowing users to manage their program's complexity, keeping it within limits they can effectively control, but you can't teach students how to do that if abstraction and procedures are fearf

    25. Re:Sigh by atomicxblue · · Score: 1

      A better place would probably be to start them with algorithms in simple English. It would make it easier for the kids in the long run.. hell, even to this day, I lay out algorithms in my code before I actually start coding:

      """ Do stuff here """

    26. Re:Sigh by atomicxblue · · Score: 1

      yay for BASIC. Remember the times when you had to completely retype the code because you needed to add something inbetween the line numbers and hadn't figured out to number them by 10's? And, by the time you finish typing everything back in, the power would go out? Ahhh... teaching kids the frustrations of programming early. haha

    27. Re:Sigh by Anonymous Coward · · Score: 0

      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.

      What does any of that mean? Does anyone else "get" this analogy?

      Replace "word" with "command" and you have TCL, a language composed of commands and lists. It's been around forever and hasn't gained much ground either.

      Guess we're all just stupid. Good thing there are bright folks like you taking lots of time out from your employer's day to remind us.

    28. Re:Sigh by MouseTheLuckyDog · · Score: 1

      Yet somehow Smalltalk thrived with it.

    29. Re:Sigh by AvitarX · · Score: 1

      The graphics focus of LOGO has the pro / con of requiring visual thinking.

      Basic was great because I could understand what was going on and make changes, and it came on all computers.

      Granted, I don't really know LOGO, I'm just commenting from how things went, and I guess your point is that simple if/then type long chains is bad, but I think that something like basic, with actual functions would do a large part of the trick.

      I don't see where the evil of python is (or really any other language with functions), and I haven't seen many lessons that start with the libraries either, that part always seems to be at the back of the book.

      Of course I'm probably a spaghetti messy coder, as I primarily write small scripts to make my job easier, and am not a real programmer.

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    30. Re:Sigh by Anonymous Coward · · Score: 0

      It is a block argument dipshit.

      Inside the each method, the array is iterated through and it passes each item into the block.

      You use user inside the block.

      Seriously, no wonder most software sucks it is full of idiots.

  5. Lazy kids by nbritton · · Score: 4, Funny

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

    1. Re:Lazy kids by Guppy06 · · Score: 4, Funny

      I worked with machine language in elementary school!

      (We used discarded punchcards in arts and crafts.

    2. Re:Lazy kids by Anonymous Coward · · Score: 0

      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 =(

    3. Re:Lazy kids by Anonymous Coward · · Score: 0

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

    4. Re:Lazy kids by gallondr00nk · · Score: 2

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

    5. Re:Lazy kids by VortexCortex · · Score: 1

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

    6. Re:Lazy kids by Anonymous Coward · · Score: 0

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

      Show off! You probably entered freshman year on full scholarship by age 12 too. ;-)

    7. Re:Lazy kids by Anonymous Coward · · Score: 0

      Oh you poor dear. My generation did not get to experience computers in school until our senior year and that was only if you had a particular mathematics teacher whom brought his own personal computer, a Commodore PET, into the classroom. I curse that man for my life-long intrigue with computers instead of pursuing a more respectable career. Just kidding. Teaching myself to programme helped me become a highly proficient problem solver and molded my brain into an efficient analytical machine.

    8. Re:Lazy kids by Anonymous Coward · · Score: 0

      When I was a sperm I made a particle accelerator, just for fun.

    9. Re:Lazy kids by Anonymous Coward · · Score: 0

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

      Dear God. I hope if you mom was studying programming, she had a C section!

  6. My 5 year old says "Pft. Lamers." by stonebit · · Score: 5, Funny

    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.

    1. Re:My 5 year old says "Pft. Lamers." by Anonymous Coward · · Score: 0

      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.

  7. language wars still hot for good reason by bzipitidoo · · Score: 2, Interesting

    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"
    1. Re:language wars still hot for good reason by Anonymous Coward · · Score: 0

      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.

    2. Re:language wars still hot for good reason by binarylarry · · Score: 3, Insightful

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

      --
      Mod me down, my New Earth Global Warmingist friends!
    3. Re:language wars still hot for good reason by Anonymous Coward · · Score: 0

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

      Don't be an arsehole.

    4. Re:language wars still hot for good reason by msclrhd · · Score: 2

      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.

    5. Re:language wars still hot for good reason by fermion · · Score: 2
      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 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.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    6. Re:language wars still hot for good reason by istartedi · · Score: 1

      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.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    7. Re:language wars still hot for good reason by narcc · · Score: 1

      It's good because it has an interactive mode?

      There are better beginner languages with an interactive mode, like BASIC and Logo.

    8. Re:language wars still hot for good reason by Anonymous Coward · · Score: 0

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

      Don't be an arsehole.

      I thought programming is the McDonald's of technical jobs. At least that is how William Gates wants it so Microsoft can hire programmers by the boatload and dispose of them whenever a cheaper shipment is desired.

    9. Re:language wars still hot for good reason by Anonymous Coward · · Score: 0

      You can do that with Scheme too, except you have to type (* 5 2). Not very intuitive, is it?

      I never understood why so many programmers fall in love with Lisp. To me, reading Lisp/Scheme code is mind-bending. Its syntax is made to accommodate how the computer works. I believe the computer should accommodate how humans work instead.

    10. Re:language wars still hot for good reason by Anonymous Coward · · Score: 0

      Clearly your nieces are human, I'm not so sure about you. SVG was not meant for human eyes.

  8. 10 years from now by Anonymous Coward · · Score: 3, Insightful

    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.

    1. Re:10 years from now by MacDork · · Score: 1

      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.

    2. Re:10 years from now by eyenot · · Score: 1

      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.

      --
      "Stratigraphically the origin of agriculture and thermonuclear destruction will appear essentially simultaneous" -- Lee
    3. Re:10 years from now by PJ6 · · Score: 1

      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.

  9. Poison by Anonymous Coward · · Score: 0

    Leave these kids alone fucknut

  10. hmmm by buddyglass · · Score: 3, Funny

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

    1. Re:hmmm by frank_adrian314159 · · Score: 1

      Exactly! Now you've got the picture!

      --
      That is all.
  11. Inconsequential by WPIDalamar · · Score: 2

    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.

    1. Re:Inconsequential by eyenot · · Score: 1

      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.

      --
      "Stratigraphically the origin of agriculture and thermonuclear destruction will appear essentially simultaneous" -- Lee
  12. Zuckerberg, role model? by Anonymous Coward · · Score: 0

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

    1. Re:Zuckerberg, role model? by PPH · · Score: 1

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

      --
      Have gnu, will travel.
  13. Because there has been little innovation since by Anonymous Coward · · Score: 0

    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.

  14. I mean, they are kindergarten kids. by __aaltlg1547 · · Score: 1, Insightful

    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?

    1. Re: I mean, they are kindergarten kids. by Anonymous Coward · · Score: 0

      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.

    2. Re:I mean, they are kindergarten kids. by GrumpySteen · · Score: 1

      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.

    3. Re: I mean, they are kindergarten kids. by ShanghaiBill · · Score: 2

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

    4. Re:I mean, they are kindergarten kids. by Anonymous Coward · · Score: 0

      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.

    5. Re:I mean, they are kindergarten kids. by narcc · · Score: 1

      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?

    6. Re:I mean, they are kindergarten kids. by atomicxblue · · Score: 1

      We did programming in primary school, but it was more of the LOGO Turtle variety. I didn't start writing while loops until college.

    7. Re: I mean, they are kindergarten kids. by atomicxblue · · Score: 1

      I remember in middle school it took the teacher a week to teach us enough to put a white box on the screen and have it move from one side to the other. I couldn't imagine 3rd and 4th graders. Maybe since they have grown up in a completely digital age, their little minds are more open to the concepts.

    8. Re:I mean, they are kindergarten kids. by atomicxblue · · Score: 1

      Except when you are drawing a square and tell the little turtle to turn left instead of right because your mind hadn't yet grasped translations. I hated that little turtle sometimes.

  15. Language not as important as motivation / context by greg_barton · · Score: 1

    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.

  16. Re:Language not as important as motivation / conte by Anonymous Coward · · Score: 0

    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.

  17. Webscale by ynoref+ · · Score: 0

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

  18. PHB's are the real issues not unaccredited coders by Joe_Dragon · · Score: 1

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

  19. Wat? by Greyfox · · Score: 3, Interesting
    Wat?

    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?

    1. Re:Wat? by Anonymous Coward · · Score: 0

      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.

    2. Re:Wat? by Anonymous Coward · · Score: 0

      Wat?

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

      The more enlightened say: "languages are just syntax. We don't need a hundred different syntaxes to express the same concepts. Let's stop reinventing the wheel."
      Letters are just syntax. Yet nobody reinvents new ones an a daily basis.

  20. More important than what you do with the language by umafuckit · · Score: 1
    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...

  21. Re:Language not as important as motivation / conte by Anonymous Coward · · Score: 0

    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.

  22. 20 goto 10 by theodp · · Score: 1

    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! :-)

    1. Re:20 goto 10 by MikeBabcock · · Score: 1

      20 goto 10 got me intrigued with how computers worked and how to program them when I was 9. It never stopped. Most others saw 'Hello' running up the screen and said 'meh'.

      --
      - Michael T. Babcock (Yes, I blog)
  23. Re:Language not as important as motivation / conte by iiiears · · Score: 1

    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.)
  24. Kindergarden? by gravis777 · · Score: 1

    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.

    1. Re:Kindergarden? by eyenot · · Score: 1

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

      --
      "Stratigraphically the origin of agriculture and thermonuclear destruction will appear essentially simultaneous" -- Lee
  25. Re:Language not as important as motivation / conte by Anonymous Coward · · Score: 0

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

  26. Minecraft perfect intro for children. Parent++ by jfisherwa · · Score: 1

    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)

    1. Re:Minecraft perfect intro for children. Parent++ by greg_barton · · Score: 1

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

  27. Re:Language not as important as motivation / conte by greg_barton · · Score: 1

    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.

  28. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  29. An ellipse for K-12? by Sir+Holo · · Score: 1

    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.

  30. God, wow, throw the teapot in the ocean why doncha by eyenot · · Score: 1

    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
  31. take away the fact that by Anonymous Coward · · Score: 0

    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

  32. Scheme? by JanneM · · Score: 1

    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.
    1. Re:Scheme? by Anonymous Coward · · Score: 0

      As many point out BASIC has a lot of problems, and it's easy to acquire bad habits with it.

      I learned to programme computers using BASIC, Commodore CBM BASIC to be precise. Afterwards, I taught myself 6502 assembly language and the rest is history. My programming skills (code plus algorithms plus maintainability) are second to none and easily surpass many tenured university professors. BASIC is the ideal first programming language for K-12 because they can develop a variety of applications if sufficiently motivated; text adventures and arcade-style games are probably the easiest in terms of motivating students. I still have books filled with BASIC source code for quite a variety of games and utilities. It is a shame children today don't understand how a computer works at least at an algorithmic level not to mention a the CPU level.

    2. Re:Scheme? by bzipitidoo · · Score: 1

      Scheme has a number of problems. A big one can be summed up with this backronym: Lots of Idiotic Single Parentheses. The language could have really used a way to consolidate lots of closing parentheses.

      The prefix notation is another problem. Or, rather, that LISP uses prefix, and grade school math is taught in infix.

      Recursion is yet another problem. Children are going to have a very hard time grasping recursion, rather than using explicit loop constructs such as "for next" and "while".

      The I/O of many languages tends towards the Zen like, and LISP is worse than average on that. Just not well connected to system calls for things like getting mouse positions from the GUI.

      LISP simply isn't procedural and linear enough. Sequential parts of a LISP program can be separated by large stretches of details, things like lambda functions, monster eval calls, and ugly list manipulation routines full of the obscurely named "car" and "cdr" functions.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  33. Re:PHB's are the real issues not unaccredited code by Anonymous Coward · · Score: 0

    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.

  34. Well at least it's better than a lousy by PJ6 · · Score: 1

    case-sensitive scripting language.

  35. Duh by Anonymous Coward · · Score: 0

    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?

  36. Re:God, wow, throw the teapot in the ocean why don by Anonymous Coward · · Score: 0

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

  37. Re:Language not as important as motivation / conte by Anonymous Coward · · Score: 0

    Moderate parent up.

    I've got OCD, you insensitive clod, and you messed up the equilibrium.

    Mod parent down.

    Much better now.

  38. Kindergarten? Not early enough! by kmoser · · Score: 1

    I'm teaching my kid assembly in utero.

  39. Slow news day or /. broken? by Barryke · · Score: 1

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