Slashdot Mirror


'CodeSpells' Video Game Teaches Children Java Programming

CyberSlugGump writes "Computer scientists at UC San Diego have developed a 3D first-person video game designed to teach young students Java programming. In CodeSpells, a wizard must help a land of gnomes by writing spells in Java. Simple quests teach main Java components such as conditional and loop statements. Research presented March 8 at the 2013 SIGCSE Technical Symposium indicate that a test group of 40 girls aged 10-12 mastered many programming concepts in just one hour of playing."

245 comments

  1. The spell book looks INCREDIBLE: by Osgeld · · Score: 2

    Or like a windows 3.11 ui for an edutainment product that came with the computer...

    whatever, as long as it works

    1. Re:The spell book looks INCREDIBLE: by Fluffeh · · Score: 4, Insightful

      The entire game looks pretty basic - and who the heck cares? Watch a two year old and see what happens when you give em a present. They are as likely to play in the big box as with the toy.

      Graphics might be important for the latest 3D shooter, but a good game doesn't HAVE to have cutting edge graphics. A game with amazing graphics can still be crap.

      If the idea is to teach kids how to code, and they enjoy playing the game enough to at least learn a little coding - then it is a GREAT product. If I was ten and wanted to learn java and had a choice of following tutorials/reading books/etc or playing a game that taught me the concepts, then I certainly know how I would have learned java. Sure, all my projectst might also include a random "Save the GNOMES!!" routine, but you know..

      --
      Moved to http://soylentnews.org/. You are invited to join us too!
    2. Re:The spell book looks INCREDIBLE: by smittyoneeach · · Score: 1

      No way. I'm waiting for the Bob interface. Just as soon as Godot finishes the coding.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    3. Re:The spell book looks INCREDIBLE: by McFadden · · Score: 2

      I got almost my entire introduction to programming in a C-like language through being a Wizard on an LP-Mud back in my student days in London. And that had no graphical UI at all - just text only. Until that point I had no prior programming experience, but it taught me the fundamentals that have now served me for over 20 years as a developer.

    4. Re:The spell book looks INCREDIBLE: by cusco · · Score: 1

      Gnomes? Now if the object were to attack the Land of Gnomes instead, even I might learn how to code.

      --
      "Think about how stupid the average person is. Now, realise that half of them are dumber than that." - George Carlin
    5. Re:The spell book looks INCREDIBLE: by pushing-robot · · Score: 1

      It's silly to complain about such an early version. Don't worry—Java 10 should catch up with the Windows 95 GUI.

      --
      How can I believe you when you tell me what I don't want to hear?
    6. Re:The spell book looks INCREDIBLE: by LordLimecat · · Score: 2, Insightful

      The entire game looks pretty basic - and who the heck cares? Watch a two year old and see what happens when you give em a present.

      Polish can be incredibly important. If first impressions are bad, the student may not get hooked, which defeats the entire point of packaging the thing like a game.

    7. Re:The spell book looks INCREDIBLE: by Cryacin · · Score: 2

      Polish? Why do you want to outsource this to Poland already?

      --
      Science advances one funeral at a time- Max Planck
    8. Re:The spell book looks INCREDIBLE: by qwak23 · · Score: 2

      Because they brought us "The Witcher" and we'd really like to see what else the Polish people are capable of?

    9. Re:The spell book looks INCREDIBLE: by Anonymous Coward · · Score: 0

      Now computer scientists have joined the corporatists in the drive to create the illusion that anyone can develop computer software thereby allowing companies to reduce wages to minimum wage level over the coming decade. The choice of Java is a clear signal these computer scientists live in never-never land.

    10. Re:The spell book looks INCREDIBLE: by seeker_1us · · Score: 2

      Something can be basic and polished. This doesn't look unpolished.

    11. Re:The spell book looks INCREDIBLE: by Anonymous Coward · · Score: 0

      A game with amazing graphics can still be crap.

      See Crysis, Crysis 2, Crysis 3....

    12. Re:The spell book looks INCREDIBLE: by Zaatxe · · Score: 1

      You can also say the game needs to be "finnished"...

      --
      So say we all
    13. Re:The spell book looks INCREDIBLE: by HaZardman27 · · Score: 1

      Also, anything that's come out of id during the last 10 years.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    14. Re:The spell book looks INCREDIBLE: by HaZardman27 · · Score: 1

      Go home, put your tin foil hat on, and protect your lawn. Java's not a great language, but it's an ok language for certain uses, and it's also one of the most frequently taught languages in universities. It's a decent way to teach the fundamentals of programming and object-oriented design, while also having the benefit of a C-like syntax which means it's easier for someone who knows Java to adapt to C or C++. "Creating the illusion" that anyone can develop computer software won't do a damn thing to help companies reduce wages unless they're able to easily find programmers willing to work for cheap. Given the extremely low unemployment rate for software engineers (in the US at least), this is obviously not yet a problem.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    15. Re: The spell book looks INCREDIBLE: by T0sk1 · · Score: 1

      I totally agree with you. My touch typing and speed reading were production ready after six months of sorc play on Gemstone 3 back in the day.

      --
      Is there no end to the madness...
    16. Re:The spell book looks INCREDIBLE: by CelticWhisper · · Score: 1

      Sorry, but completeness and jazzed-up embellishments are completely different aspects of the product. There's just norway to compare the two.

      --
      Help protect civil rights from abuse by the TSA - visit TSA News Blog.
      http://www.tsanewsblog.com
    17. Re:The spell book looks INCREDIBLE: by Anonymous Coward · · Score: 0

      Anyone CAN develop computer software, you pretentious idiot. Its just that not everyone can be good at it. Or are you saying that, unless one is going to be good at something, one shouldnt even try?

    18. Re:The spell book looks INCREDIBLE: by butalearner · · Score: 1

      I'm not sure that's entirely german to this discussion.

    19. Re:The spell book looks INCREDIBLE: by dcollins117 · · Score: 1

      The fancy graphics are just there to whet the children's appetite; it makes them hungary for more.

    20. Re:The spell book looks INCREDIBLE: by lennier · · Score: 1

      What's more important is whether the architecture is fully open so the students can czech inside.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
  2. Code Hero by Anonymous Coward · · Score: 0

    Sounds like Code Hero.
    Plays Like Code Hero.
    Is Code Hero.

    1. Re:Code Hero by MrEricSir · · Score: 2

      Let's compare the two, shall we?

      CodeSpells actually exists and is backed by a university. Code Hero shows no signs of ever being completed and is backed by a guy who's notorious for scamming people.

      --
      There's no -1 for "I don't get it."
    2. Re:Code Hero by Anonymous Coward · · Score: 0

      Would you mind backing those words up?

      You know, especially the part about 'scamming people'?

    3. Re:Code Hero by MrEricSir · · Score: 1

      Seriously? Never heard of something called "Google"?

      --
      There's no -1 for "I don't get it."
    4. Re:Code Hero by Anonymous Coward · · Score: 0

      Oh.. Ill remember that one the next time I write a research article.

    5. Re:Code Hero by Cito · · Score: 1

      Code Hero dev is a lying scammer

      http://www.escapistmagazine.com/forums/read/7.395980-Code-Hero-Kickstarter-Goes-Bad-UPDATED

      and thousands of articles just google: Code Hero scam

      There is already a lawsuit forming against the scammer

    6. Re:Code Hero by Anonymous Coward · · Score: 0

      I'll remember your comment, next time I comment on something and somebody expects me to back it up with the same data quality and quantity I'd use in a research article.

  3. How about Python or something? by spike+hay · · Score: 0, Flamebait

    Why teach a crappy, relatively more difficult language like Java to children?

    At least teach a hard but good language like Haskell or C.

    --
    If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
    1. Re:How about Python or something? by Anonymous Coward · · Score: 0

      If you taught C or Haskell, then the boys and religious people wouldn't be capable of comprehending the language. Picking Java over C means that you're not denying an education to over half of the public.

    2. Re:How about Python or something? by spike+hay · · Score: 2

      Over half of the population is way too dumb to understand programming in the first place. It's better to start off with a good language.

      Also, C is easier than Java. C++ maybe not, but then it sucks balls too.

      --
      If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
    3. Re:How about Python or something? by Anonymous Coward · · Score: 1

      Java is a great language for beginners. It teaches you all the basics of OOP without all the confusing mess that can accompany garbage collecting and pointers.

    4. Re:How about Python or something? by spike+hay · · Score: 1, Insightful

      Pointers are not complicated, I'm sorry. Mabye for 8 year olds, but that's why they should learn Python. It's actually really easy, it's a very popular language, and it teaches good coding practices as well as jack-off object oriented concepts.

      --
      If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
    5. Re:How about Python or something? by Anonymous Coward · · Score: 1

      no one uses python in the real world outside of linux nerds, and your not going to teach kids that confusing bullshit whitespace formats, fuck programmers hate it too

      Yeah, like all those Linux nerds at Google. And the significant whitespace isn't confusing, at least not to anyone who has learned how to write an outline.
      (I've been programming for more than thirty years, and I love Python.)

      Obligatory xkcd: Python!

    6. Re:How about Python or something? by Anonymous Coward · · Score: 0

      Python fails through bad syntax. It replaces curly braces with inferior trailing colons and worse.

    7. Re:How about Python or something? by Anonymous Coward · · Score: 3, Insightful

      Pointers really are complicated for anyone IQ 110 or below. Most people who attempt CS weed out classes are above average, but half struggle with pointers.

    8. Re:How about Python or something? by Anonymous Coward · · Score: 1

      FYI, the target audience IS elementary school students.

    9. Re:How about Python or something? by spike+hay · · Score: 1

      Nah, it's more readable to use whitespace to denote codeblocks. It's not like it's easy to match up a bunch of curly braces. And you should be indenting anyway, right?

      --
      If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
    10. Re:How about Python or something? by PhamNguyen · · Score: 1

      Don't forget the Southerners. They need to be able to learn it too ya'll.

    11. Re:How about Python or something? by Anonymous Coward · · Score: 0

      I went on to become quite proficient at C. Prior to that I had experience with 6502 assembler on the C-64. My first exposure to pointers was in Pascal though, and it was tougher than assembly. I'm not sure if it was the syntax or what; but it was actually harder to get used to pointers in HLL than it was to STA to a memory location. Pointers got easier for me in C and C++ after a year or so until they were 2nd nature. I've often wondered what would happen if * wasn't used for pointers in C. There's a lot of cognitive dissonance between multiplication and pointers for newbies. p=enough_memory; *p=2 ; ASSERT(4==2**p). I can write that and read it now and it's like writing and reading English; but first year? Had to slow way down and parse it...

    12. Re:How about Python or something? by smittyoneeach · · Score: 1

      I live in the South and teach Sunday School. So I guess I fall under some double-negative clause.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    13. Re:How about Python or something? by xero314 · · Score: 2

      That's elitist bullshit. 90% of the population of the world could easily learn to program and learn to do it proficiently. If we taught binary and boolean logic earlier in life, programing would be second nature. And yes I interview crapy engineers regularly. It's not lack of capability holding them back, but rather piss poor education.

    14. Re:How about Python or something? by xero314 · · Score: 1

      White space works to denote code blocks only if everyone agrees on what readable code looks like. But since K&R taught everyone the wrong way, you might find it hard to get people to agree. With white space being insignifacant each reader of the code can format it however they want. One might argue that we should not even be storing formatted code but leave the format up to the ide/editor.

    15. Re:How about Python or something? by spike+hay · · Score: 2

      Yeah, you interview crappy >. Try talking to liberal arts students or people who have not gone to college.

      --
      If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
    16. Re:How about Python or something? by spike+hay · · Score: 1

      is engineers. Slashdot cut it off as a tag

      --
      If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
    17. Re:How about Python or something? by xero314 · · Score: 3, Insightful

      Gee, when you talk to people that never learned programming they know nothing about programming. If you are having trouble explaining it then the problem might not be on their side.

    18. Re:How about Python or something? by jrumney · · Score: 3, Insightful

      Also, C is easier than Java.

      Perhaps to someone who has been trained in C but not Java. The biggest problems with C when compared against Java is the limited extent of its standard library, sorting through the plethora of poorly documented non-standard libraries that are available (vs Java, where if there isn't a standard for it, then the next obvious stop is apache.org) and the fact that you need to understand the hardware architecture of the system you are developing for in a lot of cases, as well as distinctions between stack and heap and a bunch of low level gotchas in the language that are far from obvious to the newbie, or even to experienced developers sometimes.

    19. Re:How about Python or something? by Anonymous Coward · · Score: 2, Funny

      Also, you said "your" instead of "you're"; if you are confused by this, these words are used correctly here: "you're a moron, your opinion doesn't count."

    20. Re:How about Python or something? by pspahn · · Score: 1

      I would argue that it's probably more beneficial to teach children some completely fictional programming language. Let the intelligent ones figure out theoretical improvements.

      --
      Someone flopped a steamer in the gene pool.
    21. Re: How about Python or something? by Anonymous Coward · · Score: 0

      The people at Google probably use as much java as python. Some examples are Android and gwt. I think the reason for something like java is that it doesn't have many of the cool automatic things. This means you can teach kids how to code the basics. For the same reason I think c would have been a better language, but perhaps they were trying to teach about objects or something.

    22. Re:How about Python or something? by Kagato · · Score: 1

      I was just visting with the good folks at the local Python users group. Nice folks, but the when I dug into where the actual jobs are it was clear Python was not a bread winner by a long shot. Most of them were using only Python when they were bidding out the work and the client had no input into the language to use. That tended to be side gigs. The 9-to-5 work was usually Java or .Net.

      Python certainly has it's great points, but so do a dozen of so does Groovy, Clojure, Ruby and Scala. I know a lot of folks using Python to help manage their cloud deploys. But the actual applications tend to be written in Java or a language that's going to compile to Java Optcode. Like Jython.

    23. Re:How about Python or something? by Anonymous Coward · · Score: 0

      I'd like to say that one might have a university degree, that doesn't mean they can code even if their life depended on it.

    24. Re:How about Python or something? by Anonymous Coward · · Score: 0

      Python joins the list of excellent languages that have whitespace requirements:
          Makefiles
          COBOL
          ???

    25. Re:How about Python or something? by Anonymous Coward · · Score: 0

      I learnt about pointers myself when I was a kid. And handles too.

      So I don't think the problem is pointers. The problem is C is a poor language. If C was a power tool it would be one with cutting edges nearly everywhere and fewer than 10 people in the world could _consistently_ use it safely.

    26. Re:How about Python or something? by Anonymous Coward · · Score: 0

      The thing is, everything you describe as a minus are requirements to becoming a competent programmer. Over the last 25 years as a programmer I've worked with programmers who didn't understand these concepts and they all sucked. Teach the essential concepts early so they inform all subsequent learning.

    27. Re:How about Python or something? by cduffy · · Score: 2

      The author of python even stated that he designed python for web hacking

      I'll have to ask you to back that up. Python 1.0 is from 1994, and didn't have much by way of specialized facilities for this purpose. Sure you aren't thinking of PHP?

      Anyhow, if you care about "type systems and formalism", you should be on Haskell; Java is distinctly half-assed. (Type-erasure generics? Really?!)

    28. Re:How about Python or something? by Anonymous Coward · · Score: 0

      90% of the population of the world could easily learn to program

      Agreed.

      and learn to do it proficiently

      You're an idiot. Look at how easily manipulated and illogical most people are. There is simply no way that they can understand abstract logic in any significant way, and claims to the contrary are just the result of blind optimism.

    29. Re:How about Python or something? by qwak23 · · Score: 1

      As opposed to the high level gotchas in Java? ;)

      Java can be just as obtuse as C, if not more so.

    30. Re: How about Python or something? by Anonymous Coward · · Score: 5, Informative

      The reason that Java isn't as fun to program is the same reason that it's good for businesses. The language is very restrictive and prescriptive of how you should do things. For programmers that want flexibility and power, the constraints and extra typing (dual-meaning intended) chafe. But when you're using it as part of a large group, those same constraints become the things you can depend on. Where is a certain class located? Java requires it to be in a certain directory. What methods are available on a class? Java's static type system was designed to make tooling easy, so your IDE will tell you. And even talented programmers can mess up manual memory management...the less-talented wouldn't stand a chance without Java's memory management. The list of things that Java prevents you from screwing up is quite long.

      Basically, for my home coding projects and projects where I work with a small team of talented developers, Java is one of my last choices. But for my boring 9-5 job where I'm working with 30 knuckle-draggers who don't understand the purpose of an interface, let alone how to write functional code that's easy to read, I want them writing Java and I'm willing to pay the Java price to get that.

    31. Re:How about Python or something? by jrumney · · Score: 0

      When we teach maths to elementary school students, do we insist that they understand differential calculus before we teach them addition and subtraction?

    32. Re:How about Python or something? by Anonymous Coward · · Score: 1

      That's not their fault; it's the fault of our educational system.

    33. Re:How about Python or something? by Anonymous Coward · · Score: 0

      Don't be proud of writing ASSERT(4==2**p). That's ghastly code. Nobody in their right mind would ever write that if they wanted the code to be readable.

    34. Re:How about Python or something? by Anonymous Coward · · Score: 0

      shut up professor, don't you have a pathetic life making your students miserable already?

    35. Re:How about Python or something? by Samantha+Wright · · Score: 2

      While the mods may not agree with you very strongly, I've seen a wealth of evidence that says Java is a bad introductory language. The CS department at my alma mater switched from an all-Java curriculum to one with a Python intro, and the student attrition rate dropped by a significant margin. A friend of mine—the daughter of two CS profs—was dead-set on avoiding programming as a teenager until I introduced her to languages other than Java.

      While the formalisms and syntax are great for software engineers writing reusable and interoperable code, they're a serious blight to beginning programmers. The practice of teaching nothing but Java is probably more responsible for the post-dotcom drop in enrolment than the actual tech sector recession. Children should be taught something with a simple, easy-to-understand operating model like BASIC, Turing, or Pascal. It's frustrating to think about how much work went into programmer education in the sixties, seventies, and eighties, and how it's all been thrown away just because the languages at hand were obsolete.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    36. Re:How about Python or something? by qwak23 · · Score: 1

      Indeed. Seriously fuck java. I decided to try to learn Java after quite a few years of not coding (not that I ever got that advanced with it anyway). There are not enough derogatory words in all languages combined to describe my hatred of Java. It seems simple and straightforward at first, but this is deception! (To be fair, some of my issue is with the buzzword like jargon associated with it and OOP in general, fucking insanity). Sure, basic math to advanced math (which is generally what I use code for being a current Math major) isn't that bad, and not really any different from C or even BASIC. But anything you want to do beyond that is a fucking nightmare. Want to poll the mouse? keyboard? draw to the screen? Simple, straightforward tasks, here's the proper syntax, the relevant objects, blah blah blah. Oh wait, it doesn't work? Did you remember to do this? oh you did, oh in that case you weren't supposed to, still doesn't work? hrmmm.....

      I'm sure there probably is an underlying logic to it, I'm sure a more experienced Java vet could easily tell me what was wrong with it, but you know, documentation and maybe a reference book or two should be all anyone needs to get through a new language. Maybe I'll just stick with pseudocode and be happy. I've actually been digging C# lately because it makes that stuff EASY. It's simple, it's straightforward, there aren't as many bizarre syntax quirks.

      But yeah, easy to understand languages that capture the general concept of algorithm construction are best for intro programming, drop the syntax and buzzword nonsense and just focus on structure. Hell even just sticking with pseudocode for a beginner might not be bad (though, they wouldn't be able to run a program and see a result, so no feedback).

    37. Re:How about Python or something? by Anonymous Coward · · Score: 1

      Almost everyone I've encountered was unable to understand mathematics. They memorized formulas and procedures before reaching university, sure, but guess what? They were weeded out very, very quickly by teachers who actually expect you to understand the material, and that even happened after the instructors tried to help them. Some people just don't and can't 'get it'.

    38. Re:How about Python or something? by Samantha+Wright · · Score: 3, Interesting

      Irony of ironies, C# is almost exactly like Java at the language level, only with a totally different object hierarchy, which is why it's easier for UI development. The .NET hierarchy is somewhat influenced by classic VB, which was a very well-developed and efficient (if sometimes limiting) format for expressing common UI needs.

      Java's popularity, sadly, has to do exactly with that OOP evangelism. In the late eighties and early nineties, academic software engineers were absolutely convinced OOP was the silver-bullet software development paradigm for all ills, since encapsulation (hiding methods) made code re-use practical. They also believed it was the end to all programming practices that inhibited re-use, particularly global variables. Unfortunately they made the mistake of conflating these practices with "laziness," and very mistakenly believed in a bizarrely Victorian fashion that all beginners should be forced to use only best practices, as though we should be teaching infants proper manners straight out of the crib.

      It's stupid enough that I sometimes wonder if it was a massive conspiracy by Sun's marketing department, but to be honest computing has always been full of fads like this. In the early eighties, logic programming was The Way Of The Future; everyone thought that Prolog and constraint-satisfaction-based expert systems (basically, fancy predicate logic expression solvers) would dominate computing for the rest of time. Today, there are only a few niches where new Prolog code is considered desirable.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    39. Re:How about Python or something? by Anonymous Coward · · Score: 0

      I started with C and had no trouble grasping the concepts you described. Maybe you're just worried that most people aren't very intelligent?

    40. Re:How about Python or something? by qwak23 · · Score: 1

      No, but it might not hurt to try and find a way to introduce those concepts earlier? The same goes for programming, logic is a segment of mathematics that is essential to programming yet doesn't require concepts such as addition and its offshoots (almost every other operation commonly used in Math). Boolean and Binary logic are the foundation of programming and are simple enough that a 5 year old can grasp them. Sure, they may not be able to design complex circuits at that age (though you might get the occasional child who will wow you) but they could most certainly understand the concept and apply it at a basic level.

    41. Re:How about Python or something? by qwak23 · · Score: 1

      Oh trust me, I get that about C#, it's just that much of a step up above Java (and both have roots in C, so the transition was fairly easy). Granted I'm old enough to where when I started programming OOP hadn't even become a fad yet (to be fair, I started at a much earlier age than most of my peers - PC's weren't common in the home at the time - mid 80's). Though I still tend to think procedurally, I like the concepts of OOP, just hate that evangelism and the needless jargon introduced to separate it from everything that came before it. Methods? Really? Did we honestly need to introduce a new word for what is essentially a function? Encapsulation? Ok, now we are just moving into intellectual elitism.

      I like your Victorian comparison. I find it rather fitting.

    42. Re:How about Python or something? by Samantha+Wright · · Score: 2

      Just like in math, CS is riddled with context-specific names for refinements of the same thing. You wouldn't want to conflate a ring with a field, right? For what it's worth, though, the first OOP language, Simula, just called them "procedures" at the syntax level. And in the case of encapsulation, there really isn't a good, compact term for "writing all of your code properly so that nothing inappropriate is publicly accessible," so that was kind of a new concept that needed a new name.

      But for what it's worth, I'm not a fan of OOP terminology either, and cringe whenever a Java-educated programmer uses the word "method" to describe any old subroutine. I assume there were structured programming advocates back in the early eighties who got annoyed when C programmers started calling everything "functions," even when they didn't have return values.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    43. Re: How about Python or something? by phantomfive · · Score: 3

      In other words, "Java is for other people." I feel the same way: I used to hate Java, but now I respect it for the reasons you just described.

      --
      "First they came for the slanderers and i said nothing."
    44. Re:How about Python or something? by qwak23 · · Score: 1

      As a Math major I totally get that. Especially at the more advanced level where you start using perpendicular, orthogonal and normal pretty much interchangeably. In programming, I've used "procedure", "subroutine", "function" and "method" to describe what is conceptually the same thing. I like function best because of the easy tie in with Math, granted given the mathematic definition of a function, I can see where a function with no return value seems bizarre.

      As far as encapsulation goes, while I get that there wasn't a term in programming prior to the concept being introduced, it just feels buzzwordy and elitist. Object at least makes sense, so does class. Constructor? Sure, I'll buy it. But encapsulation just feels intentionally obtuse, I'll totally blame that on your marketing conspiracy theory.

      I've at times considered delving more into CS with the goal of developing my own high level language, but my interest in CS really is only an extension of my interest in Mathematics and Physics and the desire to use computational resources to support applications of both. I'm also afraid that while my goals in developing said language might be noble, that I would easily get distracted and end up developing something just as obtuse if not more so. I certainly have a lot of respect for the difficulty of the task.

    45. Re:How about Python or something? by qwak23 · · Score: 4, Insightful

      At the elementary level I don't think the choice of language with reference to the business environment is that important. Teaching kids that they can make their computer/tablet/whatever DO STUFF and presenting it in an easy to digest format is much more valuable that what is big in the industry now. Keep in mind, elementary age... at least 20 years (on average) until they start rolling to the job market. Not all of them will be programmers. The languages we use now may be dying by that point. they may not all be programmers, some may be scientists using more focused languages in the vein of Matlab, some may be homemakers, some may be athletes, some may be artists. But they will all have an appreciation for technology and what it can do. They will all get introduced to logic and algorithmic structure at a much earlier age than is normal right now. Those things easily apply to other aspects of life. Hell, if they keep at programming strictly on a hobby basis, they may even catch on to when the developers at their company/organization/whatever are BS'ing them about what can and cannot be accomplished.

    46. Re:How about Python or something? by qwak23 · · Score: 1

      I need to lay off the alcohol tonight. I just realized I responded to two of your posts in the exact same fashion. /sigh

    47. Re:How about Python or something? by jkflying · · Score: 2

      This is 2013, we shouldn't have to indent manually still. If you want to cut/paste a few lines of of code from one section to another, if the indentation doesn't match it can be seriously annoying in python to get it all correct. Compare this to java, where as long as it is between the curly brackets I know it will be OK. Press the shortcut for auto-indent, and I can tell immediately if it is in the right place.

      --
      Help I am stuck in a signature factory!
    48. Re:How about Python or something? by Samantha+Wright · · Score: 1

      In my opinion the worst OOP offences are what sane people call "setters" and "getters", but are what are probably called "mutators" and "accessors". To most people they're a necessary evil when you want to limit the range of values a variable can take on (although C# does this transparently with properties, which Microsoft (confusingly) recommends starting with an upper-case letter... what the hell, Microsoft?) but in Java, students are often taught to write them even when they're completely transparent and deal with primitive types that can't even be null!

      As for developing new languages, mathematicians have actually contributed a great deal to CS in that department. Matlab and R represent the best-known math-centric languages, and tellingly, Matlab is very anti-theory—it can't pass variables by reference, no matter how big your matrices are. With a bit of digging, you might find that the language you really want is already out there, and already heavily-optimized. (Which is by far the biggest challenge in implementing a useful math-intensive programming environment.)

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    49. Re:How about Python or something? by Samantha+Wright · · Score: 1

      Bed, yes... bed is the thing we all need.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    50. Re: How about Python or something? by The_Noid · · Score: 1

      I think Java is fun to program in for exactly those reasons. For me the fun in programming is getting cool results and Java allows one to create complex stuff without having to constantly worry about shooting oneself in the foot. It allows me to use my full brain capacity for the actual algorithms I want to create and doesn't add lots of cognitive load. Especially when using a powerful IDE, like Netbeans.

    51. Re:How about Python or something? by qwak23 · · Score: 1

      I still have enough of the old procedural mindset in me to avoid setters, getters, mutators and accessors all at once! What is even better is that /.'s apparently recently implemented spelling/grammar check doesn't like mutator or accessor. +1 for the sane people I suppose? I don't write code to be rolled out into a large package to be reused by someone else elsewhere in an obtuse and poorly implemented fashion. I will set my variables to what I want, how I want, when I want.

      Oddly enough my desire for developing a new language is not rooted in my scientific interests, but rather just an ease of use interest. Hell, ultimately my ideal language would be one you could just speak into a microphone as if it were your native verbal language and be understand and compile. (I realize there is quite a bit of complication with something like that, verbal language is so logically inconsistent). Essentially I want to be able to execute pseudocode. I want programming to be a natural extension of verbal language (or at least the language of Math). I don't want to have to worry about close parens, semi-colons, invoking some random ass class just because it's required to implement another random ass class I need, with it's own special syntax and parameters that are mandatory but unused.

      Matlab I've just started digging into as it seems to be the best for what I'm trying to accomplish academically at the moment. Just wish I had more time. I envy those who can afford to attend school full-time ;)

    52. Re:How about Python or something? by qwak23 · · Score: 1

      Indeed, Thank you for the quality discussion! I will now go investigate the mystery that is sleep.

    53. Re:How about Python or something? by Chrisq · · Score: 1

      >I've been programming for more than thirty years, and I love Python

      In my experience, the people who love Python are hack programmers who are sloppy with types and exceptions in the beginning, and python just enables the sloppiness.

      I think its true that a lot of hack programmers like Python, but it is not true that everyone who loves Pythin is a hack programmer. I know you didn't actually say that but it came across that way.

    54. Re:How about Python or something? by BasilBrush · · Score: 1

      With white space being insignifacant each reader of the code can format it however they want.

      And that's a bad thing. I mean you don't have people choosing what they want to call the commands in a programming language. That would be chaos. Some people have tried... remember
      #define BEGIN {
      #define END }

      With indenting as with commands, it's far better of the language defines a common standard, with deviations being a warning or an error. That way, when are working collaboratively their code is guaranteed to be in the same indentation style.

      Unfortunately no language I know of does this. Python comes closest, but they stopped short of defining how big an indent is. So code from different sources can still be indented differently.

    55. Re:How about Python or something? by kbg · · Score: 1

      No pointers are complicated in any large size software project. Because they point to memory which you have to handle allocating and freeing yourself when not needed and not being referenced. When you have pointers to pointers to pointers then deciding what code has the responsibility of handling freeing what pointer memory which is not always handled by the same code it becomes easy to make a mistake. Garbage collected programming solves all these low level tedius memory handling automatically.

    56. Re: How about Python or something? by Nivag064 · · Score: 1

      Hmm...

      I've coded in Assembler, FORTRAN, and COBOL in the past. I've even been paid to teach people C. I wrote my first BASIC program in 1968.

      Now I use Java on Linux, with Postgres as our database of choice.

      Looks like I'll get funding to double the number of programmers in my team from one to two people - we will be using a prerelease of of Java Enterprise 7.

      For large complex projects Java is fine, even for very small teams.

    57. Re:How about Python or something? by Nivag064 · · Score: 1

      Java is better than C for most projects - don't need to worry about pointers and allocating memory.

      Good programmers are fluent in at least 3 different computer languages, and try to use the one most appropriate.

      Bad programmers insist that their favourite language is best.

    58. Re:How about Python or something? by Nivag064 · · Score: 1

      One of the main problems with C# is that it runs best on an O/S that is all but dead in name.

      Java is cross platform, you can develop in a Linux environment and run the program in other O/S's.

    59. Re:How about Python or something? by matfud · · Score: 1

      Fortran?

    60. Re:How about Python or something? by Anonymous Coward · · Score: 0

      > I like function best because of the easy tie in with Math, granted given the mathematic definition of a function, I can see where a function with no return value seems bizarre.

      'Function' does imply a degree of purity, so one could easily argue that 'procedure' or 'subroutine' are preferable, with 'function' being a specific subset that does not modify state and always does the same thing when invoked with the same arguments.

    61. Re:How about Python or something? by jrumney · · Score: 1

      So we're agreed, using C as the first introduction to programming is a bad idea? Not that I'm advocating Java, or even Python as the best solution, both are only marginally better. Scratch is more like it - as simple to learn as Logo, but less boring (Logo held my interest for about half an hour when I was young, by that time I'd about reached the limitations in what could be done with a pen and 4 directional commands).

    62. Re:How about Python or something? by Anonymous Coward · · Score: 0

      Disney, NASA, ILM, Google, NWS, LANL, and Yahoo use it, to name a few. It's HUGE in the CG world.

    63. Re:How about Python or something? by jrumney · · Score: 1

      The only obtuseness I've encountered in Java is the hoops you have to jump through to interoperate with an API from another language that uses unsigned types.

      C tutorials on the other hand are full of examples where *(x+1) is used interchangeably with x[1], which ends up becoming a habit for years until one day you hit one of the edge cases where those statements are not equivalent and are left scratching your head as to why your program is crashing. Endianness is never hidden behind an API, since the whole C philosophy is to be fast, not easy to use, so anyone doing networking code on an Intel architecture for the first time has a bunch of pitfalls waiting for them. Then there's all the cases where C happily lets you overwrite memory outside the bounds of an array etc, leaving you to debug the memory corruption that results, where Java would have thrown a clear exception telling you exactly what you did on which line of code.

    64. Re: How about Python or something? by Hentes · · Score: 1

      True, but that's also why it's bad as a first language. It only teaches a very narrow view of programming, and does that in a painful way.

    65. Re:How about Python or something? by Hentes · · Score: 2

      In C, you don't have to create a separate namespace with specifically named folders and files, and a separate class just to be able to say "hello world". Kids lose interest very quickly if they don't get results, having to learn about OOP before they write their first program isn't going to work.

    66. Re:How about Python or something? by Anonymous Coward · · Score: 0

      In Java you don't have to do that either. By the sounds of it you are not qualified to discuss this topic.

    67. Re:How about Python or something? by xero314 · · Score: 1

      Code should be readable be the person reading it. If you find one form of indentation to be readable and your partner another, then you should each be able to format it however you want. This is, after all, why we use high level languages and not machine code. So why not take it one step further and leave format up to the reader. Store the code in an easily compilable format and let the editor format it to each reader's preference.

    68. Re: How about Python or something? by wesk · · Score: 0

      I suppose I'm a knuckle-dragger. After reading about interfaces and seeing a few examples where I work I still don't understand how they are beneficial. I assume they're essentially the same in Java and C# (what is used here). Please enlighten this noob with a pointer to a good tutorial that shows why I would want to use them.

    69. Re:How about Python or something? by pla · · Score: 2

      That's elitist bullshit.

      The world could use more elitism, instead of dumbing kids down by teaching them that we should value mediocrity. Everyone gets a trophy, woo-hoo! But a job? Gee, kid - Sorry we didn't prepare you to actually compete when you get to the real world...


      90% of the population of the world could easily learn to program and learn to do it proficiently.

      Aahahahahaha... Oh, man, stop, ya killin' me here!

      With a lot of effort, you could teach most people to use cookie-cutter VBS snippets in Excel. But programming? No. Most people not only can't program, they outright loathe the mental state programmers need to enter and stay in for hours at a time. When I describe my job (in the abstract, not talking about one specific project or domain) to most people, they cringe.


      And yes I interview crapy engineers regularly.

      Not really supporting your own point here - A solid C- student who managed to graduate with a STEM degree still blows the doors off the rest of society for their ability to think logically and break seemingly-intractable problems down into tiny easily-solved ones... If the flawed gemstones don't impress you, you might not want to generalize about the actual dross.

    70. Re:How about Python or something? by Hognoxious · · Score: 2

      I learnt about pointers myself when I was a kid.

      Me too, but they were called PEEK and POKE then.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    71. Re:How about Python or something? by Hognoxious · · Score: 1

      No pointers are complicated in any large size software project.

      Are you saying they're all simple, or that there aren't any?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    72. Re:How about Python or something? by Anonymous Coward · · Score: 0

      The CS department at my alma mater switched from an all-Java curriculum to one with a Python intro, and the student attrition rate dropped by a significant margin.

      Why do you think a lower attrition rate is a good thing?

    73. Re:How about Python or something? by Anonymous Coward · · Score: 0

      Exactly, formatting code for readability is the job of the presentation layer, and should not affect the model layer.

      I should be able to take well formatted code and present it however I want in my IDE without worrying about it changing the meaning of the code.

    74. Re: How about Python or something? by chickenpathways · · Score: 1

      I suppose I'm a knuckle-dragger. After reading about interfaces and seeing a few examples where I work I still don't understand how they are beneficial.

      It's Java's version of a fairly common abstraction idea, that is, fixing a set of methods/functions (and what types they consume and produce) so that one person can write code that *uses* the set and another can *implement* them, *separately* [e.g. the ubiquitous "API" of something]. Sometimes, you can get this effect (in Java) from inheritance (all Animals have a size, and a way to tell if they are hungry, etc. even if the details of fish, puppies, and snakes are different) but **because Java does not allow multiple inheritance**, the interface concept can step in to help out (so maybe we want a Pet Store, that sells both Animals and pet supplies, so we create a Sellable interface with methods like price, purchase date, etc., and we can now write an inventory system without somehow shoehorning our existing inheritance hierarchies for Animals and Supplies together into some single master hierarchy....

    75. Re:How about Python or something? by zeroryoko1974 · · Score: 1

      First we must decide whether there is a giant invisible man in the sky who made everything or we are smart monkeys. Once that is decided then we will get around to teaching children binary

    76. Re:How about Python or something? by itsdapead · · Score: 1

      Why teach a crappy, relatively more difficult language like Java to children?

      And this is how any attempt to teach kids to program gets killed - every "expert" immediately jumps in and screams about how not using [insert favourite trendy programming language] will melt kids' brains and ruin them for life.

      For kids' first experiences in programming it doesn't. fucking. matter. Get them enthused about programming and you can start hitting them with good practices and formalities if and when they decide to study computer science further (what subject [i]doesn't[/i] change beyond recognition when you start to study it at degree level?) The ones with any aptitude will recognise good practices and understand new paradigms when they're shown them - the ones with no aptitude will at least have learnt more about how computers work that they otherwise would have done. Anyway, by the time these kids get to college, functional programming will be "considered harmful" in favour of the latest trendy paradigm.

      The difficult thing about a project like this will be getting the gameplay right so that it is both fun and educational. Crack that, and modifying it to use Python, Haskell, Javascript, Lisp, ADA, GW-BASIC, INTERCAL or Elvish Perl will be simple.

      Of course, everybody knows that magic is written in FORTH.

      --
      In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
    77. Re:How about Python or something? by itsdapead · · Score: 1

      Python joins the list of excellent languages that have whitespace requirements:

      You forgot one

      --
      In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
    78. Re:How about Python or something? by gbjbaanb · · Score: 1

      nope, its better to start off with an easy language - and that's not Java. BASIC was invented for a reason, it might be crap for us experienced programmers, but for someone completely brand new to programming, its a much more valid language to use.

      The same applies to Pascal (which was invented as a teaching language) if you really, really, hate BASIC no matter what.

      For this project visual basic would have been a much better choice - they currently launch a JVM that turns your spells into unityscript (did you notice it was written in Unity3D) that are executed over a socket. They could have simply run VB code directly in the system (or even VBA)

    79. Re:How about Python or something? by gbjbaanb · · Score: 1

      ie Python should have defined an indent as 1 tab per level of indentation. They you just set your tab to be 2 spaces or 4 spaces or 8 spaces as you like. It'd still be text-file readable so you wouldn't need a special editor.

      As it is, they defined it as "some spaces" and that just helped to screw everything up. Maybe a 'tabindent' mode for the next version would help fix it.

    80. Re: How about Python or something? by Anonymous Coward · · Score: 0

      It's so strange to me how Java folks tend to rely on a specialized IDE to be able to do their job. I worked with a group (I was on the backend/C++ side of the house) and the "ace java" guy was a pecker...he literally typed with two fingers. Eclipse would eventually provide him the right function name, and he would poke whatever key accepted it's top suggestion...to me that was scary! As far as I could tell, the guy really didn't know how to type. Maybe he was super smart and created great code...he quit very early on in the project, so I have no idea, but that image of him pecking away on his keyboard like my dad does....still haunts me to this day:)

      I'm sure some projects really do deserve the level of engineering that requires an IDE to help you know what functionality is available for any given object, but I think most of the time, it's totally unnecessary. Also, in those situations, one would hope there is some for of documentation that you can use to figure out what you need to type.

    81. Re:How about Python or something? by Samantha+Wright · · Score: 1

      (Joke about Mono here.)

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    82. Re:How about Python or something? by HaZardman27 · · Score: 1

      Python comes closest, but they stopped short of defining how big an indent is

      PEP 8 does suggest that indents should be 4 spaces (and not an equivalent tab). If you do your best to conform to the PEP 8 guidelines, you can eliminate some of the trouble.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    83. Re:How about Python or something? by Anonymous Coward · · Score: 0

      "...If the flawed gemstones don't impress you, you might not want to generalize about the actual dross."

      This is how you end a post filled with nothing but generalizations about non-programmers....you are one childish, insecure piece of shit.

      Elitism is nothing more than a vice of the pompous, self important idiots who are so insecure with their own ability they feel the need to stifle competition before it ever gets started.

      Teach as many people as possible how to program as far as I'm concerned - it just means that many more people will realize how fucking good I really am.

    84. Re:How about Python or something? by Anonymous Coward · · Score: 0

      That's cute. I remember when the point of HTML was for documents to be formatted however the reader wanted.

    85. Re:How about Python or something? by lennier · · Score: 1

      In the late eighties and early nineties, academic software engineers were absolutely convinced OOP was the silver-bullet software development paradigm for all ills, since encapsulation (hiding methods) made code re-use practical. They also believed it was the end to all programming practices that inhibited re-use, particularly global variables.

      The amusing thing is that code re-use between projects doesn't seem to have increased significantly due to OOP. We still have very tightly-bound, monolothic systems made up of multiple objects/components aggregated into large "platforms". Yes, people use a lot of prewritten platform code nowadays, but that's also the case with oldschool C-based libraries. Objects have mostly contributed a vague sort of hierarchical classification of APIs, but object classes don't ever quite equate to types due to inheritance, and there are very few actual guarantees you can make about an object class definition. At best you can say "it accepts these named/typed methods" but you can't guarantee what the effects of calling any of those methods will be.

      One of the problems I have with OOP is that there is no generally-agreed fundamental definition of the exact semantics of an object. Because of that we have multiple deeply incompatible "object systems" which don't generally interoperate. The closest we have to a lingua franca on Windows is COM and that's not much. On Linux? Not even that. Compare to the situation with SQL databases - we have the relational algebra which at least defines what the mathematical semantics of a database *should* be (though this isn't ever quite implemented correctly). In objects, we don't have an algebra, so we're always at the mercy of platform implementors' changing code.

      I'd like to see some serious thought about the effectiveness of the industry-wide OOP paradigm and just what the impact of it has been.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    86. Re:How about Python or something? by dkf · · Score: 1

      No pointers are complicated in any large size software project.

      Are you saying they're all simple, or that there aren't any?

      Minimizing the potential error, there's a comma missing from the GP's post. Duh! (Pointers are both simple — it doesn't take much to describe what they do — and horribly complicated — their implications run very deep indeed.)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    87. Re:How about Python or something? by Samantha+Wright · · Score: 1

      Sounds like you would've been a good fit with the TUNES project which, in addition to an infinite amount of armchair pondering, would have provided something along those lines as a result of its metaprogramming goals.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    88. Re:How about Python or something? by Samantha+Wright · · Score: 1

      Sadly, it sounds like your ideal language is COBOL. There was a great deal of interest in the nineties into computer-assisted software engineering (CASE), where you drew a diagram of the code and a machine interpreted it, but there were so many possible interpretations that the complexity grew out of control, and at last count the Unified Modelling Language had well over a hundred different diagram types. Nothing beats a formal syntax for expressive power. (Also, Slashdot doesn't have a spellchecker; you probably just got a browser update foisted on you.)

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    89. Re:How about Python or something? by qwak23 · · Score: 1

      It's possible, I was posting that from a brand new laptop, assumed it was a change to /. probably pre-installed add-on.

      Pure math is pretty much the only "language" I've never struggled with learning. I speak a little bit of Japanese and have forgotten quite a bit of German, but aside from Kanji, I struggle with learning them. I have an idea that what makes various programming languages difficult for me to pick up is related to what makes verbal languages difficult for me to pick up. Then again, I have no way to formally test that so.. meh!

      I'll probably just end up falling back on C once I get to a point where I can devote some time to getting down and dirty with a language. For now it's mostly just do what I have to in order to support school work that requires some level of coding.

    90. Re:How about Python or something? by PuZZleDucK · · Score: 1

      Yep... you seem to not like java because you don't know it (very well, which is fine, I'm a bit sucky at C myself)... no packaging or folders are needed for hello world, one extra line for the class is all.

      --
      Can a person program a new solution to a problem? Why should anyone be able to stop such a thing? -Richard Stallman
    91. Re:How about Python or something? by Samantha+Wright · · Score: 1

      I'm actually particularly good at picking up new programming languages (a little less so natural languages), so I think I have some idea about what you're facing. Learning new syntaxes and vocabularies can be quite a mental investment, especially when you're not accustomed to the process—and these aren't necessarily one in the same. I'm great at picking up new grammars and rulesets, but I could never keep up when it comes to vocabulary like physiologists or biochemists can. (And in particular, I think Kanji only persists in Japanese as a form of intentional obfuscation. It's not nearly as necessary as in Chinese. Korean has the same thing, called Hanja, and the only smart thing the North Koreans ever did was eliminate it entirely.)

      That being said, though, sometimes the amount of effort required to actually pick up a language is a little deceptive. When plunged into immersion settings, it's a lot easier to justify the work. (Also, don't worry about the age thing; that's been proven to be a myth.)

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    92. Re:How about Python or something? by qwak23 · · Score: 1

      Actually Japanese is way easier to read and grasp in Kanji than it is without. While it does take years to master them all (and the Japanese only use around 2000 characters, much less than the Chinese), it doesn't take very long to master the most common ones. You might not be able to read a newspaper in its entirety, but you can probably handle most signs and restaurant menus. Also, since the characters are symbolic, in most cases even if you can't remember how to read the character you may still remember the abstract meaning in English (or whatever your native language is), so while you may not be able to read the word or sentence in Japanese, you may still understand it (though occasionally characters are used strictly for their phonetic properties, so this does fail at times). Hiragana and Katakana are very easy to learn (it took me about 3 days to master both character sets, approximately 100 characters total, and all of them much more simple than the average Kanji character) but they can be more difficult to read than Kanji, especially given the limited phoneme inventory in Japanese that necessitates longer words. I used to feel the same way about Kanji (that it was intentional obfuscation) until I started learning it. When I had the time, I could easily pick up 5-10 new characters a day at the start and 3-5 per day after I hit 100 or so. Granted, living in Japan for 6 years and being completely immersed in it helped. The only real problems with it (aside from the number of years it takes to learn completely) is the difficulty in inputting Kanji into a computer, especially given that there are multiple different schemes and not all of them are available on each platform.

    93. Re:How about Python or something? by Nivag064 · · Score: 1

      To program Hallo World in Java only requires the creation of one file which contains one class, there is no need to create a package for it!

      public class HalloWorld
      {
              public static void main(String[] args)
              {
                      System.out.println("Hallo World");
              }
      }

      ## Now to compile and run the program:

      $ javac HalloWorld.java
      $ java HalloWorld
      Hallo World
      $

    94. Re:How about Python or something? by Nivag064 · · Score: 1

      I like that in Python you don't need to use curly brackets and semicolons like Java requires, and I am a Java developer (when I'm not pretending to be a Software Architect!).

      There appears to me to be no reason why an IDE could not automatically line up indentation when copying blocks of python code - though sometimes it might need to ask for guidance.

      I have taught C to experienced developers, and I had fun teaching a 10 year old to code in C. However, I think that Python & Java are better languages to start with. A couple of months ago a ten year old boy (we know his parents) phoned and said he wanted me to teach him Java - he had already got some Java books and had been reading them and trying out some GUI code.

      To become as Master Programmer, you need to be fluent in at least 3 computer languages - I have written code in at least 20. I started with BASIC 45 years ago, since then I've done FORTRAN & COBOL amongst others. I also had fun with LISP and Perl (but I was never fluent in them).

  4. not a complete success by Anonymous Coward · · Score: 4, Funny

    38 of the 40 girls in the test group complained that, once they were written in Java, the spells took forever to execute.

    1. Re:not a complete success by Anonymous Coward · · Score: 4, Informative

      Your joke was funny 15 years ago when Java was actually slow.

    2. Re:not a complete success by Anonymous Coward · · Score: 0

      Please stop spreading lies.

    3. Re:not a complete success by RightwingNutjob · · Score: 1, Insightful

      It's still funny today, when Java is slower than C, C++, Fortran, and pretty much any other fully compiled language.

    4. Re:not a complete success by Anonymous Coward · · Score: 0

      Don't be ridiculous, they couldn't conjure their spells because they ran out of memory.

    5. Re:not a complete success by MrEricSir · · Score: 2

      The bigger problem is that once students exit the game, their memory gets garbage collected and they have no recollection of what they learned.

      --
      There's no -1 for "I don't get it."
    6. Re:not a complete success by mark-t · · Score: 3, Insightful

      I've seen java programs actually run *faster* than native code under certain circumstances. In particular, object allocation with the 'new' keyword in Java is often far faster than dynamic allocation with the 'new' keyword in C++, even when you factor in the costs of garbage collection compared to manually invoking delete in C++.

    7. Re:not a complete success by chrism238 · · Score: 1

      May seem funny, but quite irrelevant. Programs don't need to run quickly for novice programmers.

    8. Re:not a complete success by Darinbob · · Score: 1

      Funny thing is.. well, not funny it's actually kind of sad... most common high end languages today are scripting languages or interpreted with JIT. The traditional "compile it first and use a minimal run time" method is considered something that only ancient dinosaurs did before they died off. So in that sense Java is probably one of the fastest languages in that set.

    9. Re:not a complete success by Anonymous Coward · · Score: 3, Interesting

      I really can't tell if you're trolling. If you're not trolling then you should know that the reason heap allocation is faster in Java is because Java allocates a sizeable chunk of the systems memory on runtime startup to use as a pool allocator. In C++ you're expected to come up with your own allocation strategies because you know more than the compiler about what the high level behavior should be. What you were actually benchmarking was the overhead of the system calls/context switches that come with operator new versus just grabbing the next page in a pool. If you were to use a simple pool allocator in C++ as well, it would smoke Java as expected.

      Incidentally, this is the reason I started blacklisting the Java runtime on my machines: it used to render one of my older systems unusable because it would allocate a significant fraction of system memory if it was allowed to come up. Because it was a low-memory machine, occupying such a huge chunk of memory made it extremely easy to cause the machine to thrash if anything else were to run as well.

    10. Re:not a complete success by McFadden · · Score: 2

      38 of the 40 girls in the test group complained that, once they were written in Java, the spells took forever to execute.

      Probably ran slow because their machines had been compromised by 5 separate zero-day exploits before they'd finished the lesson.

    11. Re:not a complete success by Anonymous Coward · · Score: 0

      Wait, did you just imply *ALL* Java programmers are novices?!

      OH YOU

    12. Re:not a complete success by Kagato · · Score: 4, Interesting

      Yeah, that's fairly outdated thinking. Speed isn't derived by the language anymore. It's the execution that counts. Java Compiles down to op-code, which is run in the JVM. The JVM has decades worth of run-time optimizations. The majority of large scale web sites are written in Java.

      Hey, ever heard of Hadoop. You know the large scale Map-reduce framework based on Google's technology that sorts terabyte and petabyte of data? Java.

    13. Re:not a complete success by mark-t · · Score: 1

      Of course it would... but in C++, you have to manually write the code to be optimized for whatever types of objects you were pooling, where the java runtime environment is smart enough to figure out how to do that on the fly, without having to spend any effort writing custom allocators for each type of object.

    14. Re:not a complete success by b4dc0d3r · · Score: 3, Interesting

      When Java first took off, and the web was made of Java content executed via plugin, Java was written by idiots who concatenated strings instead of using string builders, and similar abuses of common sense through ignorance and teaching materials that focused on results rather than good practice. Executables outside of plugins suffered the same deficiencies, although they were probably attempting loftier goals, and the performance was... what is the opposite of magnified, because it was slower than a sloth taking a crap?

      This lasted a number of years, even as the Java interpreter became stable and work was made to increase its performance. Idiot coders learned or abandoned Java, and the runtime made even the remaining idiots look better, if not "good".

      If you don't find this comment amusing, you either lack historical perspective, are a Java programmer, or should consult a medical professional to be diagnosed for your deficiency in some manner or other.

      Security problems these days seem to be focused on the browser plugin, rather than locally executing native apps, so the security comments mostly don't apply. Visiting a random internet web page and allowing it to execute poorly sand-boxed arbitrary code is a bit like licking random strangers' genitals. In case that interests you, let me state that it should not be done as a general practice, and you should consult a medical professional.

      I have read Java for over a decade, and I have coded in Java for 3 years or so. Having experience with x86 ASM (AT&T and MASM), K&R C, ANSI C, GWBasic, Turbo Pascal, C++ (VC 5-2010, gcc 2.x - 3.x, mingw), VB 5-6, C#, VB.NET, Python, Powershell, JavaScript (advanced, not your normal getElementById().Blink() shit) and several other introductions, I can say this:

      Java examples in the real world and in most printed books are the most incestuous, groupthink-y, overly-architected piles of verbosity I have ever had the displeasure to read. I completely understand the need for default parameters, dependency injection, constructor and method chaining, and all kinds of modern best practice.

      But I have never seen another language embrace the overbearance of best practice teachings without implementing some balance of solution soundness. Java examples and implementations (open source of course, because I have read them) seem to abound with overloaded methods under 5 lines of code, which initialize another parameter to call another overload. Now you have multiple functions to unit test, multiple code paths, multiple exception sources, and unless you are brainwashed in the spirit of Java, comprehension of the complete workings are complicated by scrolling off-screen with essentially purpose-free function declarations, whitespace between functions, and an essentially functional programming paradigm split over several different methods to give the appearance of flexibility, OOP, and conscious design.

      It reads to me like someone wrote that no method should ever take more than one additional parameter that you were not already given, and coherence be damned. I would much rather see a single method with 5 non-optional parameters than 5 overloads which calculate and pass one new parameter each time.

      The Java paradigm seems to be calculating things within the overloaded methods is preferable to factoring out these into unrelated functions. In a truly sane, OOP world, those calculations would be a part of the object, or if sufficiently general would be part of the object's base object.

      In fact, the Java approach seems to be the Builder design pattern, which I have not seen adopted as frequently as it should be. Obligatory link here.

      As sensible as the Builder pattern seems to be, I think it would still require a number of extra Set/Get property methods, which are function calls. Maybe Java has optimized this, but if you don't adopt it optimization can't he

    15. Re:not a complete success by Anonymous Coward · · Score: 0

      The actual advantage of Java lies mainly --there are other advantages of course-- in the JiT compiler. This allows for run-time optimization that isn't possible at compile time. Which makes Java fast(er) in certain situations (and slow(er) in others). Here's an extensive stackoverflow discussion covering the topic.

      Another great thing about Java is that you have a type-safe language (although you can break it in some cases -- particularly certain casts). This also makes it much easier to write secure code in Java through the use of software verification. For more on that, refer to this page on JML (Java Modelling Language) or OpenJML. Microsoft (as well as many others) has done a lot on the C/C++ side of verification (see also this discussion).

    16. Re:not a complete success by Anonymous Coward · · Score: 0

      Go to bed, Oracle.

    17. Re:not a complete success by Anonymous Coward · · Score: 0

      Bitch, please. In C++ I can overide the new operator and customize the allocator for any data type. You have ZERO control over when the GC is even going to run in Java. As a game dev who's created real-time software rasterizers in Java I can attest: That shit is fucking slow! Not only is it slow, to make real-time animations NOT lag you have to constantly fight the damn GC -- Preallocate EVERYTHING and use object pools -- NEVER EVER create a new object or destroy all references to any objects or the GC might decide to throw infuriating intermittent stutter into your otherwise smootly operating game. Not only that but Java doesn't even use the FPU for ANYTHING! All floats are emulated by integer math because Java makes certain (ridiculous) garauntees about the operation of floating point numbers, and has no means of opting out of said garauntees (because, it's floating point and if you need determinism you use a bigmath lib / unlimited precision).

      So, while there are some programs that DO run faster on Java, due to its caching of local memory instead of calling kernel code each new and delete, you're comparing inefficient (no object pool) code and the comparison is thus moot. Try again with a comparative GC for the C/C++ program (these exist you know). C and C++ can achieve and surpass the speed of Java's object cache optimisations. There is nothing you can write in Java that runs faster than equivalently optimized compiled code. Nothing. Java = extra overhead, even with JIT. You don't use it for performance. You use it for cross platform applications and because it has a huge library with everything and the kitchen sink in it -- I DON'T use it for precicely this reason when security is concerned: Java has a HUGE attack surface.

    18. Re:not a complete success by RivenAleem · · Score: 1

      GP wrote the joke in Java.

    19. Re:not a complete success by Anonymous Coward · · Score: 0

      "I've seen java programs actually run *faster* than native code under certain circumstances."

      No you haven't. If you don't understand why, I will explain below and you should stop using computers.
      Native code is the instruction set that runs in the actual hardware in the machine. Java does not really run its code, the Java code is run in a virtual machine that runs in the hardware in the machine it is run on... It runs the Java code in that machines "native code". So what you really are saying is that the machine can execute the code faster than it can execute it, if that code is just fed from a Java virtual machine.

      It can execute the code faster than it can execute it... That sounds like a Nobel price in the making!

    20. Re:not a complete success by RobertLTux · · Score: 1

      and this is why you should have the download from
      http://ninite.com/flash-flashie-java-shockwave/

      as a Run Before Anything Else program on a flashkey you use to do Computer setups.

      (and yes you can have it download//install a number of other programs in the same run)

      --
      Any person using FTFY or editing my postings agrees to a US$50.00 charge
    21. Re:not a complete success by Anonymous Coward · · Score: 1

      But I have never seen another language embrace the overbearance of best practice teachings without implementing some balance of solution soundness.

      That's well said. The language is pretty sound, but the APIs... and the principles that it seems every Java API is designed around... are very off-putting. It's a language without any huge design flaw, but where actually doing anything seems like a chore.

    22. Re:not a complete success by Anonymous Coward · · Score: 0

      Yes, today they'd be complaining of the huge amounts of memory being used.

    23. Re:not a complete success by Anonymous Coward · · Score: 0

      sure why not, hardware is cheap. No one should ever have to be concerned with efficiency, elegance, memory footprint, or wasted cycles anymore. Besides, hiring people who can actually code to a compiler and insert assembly when needed is expensive.

    24. Re:not a complete success by Anonymous Coward · · Score: 0

      wish I could mod this up..

    25. Re:not a complete success by gbjbaanb · · Score: 1

      how can allocating and freeing and garbage collector sweeps and compacting be faster than just allocating and freeing memory?

      I know you're trolling, C++ allocators work pretty much the same way, with a memory block that is pre-allocated and then divided up for subsequent memory requests, the slowness in the default allocator comes from having to walk to heap for the next free block, which can be a problem after significant fragmentation. However, that's the simple allocator, there are plenty of alternatives including fixed-block sized ones that are much more efficient, that work more like Java's "only allocate at the end until you run out of ram" but still have the advantage of not requiring all that slow garbage collection and compaction. Note that the slowest thing you can do with memory is move it around, and that's exactly what a GC compact does!

      I haven't seen any Java (or .net) app that runs faster than a native one that isn't reasonably trivial or a benchmark.

    26. Re:not a complete success by mark-t · · Score: 1

      Ah, typical slashdot pedantry. How refreshing.

      C++ (generally) compiles to native code. Java does not. When a particular task can run faster when having done it from Java than doing the exact same task, the exact same way (from a source code perspective, not with respect to what exact machine instructions are going to end up executing), it's not unreasonable to conclude that the JVM's runtime can, in such circumstances, outperform native compiled code.

      I'll admit that the circumstances for this kind of performance improvement with Java over C++ are probably rare, but they still do happen. In particular, I've personally noticed that dynamic memory allocation in C++ happens to have overhead that, in quite a lot of cases, just does not get incurred when using Java's own 'new' operator to do what, from a source code perspective, should have been exactly the same thing, and this is even after factoring in Java's garbage collection compared to using C++'s 'delete' keyword.

      Obviously there's under-the-hood optimization happening in Java that isn't happening with C++, but that's only because the C++ compiler can't always actually predict how the code is going to execute. The Java compiler itself can't predict how the code is going to execute either, of course... but the JVM, which actually does run it, gets a firsthand look at what the code is really doing, and can potentially perform runtime optimizations which could only be accomplished in C++ by explicitly writing the code to be optimized for such occurrences. If you were to do that, then I would fully expect C++ compiled code to end up executing faster again... but you may also end up with something which from a source code perspective may not be as reusable in potentially very different circumstances.

    27. Re:not a complete success by gbjbaanb · · Score: 2

      yes, I've heard of Hadoop - the framework that fixes java performance by splitting its execution up across a couple hundred machines. :-)

      The framework language isn''t the performance part though - it just acts as a manager to send data to a group of workers and aggregate the results back, its the workers that are important. If they are slow, the whole thing is slow. So its best to write these in a native language. Its not anything special to Java either - Google's mapreduce implementation is written in python

      If you want a good map/reduce language, forget Java and go with Erlang which is much more suited for this type of programming.

    28. Re:not a complete success by Anonymous Coward · · Score: 0

      The JVM is no where near as performant as C# and the .Net framework. I have used both languages and always choose C#. You also may be interested in Xamarin's XobotOS where they ported Android to C# and saw massive performance gains.

    29. Re:not a complete success by Anonymous Coward · · Score: 0

      But all Java runs "native code" (and only native code, like all other software everywhere ever). There is nothing else. How can it run faster than that when there is no other way to run code?

    30. Re:not a complete success by Anonymous Coward · · Score: 0

      But them like programming in Java because their boobs bigger an bigger :-)

    31. Re:not a complete success by mark-t · · Score: 1

      By "native" I meant code produced by a native C++ compiler, from roughly equivalent source (using the default 'new' operator in C++ compared to the new keyword in Java).

      Obviously, the reality is that, at least in some circumstances, allocating objects with Java's new keyword does not have as much overhead as C++'s 'new' operator.

      Could you design a faster one in C++? Probably... especially if you knew for sure what sort of allocations were going to be happening and coded especially for that. The neat thing I found about Java, however, was that as a program author, I didn't have to know the details of exactly what sort of code path the program would take when it executed.... I could simply implement the algorithm at a high level and the runtime environment would optimize it.

    32. Re:not a complete success by lennier · · Score: 1

      and this is why you should have the download from

      Ah yes, I'm definitely going to run a free binary "downloader" for Adobe and Oracle updates from a third-party website not affilliated with either Adobe or Oracle and with no apparent commercial reason to exist.

      That is certainly 100% trustworthy behaviour which has absolutely no risk of infecting me with a virus!

      (I don't care who Ninite are or if they are, in this case and for this moment, in fact legit. Nobody should be encouraging users to do this kind of thing.)

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    33. Re:not a complete success by lennier · · Score: 1

      idiots who concatenated strings instead of using string builders, and similar abuses of common sense

      Hmm. In many languages, string concatenation is simply string concatenation. Possibly a language which artificially creates two separate ways of handling strings - and not the user's "ignorance" of this baroque mechanism - is actually the thing which is violating common sense?

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    34. Re:not a complete success by RobertLTux · · Score: 1

      You obviously did not even check out the site itself (btw they have a Pro Version for use in businesses so the "no commercial reason to exist" thing is not valid). But given the large number of IT folks that have checked out the program i think its legit.

      --
      Any person using FTFY or editing my postings agrees to a US$50.00 charge
    35. Re:not a complete success by dkf · · Score: 1

      idiots who concatenated strings instead of using string builders, and similar abuses of common sense

      Hmm. In many languages, string concatenation is simply string concatenation. Possibly a language which artificially creates two separate ways of handling strings - and not the user's "ignorance" of this baroque mechanism - is actually the thing which is violating common sense?

      Doing strings well is very hard, especially if you have the (sensible!) security requirement that they present an immutable model. If you look across many languages, there's always something that's got to give along the way. Some don't have the immutable requirement (which means you've got to manually copy values at key points, an extremely easy way to screw up), some have a tendency to have quadratic performance when building the strings (ow!) and others lock strings to a thread so that they can determine when they can do clever shenanigans under the covers (doing so when there are multiple threads having access to the string is very expensive). Java goes the "quadratic performance" route (viewing immutability and lack of shenanigans to be better ideals to adhere to) adding the StringBuffer/StringBuilder class to allow you to avoid the worst of the problems if you know what you're doing. Alas, a lot of programmers don't really know what they're doing in the first place...

      It should also be noted that Java's strings mark a major step change in string implementations; they strongly influenced nearly everything that came afterwards. This wasn't so much to do with performance, but rather to do with the fact that they broke the mold when it came to characters-are-bytes meme that had persisted beforehand. Yes, there were multibyte encodings before; they were rightly regarded with a lot of suspicion (usually because they were truly horrible). Java was able to start out with Unicode, which got rid of a lot of the craziness.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    36. Re:not a complete success by Anonymous Coward · · Score: 0

      Considering that java itself ultimately runs in native code I don't see how what you're describing is actually possible?

    37. Re:not a complete success by mark-t · · Score: 1

      I meant native compiled code... taking a C++ program that is using the default new operator for allocations, which is compiled to native code, and comparing against an equivalent java program at execution time. If the program is quite allocation/deallocation heavy, even after factoring in garbage collection employed by the jre compared to using C++'s default delete operator, a java application can frequently outperform its comparable counterpart written in C++. Obviously, if you write explicit code in your C++ program to optimize the cases that are actually expected to happen, overloading the new operator as needed, etc... you will probably end up with the C++ version running faster, as expected. But the resulting work will probably contain much more special-case code, possibly to the extent that the underlying algorithms being used are obfuscated, and in turn will be harder to maintain afterwards.

    38. Re:not a complete success by PuZZleDucK · · Score: 1

      Obligatory link here.

      That is _so cool_... stupid, but cool (I like stupid and cool... like duffs device or self replicating code, stupid, but fun)... how can a guy called b4dc0d3r not like code that bad !?! :D

      --
      Can a person program a new solution to a problem? Why should anyone be able to stop such a thing? -Richard Stallman
    39. Re:not a complete success by Anonymous Coward · · Score: 0

      How many reported that rogue spells cast by Russian criminals stole their parent's credit card numbers?

      Wouldn't a language that isn't bloated, doesn't install multiple copies of redundant updates while leaving serious security holes unpatched, and is simple and elegant be better for kids to learn computer concepts rather just memorising Java's overly verbose and complex class system (which should surely would qualify as child abuse) ?

      Or is the real aim to promote Java and this is sponsored by Oracle trying to counter the bad publicity and increasing number of people uninstalling Java on their computers?

    40. Re:not a complete success by b4dc0d3r · · Score: 1

      I seem to have meandered a bit. Java was slow initially because of stupid programmers. It is faster now, but still bogged down in places by the overhead of overloaded method calls as a solution to default parameters.

      Using a different method in examples, and not the Builder pattern either, may allow the average Java program less bulky, and depending on what is being done maybe faster than C++.

      I am blaming the language *and* its practitioners for perpetuating Java's slowness, and the worst thing we could do to children is teach them something which does not translate well to other languages.

      In other words, indoctrinating young programs to overload chaining or builder patterns when something with a lot less overhead exists (default parameters), sets them off in the wrong direction.

      Hopefully that clarifies. I had an off-line argument about this where I realized I was not as clear as I could have been. Of course it was with a C# academic, not a Java person.

    41. Re:not a complete success by Nivag064 · · Score: 1

      You can actually specify how much heap you want Java to use via the -Xms & -Xmx flags, if you the defaults are too big for machine .

      For Eclipse on my 16GB development box (Linux) I use:
      -Xms2g -Xmx2g

  5. Java? by Anonymous Coward · · Score: 0

    Seriously? If they have to use a real, general purpose language, why not something less OO, like Python? It would probably be easier.

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

      Because most of the world uses Java? At least it's not BASIC.

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

      What's wrong with basic for 10-12 year olds? I guess I was a bit younger when I started with basic on an Atari 800 and when I eventually made my way to C as a young teenager I was able to appreciate and understand it better. I've learned since then that in a lot of ways the language is less important than the concepts behind how computers and programs work. For example I was able to convince some wacky servo control code written in visual pascal to do what I wanted in a few hours - 90%+ of that time was just sorting out the syntax of a language I'd never used before and most of the last 10% was figuring out how to talk to the servos politely (so they didn't slam the camera around). The programming logic behind what I was trying to do took me seconds to sort out in my head and that's the part we're trying to teach with basic and other "intro" languages.

    3. Re:Java? by Anonymous Coward · · Score: 0

      BASIC was my first programming language as well (TRS-80) and, yeah, made a lot of stuff in it and it wasn't a completely corrupting foundation for future learning. Maybe I should have said, at least it's not PHP. :)

      But it's a really good thing to learn to compartmentalize program logic into testable chunks that, more or less depending on reality, perform one function. It's also good to have strong typing, and to be exposed to the concept of memory management, and OOP. BASIC is better than nothing, but I think it's easier to reach a plateau, whereas with Java you're dealing with something as powerful as C/C++ with better libraries. And if you only learn one language, Java's widely used and cross-platform.

      If one really wants to be a programmer then it certainly helps to see a few different languages with a few different paradigms to be able to identify common themes and look at your go-to (heh) programming language in a new light. But for new programmers, if the up-front pain of a more complex language like Java is mitigated by large and frequent payoffs in a videogame environment, it seems like a win over teaching them BASIC or a scripting language where they might miss out on some important principles.

    4. Re:Java? by qwak23 · · Score: 1

      I really think algorithm structure and design (from a math perspective) is more important for a beginning coder than things like OOP and memory management, yes those are important, especially with how prevalent OOP has become, however OOP is just a wrapper around the math and the memory management will flow from sound and logical structures. Pseudocode is probably the best first step, aside from it lacking the ability to be executed.

  6. Fwa! Crikey! by Anonymous Coward · · Score: 0

    The last thing the world needs is more people who think that they are programmers. Besides, Core Wars has been around for ages!

  7. after 60 minutes by Anonymous Coward · · Score: 0

    The girls all complained they couldnt chat to their BFF's and where was the online mall

  8. Only for Mac by Anonymous Coward · · Score: 1

    Java isn't what it used to be.

  9. No Source? by Anonymous Coward · · Score: 0

    I am disappoint

  10. Let me read that again by Dunbal · · Score: 0, Troll

    It takes a whole hour to teach 10 year olds loop and conditional statements, something that could be taught in 5 mins and mastered in 10? Why yes, sign my school district up for this, how many millions will it cost?

    --
    Seven puppies were harmed during the making of this post.
    1. Re:Let me read that again by Anonymous Coward · · Score: 5, Insightful

      Yeah, you go ahead and explain loops and conditional statements to 40 10-year-olds. They'll learn it in 5, master it in 10, forget all about it in 15. They'll probably be bored, too.

      Or you can use a software like this which will engage them, encourage them, and help them remember it when they go home that night. It sure would be a shame if they were excited to learn more the next day and had a platform that was there to teach them and give you time to grade their math tests.

    2. Re:Let me read that again by Anonymous Coward · · Score: 1

      It takes a whole hour to teach 10 year olds loop and conditional statements, something that could be taught in 5 mins and mastered in 10? Why yes, sign my school district up for this, how many millions will it cost?

      Your statement is complete nonsense. I teach high school computer science, and even the most talented kids take hours of practice to master loops.

    3. Re:Let me read that again by qwak23 · · Score: 3, Interesting

      I wish I had mod points right now.

      One of the best things I ever had as a kid was a TRS-80 (CoCo - and not a true TRS-80 either, even though that was stamped on it) that booted to a BASIC interpreter. The code for any games I loaded directly off disk could be tinkered with easily, no need to compile. This was awesome as a curious 5 year old.

      Even better about it were the games "Rocky's Boots" and "Robot Odyssey". These games taught me the basics of digital electronics, lessons which have actually helped in my current career as a technician (with no formal training in digital logic). Seeing this kind of software being produced in a modern setting is awesome, I wish there was more of it.

    4. Re:Let me read that again by Nivag064 · · Score: 1

      I had a ten year old phone me up because he wanted to learn Java, his choice.

      He is willing and able to concentrate on programming for hours at a time.

      I will encourage him to learn several other languages as well - that way he will better distinguish between programming concepts and their implementation in a particular language.

    5. Re:Let me read that again by Anonymous Coward · · Score: 0

      Theory vs practice. Concept vs application.

    6. Re:Let me read that again by Anonymous Coward · · Score: 0

      You know why he wanted to learn Java? Minecraft.

  11. So can my pet monkey. by Anonymous Coward · · Score: 0

    My pet monkey has mastered Java and can also paint modern art!

  12. had a similar idea some time ago. by wierd_w · · Score: 4, Interesting

    I had a similar idea some time ago, but with an MMORPG setting.

    One of the issues that has always rankled me hard was the "cookie cutter" nature of the world events in those games, as well as the limiting gameplay options, so I had this idea for "obfuscated and sigilized" programming syntax as the basis for a game's magic system. Rather than presenting a loop as a nested block of instructions, it would depict it as a "container", with subcomponents inside. Kind of a mix of flowcharting and stylized syntax.

    The idea was that the layout of the "enchantment" could be moved and teased to make clever images out of the interconnected containers and symbolic representations, to make the programmatical nature of the system less banal, and much more aesthetically attractive, while simultanously making the kinds of magic and counter magic highly diverse and dynamic.

    I never really did much with the idea (ideas aren't worth much, despite what the USPTO and several shell corps may claim. Implementations are far more valuable.), and all the "on paper" mental models I tried kept having non-trivial problems.

    I like seeing that somebody had a similar idea, and made a working implementation.

    1. Re:had a similar idea some time ago. by exploder · · Score: 3, Funny

      Battlegrounds in World of Warcraft were kind of awesome back before they (quite correctly, I guess) put all sorts of restrictions on what kinds of things could be scripted. I used to *own* the level-19 battlegrounds with a warlock and an addon I wrote to keep track of enemy targets and optimally distribute my various curses and afflictions. I just ran around mashing the spacebar like crazy, because among the few restrictions was that every action had to be tied to a hardware event.

      I also earned 10,000 gold in the auction house with another addon of mine that helped me find and relist underpriced stuff. At that time, 10K gold was an eye-wateringly large sum. It's probably pocket change now...I've been out five years.

      Man, I really did feel like a wizard with arcane and hidden knowledge. It was great. I've often wished for a game where programming was the way you do magic, but only that once have I gotten it. I guess a key part of the experience was that hardly anyone else could do it, or knew how I was doing it, which is how magic is often imagined to be.

      --
      Yo dawg, I heard you like the Ackermann function, so OH GOD OH GOD OH GOD
    2. Re:had a similar idea some time ago. by gbjbaanb · · Score: 1

      If i read that right (and interpreted it right in my mind) you'd conceived of the magic system as something similar to shell scripting in *nix - you have a load of "predefined" spells that you can invoke, or merge together to make bigger and better spells.

      eg. you can have a spell like "ls" to give a view of your immediate map, and then pipe the results from it to your fireball spell to send a fireball to a destination to explode in much the same way you would use ls to find a file and rm to delete it if you were writing it in an unattended script.

      There'd also be a good game aspect of obtaining new commands to add to your spellbook.

    3. Re:had a similar idea some time ago. by wierd_w · · Score: 1

      I was actually leaning more toward abstracted conceptions being treated as operators, with serial execution of interaction.

      Say we have a generic representation of "fire" as an effect. Alone, it doesn't mean much. How hot is it? What shape is it? Etc. By combining it with other representations in a structured form, (the flowcharting/programmatical aspects) we can create not just a boring old fireball, but spells that do all kinds of fun and neat things with fire, even taking fire as a trigger for activation, or other less obvious uses.

      The idea was to give every magic user an empty spellbook, and have them make their own spells. The sharing of spells outside the gameworld on forums and the like is expected, and encouraged. For those that are happy to use collctions others have made and tested, it would work well for that, but for those that love to tinker, and like to be unique, there is always the option of being completely unconventional.

      The idea I had for the world was to hold no bars, and allow, (and even encourage) people to be "evil" characters, so that there is innate confict in the world, and thus have no need for scripted events. People being grand douches provide all the villany the world could possibly need, and allowing players to do and be so ensures there is always somebody to go beat up.

      Part of the idea was to have all items aside from raw materials be user-created in some fashion, with all enchantments being user created. This makes nearly everything worth carrying a unique item, and the booty of kicking a badguy's ass is getting his stuff. In the case of magic users, that includes their spellbook. :D

      A modifiably and persistent world with these dynamics would make a lot of parental groups upset, (oh no! that wizard's tower is shaped like a giant cock! And somebody wrote boobies on the walls of the town! That's aweful! Etc.) But for more mature players, it would be very entertaining, and hilarious.

      Think a mashup of 4chan's uncensoredness with second life like sandboxing, and WoW hack and slash fun. Where if you want to go on a rampage and tear up the countryside, YOU CAN, but likewise, people can form a lynch mob and kill your avatar, then parade the body in the street.

      It would need to have some "iron man" like rules, such that when an avatar dies, its dead, and you have to start a new one and the like. That would help to prevent spurrious destruction of things others have worked hard for as a natural consequence

    4. Re:had a similar idea some time ago. by Anonymous Coward · · Score: 0

      You might like 0x10c. ( http://0x10c.com/ )

  13. HACKS! by DoomSprinkles · · Score: 1

    System.out.println("You win!");

  14. Different people learn in different ways. by girlinatrainingbra · · Score: 1

    right. you know everything. PLaying with something and engaging in it and relating it to fun and excitement like Harry Potter and "expelliarmus" (and knowing some of the roots of words and such) can teach you more than purely "rote memorization" could.
    .
    Rote memorization could maybe get them to pass a multiple choice exam where they can pick out which is "a conditional statement" out of the choices, or perhaps which is a valid beginning or end of a loop construct, but play-acting and engaging the mind into thinking and wanting to find a solution is more likely to instill concepts into the children's minds and brains. Concepts can cross domain boundaries, and learning a concept in topic A could allow you to use that concept in other seemingly unrelated topics.
    .
    Don't throw your derision at this. Different people learn in different ways.

  15. Yes Python, or anything but Java. by Requiem18th · · Score: 0

    My personal favorite is Io. Heck I'd even recommend Scheme. But pease not Java.

    --
    But... the future refused to change.
    1. Re:Yes Python, or anything but Java. by Requiem18th · · Score: 1

      Sorry that should've been http://iolanguage.org/

      --
      But... the future refused to change.
    2. Re:Yes Python, or anything but Java. by Anonymous Coward · · Score: 1

      Agree. Teaching Java to kids is child abuse.

    3. Re:Yes Python, or anything but Java. by Anonymous Coward · · Score: 0

      Why not Java?

  16. Not a new idea by pokoteng · · Score: 1

    Colobot was here before this, and I'm sure there are many other games that involve programming as major gameplay. Colobot itself didn't use an existing language (had some kind of OOP thing made up by the devs), but the idea is there. But still, I'm glad the idea is being pushed. I really enjoy games that pushes the skill on the players, with actual skill, not merely time invested or money invested.

    --
    the game
  17. No. by Anonymous Coward · · Score: 0

    Different people learn in different ways.

    No, we don't. Human beings learn the same way. We're all not that different.

    All humans learn best when they do it by discovery and especially, when it's a topic that interests them. This "game" basically makes programming interesting for folks who wouldn't otherwise be interested in it.

    Let's take some of those girls who really wanted to learn programming anyway and let's see how they do without the game.

    1. Re:No. by qwak23 · · Score: 1

      Actually I think the key is just "when it interests them".

      I mean we can apply classical conditioning, operant conditioning, and other methods all day long. Providing the material in a way that engages, interests and challenges an individual is always best, but the method for doing that may vary from individual to individual.

    2. Re:No. by Anonymous Coward · · Score: 0

      Yes, they do. Some learn best by example, some learn best by reading a manual cover to cover. Some learn best from diagrams, some from text, some by experimentation, some by listening.

      You're right that people learn best when the topic interests them. That's obvious. Thing is, people frequently are required to learn things that are less than interesting to them. Granted, programming may not be one of them. But an awful lot of non-technical people would benefit from knowing a little bit of scripting at least.

  18. Re:Doomed by Anonymous Coward · · Score: 3, Funny

    That's why Java has builtin garbage collection, DUH!

  19. kturtle & minecraft vs codespell by Ragica · · Score: 2

    My nearly six-year-old is doing great things (for a kindergartner) with KTurtle -- which is really a pretty cool environment (I was surprised to find). He also spends much time hacking crazy stuff with redstone in Minecraft. The next logical step to real programming language seems to me, keeping it fun and relevant to his interests, is to introduce some javascript (as much as I dislike it) so he can mess up web pages with little effort. From there it seems python is the friendliest, easiest and most resource-rich multi-purpose playground.

    Maybe CodeSpell will be something to check out eventually. Though the java example on their blog doesn't look all that fun to me. I hope its fun. If it gets to the point where I'm teaching the kid OOP, and all the verbose java syntax requirements, he'll probably only want to make minecraft mods. That's what CodeSpell is up against in this house.

    1. Re:kturtle & minecraft vs codespell by qwak23 · · Score: 1

      I would think any language that's fairly simple and can produce instant results would be a good language to introduce a child to. I say this because I had BASIC at the age of 5 and I could type out a few lines of code, hit run and see the results (almost) instantly. Better yet was having a ton of software written in BASIC that I could load up, tinker with and then try. I'm not really in touch with most modern languages, so I don't know what's out there that would have that same kind of feel, but I know that as a kid it was awesome for me (granted everyone is different, but hey).

    2. Re:kturtle & minecraft vs codespell by Anonymous Coward · · Score: 0

      You're doing it wrong. If your kid is making shit with redstone, introduce 'em to Assembly Language. They're ready. If you throw any higher level than that in the mix they'll just wonder why the magic works and write shit programs for the rest of their lives, until they discover ASM or at least C, then the world will open to them "Oh crap! It's just like redstone" and suddenly they'll become better programmers and curse you for destroying the best years of their lives.

      Happened to me with Core War, and BASIC, and (true) C++ (no C'ish shit, which might have saved me) and then Java... Which I loved for all the wrong reasons and actually made me a crappier programmer. Finally picked up FORTH and then ASM on a whim, then the scale fell from my eyes, and I realizend I had to go and piss on my computer teacher's grave...

      You don't want piss on your grave. Teach 'em Assembly. Then they'll know how shit works forever, even if they don't use it for anything important ever.

    3. Re:kturtle & minecraft vs codespell by Ryanrule · · Score: 1

      Logo/Turtle Graphics and Microworlds should be required learning software for the young kids.

    4. Re:kturtle & minecraft vs codespell by Anonymous Coward · · Score: 0

      Whichever has the most examples, or kid friendly material available (i.e. something entertainment oriented).

      I started learning to program on my own when I was 7, by typing in example programs and making changes. Much like a typical game, I picked up programming and dropped it a couple times along the way. Starting from an example was always helpful, because it didn't require inventing as many abstract concepts while also learning the language (everything a computer does internally is abstract, drawing, sound, drive access, etc).

      I think everyone underestimates how long it takes to really become a programmer. It definitely takes more than six months of constant programming for the brain to begin rewiring itself, eventually becoming capable of "elegant" programming (elegant could mean lot of things, but my definition is knowing approaches and solutions that work and create minimal problems later). If the brain rewiring phase is rushed a person falls back on memorizing (at best), then they end up with a shallow depth of expertise they constantly fight against. I think that's what happens to stereotypical programmers from India, too much is dumped on them too fast and they succeed by relying on a basic skill (memorizing) instead of developing new ones (specialized problem solving, visualizing systems, gluing bits together, etc.).

      I turned out to be a capable programmer, by the standards of everyone I've worked with.

  20. Mac Only? by rolytnz · · Score: 1

    Bollocks.

    1. Re:Mac Only? by Anonymous Coward · · Score: 0

      Teaching programming to Mac users is like teaching fish quantum mechanics.

    2. Re:Mac Only? by qwak23 · · Score: 1

      As much as I fucking despise Apple (aside from my iPod classic), you do realize that a good portion of hacker culture spawned around the Apple and Macintosh computers right?

    3. Re:Mac Only? by Anonymous Coward · · Score: 0

      While the Apple ][ in the 1977 was a very open machine, the Apple of today is the very opposite of that. It's not for power users but for lame consumers.

    4. Re:Mac Only? by qwak23 · · Score: 1

      Yes, hence me despising Apple in their current state (pretty much since Jobs came back, though they had been rocky for a few years before that). I will however give credit where credit is due. Many icons in the code world got their start on an Apple machine. Many of them still have a lot of sentiment for the platform, why try to completely marginalize an entire group? Especially when some of the younger ones may not know any better?

    5. Re:Mac Only? by Chrisq · · Score: 1

      (pretty much since Jobs came back

      Jobs has come back? He truly is the Messiah!

  21. Jumping on the bandwagon... by gaelfx · · Score: 1

    ... but it seems they are willfully ignoring Linux as a platform. And teaching about computers. Yeah, cliche to complain about it, I know, but it does seem kind of disingenuous at best.

    1. Re:Jumping on the bandwagon... by O('_')O_Bush · · Score: 1

      Their biggest sponsors are Microsoft and Oracle (check the bottom link).

      --
      while(1) attack(People.Sandy);
  22. Neal Stephenson bet them to it by williamyf · · Score: 1

    In the Diamond Age, the "premier" teaches logic, programming and nanotechnology in a similar fashion.

    While it is good to see the concept taken to practice.....

    Nothing new to see here, move along. ;-)

    --
    *** Suerte a todos y Feliz dia!
    1. Re:Neal Stephenson bet them to it by qwak23 · · Score: 2

      There have been games that have done this before, even well before "The Diamond Age" was an idea in Stephenson's head. The problem is these kinds of games are so few and far between that it's fairly notable when one comes up.

      While I certainly played my fair share of standard games as a kid, I also had quite a few educational ones as well (granted some of them were below me, my parents bought me a math game based on my age and not my ability). As much as I hate coding now (mostly due to syntax crap in languages like Java), I love the logic behind it and the games I had that involved various forms of programming to solve problems were always a lot of fun.

    2. Re:Neal Stephenson bet them to it by CastrTroy · · Score: 1

      Not only that, but people who are actually interested in programming don't need a game to teach them how to do it. When I was a kid, I enjoyed going through the DOS command prompt tutorial on my computer. I enjoyed when we used logo in school. Taking computer class in highschool where we used Q Basic to write programs, and Netscape Composer to make web pages.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  23. Wizard's Bane by Rick Cook by John+Bokma · · Score: 1

    Read it ages ago and enjoyed it a lot.

  24. Jesus, Java? Why not COBOL? by Xcott+Craver · · Score: 1

    Java is an OK language, but it's kind of bureaucratic and boring. I can't think of a better way to suck all the magic out of a fantasy game than to have the spells written in Java---except maybe having the kids produce an ER diagram and a set of tables in Boyce-Codd normal form.

    At the very least, they could do without the pointless punctuation. Does a spell really have to have semicolons and empty parentheses to denote that the spell is imperative?

  25. When Java calls JavaScript by Anonymous Coward · · Score: 1

    I just looked at the architecture of CodeSpells - the Unity3D game launches a JVM when a spell is executed. The JVM makes a TCP connection to the Unity3D engine, so that, when a Java spell is executed, the framework issues over the socket commands in UnityScript, a dialect of ECMAScript.

    Oh, boy, just wait until we have to explain to the next generation of programmers the difference between Java and JavaScript.

    Link to the framework: https://github.com/srfoster/June

  26. Oh the irony. by Anonymous Coward · · Score: 0

    Java: Write once, run anywhere. The game that teaches it: "The Windows version will be coming out soon!"

    1. Re:Oh the irony. by Anonymous Coward · · Score: 0

      That's not irony.

      You might as well say since vim isn't coded in ruby, it's ironic that I'm using vim to code ruby. You're *that* insightful.

  27. Re:Jesus, Java? Why not COBOL? by qwak23 · · Score: 1

    While I agree with your sentiment about "why use Java" for something like this, I also really applaud this kind of thing. Yeah, different language or language invented specifically for this app probably would have been better, but introducing kids to programming at an early age is win over all.

  28. MASTERED in an hour? by fleeped · · Score: 1

    From the dictionary: "to become thoroughly proficient"
    I think I need an hour of CodeSpells and I can add Java proficiency to my CV; I've only spend a hundred hours coding in it, so I've set my skill as "exposed to" instead.

    1. Re:MASTERED in an hour? by Anonymous Coward · · Score: 0

      I've been spending a few days learning from lynda and various reference manuals on how to program in java from beginning to end and so far i'm nowhere near done and I have spent about 20 hours in it. The fundamentals take at least that long to grasp a good concept on how programming works and why things work the way they do, but then that's when it starts to get tricky. Their website is full of crap -- maybe understanding a + b = c and if c = d then make e happen. I think that can be taught to a child but I remember when i was in kindergarten I was finally able to count up to 200 if that. Now kids are being taught sex ed in kindergarten (in chicago) and algebra is introduced in 4th grade overseas. I remember in 4th grade I was learning multiplications and in 8th it was geometry without any idea what algebra was going to be. Things change in just a few short years but just how much is too much to feed children? I know in the philippines you arrive at school at 7am and leave at 6pm. The last hour is cleaning the room you're in but still, 11 hours of school is too much i'm afraid. In south korea, it's 15 hours.

    2. Re:MASTERED in an hour? by Anonymous Coward · · Score: 0

      mastered many programming concepts

      Note that it says programming concepts, not Java.

  29. Kids have it bad enough. by Anonymous Coward · · Score: 0

    We really shouldn't be teaching them Java. Maybe Basic or C variants, but Java is just sadistic.

  30. Lua with Minecraft + Tekkit mod by uberbrainchild · · Score: 3, Informative

    Try tekkit for minecraft, it will give you a mod called computercraft which will allow you to place computers with consoles on the map and even hook up wireless modems and a disk drive to them. Using lua you can then program these computers to do whatever you want basically, me and my brother made 3 train stations which would handle carts and track switches with the computers. You can even program "bots" with lua and have them build structures and whatnot. They can even defend your area if you want. All this is done with lua inside the minecraft game. You can of course import larger scripts from outside the game since typing them in the console minecraft provides can take a while.

    --
    Anveto
  31. Might lift the standard of Android apps. by dubist · · Score: 1

    They could have the spells backfire if they put credentials or access tokens in plain text within the applications.

  32. it would seem... by buddyglass · · Score: 1

    A one-two dose of video games and computer programming was deemed more effective than traditional abstinence-only education.

  33. Java and standalone ... seriously!? by fygment · · Score: 1

    How about Javascript and run in the browser or on the cloud instead? There's nothing commenting on why Java was chosen but it seems a very surprising decision to come out of a computer science department ... or maybe not. Are academics really keeping pace with technology or the public interaction with technology?

    --
    "Consensus" in science is _always_ a political construct.
  34. Wiz Zumwalt would be proud by Anonymous Coward · · Score: 0

    For more on the concept of magic as programming, pick up the "Wizardry" series by Rick Cook.
    http://en.wikipedia.org/wiki/Rick_Cook - 'What "Wiz" Zumwalt could do with computers was magic on Earth. Then, one day the master computer hacker is called to a different world to help fight an evil known as the "Dark League". Suddenly, the "Wiz" finds himself in a place governed by magic – and in love with a red-headed witch who despises him.'

  35. I feel... by HaZardman27 · · Score: 3, Funny

    I feel like my signature is very relevant today.

    --
    Apparently wizard is not a legitimate career path, so I chose programmer instead.
  36. Missing WMD by Latent+Heat · · Score: 1

    What if the purported caches of "evil spells" proves to be false?

    1. Re:Missing WMD by dadioflex · · Score: 1

      What if the purported caches of "evil spells" proves to be false?

      You mean the "spells of mass destruction"?

    2. Re:Missing WMD by Latent+Heat · · Score: 1

      Yes, then they would be "SMD."

  37. I actually want to play that by Anonymous Coward · · Score: 0

    Nevermind, I need an way overpriced machine with a fruity logo on it to do so.

  38. Re:MLXXX Only? by Hognoxious · · Score: 1

    you do realize that a good portion of hacker culture spawned around the Apple and Macintosh computers right?

    You do realise Gerry Garcia is dead, the Soviet Union collapsed, and prawn cocktails are not in fact sophisticated?

    Oh, and if you want VHS tapes you'll need to go rummaging round charity shops.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  39. LEGO Star Wars versus LEGO by the+agent+man · · Score: 1

    A big point was made about creativity and the passion of experienced programmers. Then 40 students were recruited (how?) for an experimental study and given one hour to poke around in Java code. I don't quite see how the observations made can be interpreted as compelling evidence for the conclusions reached. Where exactly was the creativity? The game seems more like LEGO Star Wars, as opposed to just regular LEGO, with all the pieces are given. Could they make their own characters from scratch? It did not seem so.

  40. slashdot.org by Anonymous Coward · · Score: 0

    good

  41. Cast spell by espeon99 · · Score: 1

    We'll see spells like Fire.FireFactory.FireElementalBuilder.CreateElemental() and Ice.Wizardry.Spell.Hailstorm.CreateFriggingStormCloud()

  42. Fucking waste of time. by Anonymous Coward · · Score: 0

    The reason they are doing this is because they know their business model- the $60,000 / 5 year degree financed by unbankruptable debt- is fucked. They are massively overpriced for the value they deliver -a value which can be gotten for free online. In an attempt to create a value which cannot be had for free online, they're trying to make education dependent on very high tech- the sort that is not a commodity.

    Of course, people don't actually learn any BETTER or FASTER or MORE using this 3d game, so WRT to pedagogical value the value is zero.

    This is something UCSD would do. Expect glowing reports of increased comprehension etc etc to be issued presently.

    I had a lot of friends who went there and they all say the same thing UCSD is a open running sewer of academic corruption set amidst a backdrop of a kiss-up / kick-down culture with the students at the bottom, then the TAs, then the adjunct, then the tenured staff through various levels of admin with each hating - and harboring a hair trigger readiness to act out that hatred- the one below it.

    Here's a little piece of advice., Don't go there. Even if you (still) believe going into to debt for college is a good idea, go somewhere else, unless you're the sort of person who thrives in an atmosphere of skullduggery, tit-for-tat vindictiveness surrounded by untrustworthy, highly manipulative personality types.

  43. The're ruined for life.... by bbsalem · · Score: 1

    Imagine kids whose first exposure to programming is Java, with the standard libs as written by Sun. They will be wrecked for life..

    public static void main( string args[]) .... indeed, poor things...

    lets hope they use the acm.jar at least.

  44. cheap jordan shoes handbag store by jiudongu · · Score: 1

    The website cheap wholesale and retail for many kinds of fashion shoes, like the nike,jordan, also including the handbag,sunglass,jeans,shirts,hat,belt and the decorations, online store,All the products are free shipping, and the price is competitive, after the payment, can ship within short time. the goods are shipping by air express, such as EMS,DHL,the shipping time is in 5-7 business days! YOU MUST NOT MISS IT, === http://www.sheptrade.com/ === cheap jordan shoes $35, Air max shoes $36, Nike/shox $35, handbag $36, Sunglasses $16, New era cap $12, wallet $19, belt $18, jewelry $15, T-shirts $20, Jeans $36, (NFL MLB NBA NHL) jerseys $25, === http://www.sheptrade.com/ ===