Slashdot Mirror


Khan Academy Chooses JavaScript As Intro Language

jfruh writes "Slashdotters (many of whom cut their teeth on much-maligned BASIC) have long debated what language kids should learn programming in. Khan Academy, the wildly popular producer of educational videos, has come up with an unorthodox choice: JavaScript, not least because of its ability to keep kids' attention with something fun and graphical."

355 comments

  1. The reason seems obvious to me by Anonymous Coward · · Score: 5, Informative

    No additional tools needed. Everyone watching a Khan video already has a JS environment.

    1. Re:The reason seems obvious to me by Anonymous Coward · · Score: 4, Funny

      KHAAAAAAAAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNNNNNNNN!

      Lameness filter encountered. Post aborted! Filter error: Don't use so many caps. It's like YELLING.

    2. Re:The reason seems obvious to me by moderatorrater · · Score: 3, Insightful

      Exactly. The ability to go straight from learning to doing is absolutely critical for teaching programming. If I hadn't picked up my older brothers TI-85 when I was in junior high and started fiddling with his programs, I might not be doing programming today.

    3. Re:The reason seems obvious to me by SQLGuru · · Score: 1

      I posted (back on December 26th last year) that Javascript would be a good choice for learning because every modern computer can work with it......much like BASIC back in the day.

      http://slashdot.org/comments.pl?sid=2591756&cid=38499508

    4. Re:The reason seems obvious to me by Anonymous Coward · · Score: 0

      Well, at least they can learn a newer horribly broken language instead of an old horribly broken language.
      I cut my teeth on BASIC back around 1981. After that is was 6502 assembly. Next up was C, 68K, x86, C++, ARM, MIPS, and PPC. Once I was on a 68K based machine (Atari ST) I never used basic again. I think C is an excellent language to learn programming basics. It's simple and small. All it really needs is a good, free interpreter. I haven't tried CINT, is it any good? It's almost time to teach my daughter programing. She's tried scratch and done some cool things, it might be time to start her on lower level stuff.

    5. Re:The reason seems obvious to me by tedgyz · · Score: 1

      Exactly. The ability to go straight from learning to doing is absolutely critical for teaching programming. If I hadn't picked up my older brothers TI-85 when I was in junior high and started fiddling with his programs, I might not be doing programming today.

      Same here. My brother was taking a BASIC programming course in the early 80's. I picked up his book and the rest is history...

      --
      "No matter where you go, there you are." -- Buckaroo Banzai
    6. Re:The reason seems obvious to me by dadioflex · · Score: 2

      I posted (back on December 26th last year) that Javascript would be a good choice for learning because every modern computer can work with it......much like BASIC back in the day.

      http://slashdot.org/comments.pl?sid=2591756&cid=38499508

      If a million monkeys are given a million typewriters...

    7. Re:The reason seems obvious to me by SQLGuru · · Score: 5, Informative

      If a million monkeys are given a million typewriters...

      Typewriter repairman would still be a viable career choice.

    8. Re:The reason seems obvious to me by Anonymous Coward · · Score: 0

      Best way around the lameness filter ever.

    9. Re:The reason seems obvious to me by Anonymous Coward · · Score: 0

      Udacity.com seems to have figured out a very effective way to allow students to learn Python as a programming language with an interactive development environment running within the web browser and presumably using Adobe Flash or maybe HTML5. In particular, CS101 showcases this capability.

      Ah, yes I remember learning BASIC on my Commodore VIC-20 and reading the User Manual. I blame my high-school mathematics teacher for introducing me to computer programming. KHANNNNN indeed! ;)

    10. Re:The reason seems obvious to me by phaggood · · Score: 1

      And if you sign up for PhoneGap Build, you can make mobile apps for the most popular platforms using only javascript and HTML5

    11. Re:The reason seems obvious to me by CSMoran · · Score: 1

      I think C is an excellent language to learn programming basics. It's simple and small.

      However, problems start when you get to explaining string concatenation.

      --
      Every end has half a stick.
    12. Re:The reason seems obvious to me by 10101001+10101001 · · Score: 1

      If a million monkeys are given a million typewriters...

      Typewriter repairman would still be a viable career choice.

      Maybe if the typewriters are shitty quality. However, speaking of shitty quality, typewriter *cleaning* services...

      --
      Eurohacker European paranoia, gun rights, and h
    13. Re:The reason seems obvious to me by thetoadwarrior · · Score: 1

      At least it's not PHP but I hope they make it clear to people that good programming languages don't have as many flaws as JavaScript does.

    14. Re:The reason seems obvious to me by Anonymous Coward · · Score: 0, Troll

      And you're a happy underpaid, overworked little programmer, aren't you?

    15. Re:The reason seems obvious to me by Anonymous Coward · · Score: 0

      But javascript by itself isn't much fun, wouldn't you also teach the kids, CSS, HTML (5), and how to combine them all. As well as web theory, ie how html works, how the server and client apps are run, etc. A lot harder then telling them this is the strcat() function, and be done with it. They don't need to know the inner workings unless they want to, all they need to know is how to pass parameters to a function.

    16. Re:The reason seems obvious to me by Anonymous Coward · · Score: 0

      Best.Post.Ever

    17. Re:The reason seems obvious to me by Half-pint+HAL · · Score: 1

      I think C is an excellent language to learn programming basics. It's simple and small.

      ++Disagree. I started on BASIC (yuck) and then moved on to C at university. C's problem is that it was initially designed for coding in a command-line environment and that makes the core interactivity features a bit weak. Which means that it takes a while before you can actually have a program that seems like a program -- if the program only ever generates one result, why bother with the program and not just do the calculation yourself? You have to anyway -- it's called "debugging".

      Javascript was designed to run in a moderately interactive environment -- it's quite heavily tied to HTML forms, making it in practical terms event-driven from the word go. So you can program a calculator based on buttons after ten minutes. You can also throw strings around without worrying about malloc or free. In short, you can produce something that looks like a real program. Most of the flow-control is taken directly from the C spec, so it does teach a skill that can be transferred directly to a "better" programming environment if and when required -- let's hope Khan Academy plan such a "moving on" into their syllabus.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    18. Re:The reason seems obvious to me by Dogtanian · · Score: 3, Funny

      My brother was taking a BASIC programming course in the early 80's. I picked up his book and the rest is history...

      Can't have been a very useful BASIC book then, if most of it was about history instead of computer programming.

      --
      "Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
    19. Re:The reason seems obvious to me by CSMoran · · Score: 1

      What I meant was "you need to use a function to concatenate strings" is just the tip of the iceberg. There is a more of it under the surface of the water, starting with "these are not really strings, but pointers to null-terminated arrays of characters", "you must ensure there's enough room for the result", "the dimension of the result must be known at compile time or you'll have to use malloc" and ugly under-the-hood stuff like that.

      My adventure with programming too began with BASIC. As I progressed through Pascal to C and then to C++, I remember C's strings as one of the worst nightmares for a newb.

      I don't know JavaScript, so I can't comment on that.

      --
      Every end has half a stick.
    20. Re:The reason seems obvious to me by Anonymous Coward · · Score: 0

      And thus programming is reduced to the building of web pages and scripting languages.

    21. Re:The reason seems obvious to me by byrtolet · · Score: 1
      I had a similar path. But I skipped C. Now I understand C but because of my C++ skills. C is just a terrible language. Pascal is much better language, but a little bit more verbose.

      I don't think BASIC was a teriible language. It was quite good for the 8-bit mahcines. But what language do you learn programming is irelevant. The most important is to learn to think. And the more languages you know - the more you think.

    22. Re:The reason seems obvious to me by Will.Woodhull · · Score: 1

      Seems to me that if your daughter has a good head for programming, she is going to be messing around with Javascript no matter what you think she should learn before that. A realist would recognize that Javascript is the street lingo all kids will be exposed to. It makes sense to teach them Javascript, and how to avoid its pitfalls and take good advantage of its strengths. Of which there are more than a few.

      But of course that would require the teacher to learn how to actually use Javascript, which can be daunting. That could even involve requiring the teacher to face his own blinding prejudices, which of course could be an insurmountable problem. Then again, anyone who confronts their own prejudices with open eyes will emerge the better person for that internal conflict.

      My background is an introductory course in Fortran on Hollerith cards, a lot of hobbying around in Applesoft, 6502 Assembly, and Forth, then formal schooling in Cobol, the HP Business Basic of the late 1980s, and some Pascal. My most productive programming years were pretty much in Perl, as its regular expression engine was the best tool available for cracking some tough nuts in parsing/lexing. I do not do much programming any more; my main interest is in 3D modeling now. I can customize off the shelf stuff in Javascript and PHP for my web pages, and that is probably as much as I will need to do from here on out. (Unless I start getting deeper into Blender which uses Python for its scripting... ugly, ugly significant whitespacing raises nightmares of one-column-off Hollerith cards and using Cobol Coding Sheets....)

      --
      Will
    23. Re:The reason seems obvious to me by Will.Woodhull · · Score: 1

      The Business Basics I have used are good languages so long as you have no need for objects or complex data structures, and can use a decent external library for regular expression work. For traditional Input - Process - Output paradigms, they have a lot going for them. Event driven paradigms, not so much.

      That said, any kid with any internal interest in programming is going to be swimming in the web waters real quick. It makes sense to build their early program training on Javascript in the HTML/CSS environment, possibly with some PHP thrown in. This of course is not an ideal learning environment. Instead it is the real environment they are growing up in, and are going to be involved in no matter what their teachers think is best for them.

      --
      Will
    24. Re:The reason seems obvious to me by graphius · · Score: 1

      man, someone has to use this as a sig....

    25. Re:The reason seems obvious to me by robsku · · Score: 1

      Those three, in that order, were my first languages too :) But I didn't have problems understanding C after coding in BASIC - though that Pascal between them may have softened it, but Pascal, mostly, differed with C only in having less cryptic, more human readable syntax for newbie...
      Worth mentioning is the system, IBM PS/2 with 12.5Mhz 80286 CPU & 1MB RAM, originally booting to PC-DOS 4.0 on ROM drive but when I started we had installed MS-DOS 5.0 on HD. Exact software I had (interprepter/compiler(s), IDE's...) were QBasic (got QuickBasic later but I had already moved from Basic so I didn't use it for much after converting parts of my old QBasic&GWBASIC programs where it was incompatible with QBasic to work on it, speeded some functions up by rewriting them in asm and compiling them), GWBASIC (only because on school computers there was no other option), Turbo Pascal and Borland C/C++.

      Strings were easy for me to pick up, but memory management did provide me with some interesting learning. It did take me a while to properly learn how different variable types were used/converted/altered with other types, etc.
      But memory use, pointers in specific, were one of the last things I finally learned... For long time I had used only static size arrays instead of mallocing according to my needs - though I knew the syntax for writing functions where parameter was pointer to array, etc. but I still didn't exactly understand pointers. Finally it dawned on me when, with help of programming book for VGA/SVGA graphics and documentations on other video modes, I had started to writi my own graphic library - it slowly dawned on me after I had defined a pointer addressing memory area where VGA graphics mode pixel data was mapped at :)

      I'm sure glad that I had to go through this before I first switched to Java, learned (but did not like) Javascript (and back then it sucked on every area) and finally when I learned that dynamic typing, automatic memory management/garbage cleanup were not just something available on languages that suck hard - since I moved to Linux I've learned a number of scripting languages, some better than others (perl 3 ), and some quite awful (php, the bastard son of perl, Tcl {IMO}, etc.) I have been in awe, most notably since I taught myself Perl, which is now my favorite language allowing easy creation of cross-platform applications as well as platform specific code - including conditional execution of modules & code depending on OS - and a superb build system similar to autotools but way easier and depending only on perl... with CPAN providing modules for virtually anything :)
      If I had machine fast enough so I did not feel compelled to compile even simplest games to binary executables because of speed (and RAM) issues and had access to modern languages of today I might never had learned important stuff like memory and pointer use, let alone low level arcitechture specific stuff from IRQ handlers to direct hardware accessing, basics of assembly, etc. - and if I now had to learn them the step from Perl, PHP, Javascript/AJAX, etc. would be quite a way to get headache :) ...and I probably would not dream of writing my own game for C-64 one day =)

      Now there is rarely anything new when it comes to learning new languages, though I have just started teaching myself a quite curious language very different from all the usual high and low level languages, which makes it interesting and from what I've gathered it has well the potential to become my other favorite language: Common Lisp - after which it should also finally be easy for me to learn ELisp and write my own extensions and applications for emacs as well...

      P.S. I'm still quite proud of the graphic library I wrote for Borland C/C++ and ported also for DJGPP C/C++, under DOS it was my own library for game graphics supporting graphic devices from CGA to SVGA cards and modes with 1, 2, 4, 8, 15, 16 and 24 bit colors, from 320x200 up to a

      --
      In capitalist USA corporations control the government.
  2. Scratch by gmuslera · · Score: 3, Interesting

    Well, Javascript is not basic, and they can test their programs in any browser, but... why not scratch?

    1. Re:Scratch by lavacano201014 · · Score: 0

      That's more of a jigsaw puzzle than any real programming - sure it helps get the idea down but doesn't really teach *progamming*

      --
      A wise man once said, "Where is my other quotation mark?
    2. Re:Scratch by NonUniqueNickname · · Score: 2

      Scratch is a nice intro to variables, events, loops, branches. But sadly, there are no methods/functions in Scratch. You cannot structure code, you cannot reuse code, any attempt to increase the scale of your Scratch project will result in frustration and very bad habits. It's alright to play with Scratch for a week or so. After that either give up on programming or move to the real deal.

    3. Re:Scratch by Anonymous Coward · · Score: 1

      I suspect you haven't spent any time with Scratch scratch.mit.edu. True, it has a "graphical syntax" but it is a bona fide programming language. It even teaches concurrent and event-based programming. So what makes it not "really teach *programming*"? Is it because it doesn't do it in the context of your favorite language that makes it not "real"? Perhaps you are not in it's target demographic. Having taught 400 elementary and middle school kids the elements of Scratch for two hours at KTU (http://kidstechuniversity.vbi.vt.edu/program.php) last Saturday, I can tell you that they get it. In fact, I think their teachers were the most excited (mostly because *they* didn't think they could program the computer to do what they wanted).

    4. Re:Scratch by Nerdfest · · Score: 1

      Scratch is also not allowed on iDevices.

    5. Re:Scratch by Anonymous Coward · · Score: 0

      Scratch is a nice intro to variables, events, loops, branches. But sadly, there are no methods/functions in Scratch. You cannot structure code, you cannot reuse code, any attempt to increase the scale of your Scratch project will result in frustration and very bad habits. It's alright to play with Scratch for a week or so. After that either give up on programming or move to the real deal.

      Whoah there OOPfan... a language with no objects and methods is precisely what you want to use to teach good program design. I have never seen a large OOP project (and I've seen a number of large C++ and Java projects) that had it or that had structured code, made good reuse of code, and that did not contain a wide variety of bad habits demonstrated. The "real deal" is good programming, and an OOP language doesn't magically teach it by osmosis just because of its syntax. In fact, OOP languages are an impediment to learning how to program well.

      BASIC, assembler, and C (in that order) are still the path to the real deal. After that, programmers can go wild in whatever clowncar languages they want to, and the chances of them getting into trouble will have been minimized by good initial practices.

    6. Re:Scratch by izomiac · · Score: 1

      IMHO, being able to run your program on *any* modern computer is a huge boon. For starters, it gives you a more advance way to interact with a computer, which drives home that you aren't just playing around with a form of abstract math. From there, you get to use it in your everyday life (e.g. auto-fill a survey with a bookmarklet) and show off your skills to your friends.

    7. Re:Scratch by Half-pint+HAL · · Score: 1

      He said "methods/functions". And a programming language without functions is a guarantee of bad coding practice....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    8. Re:Scratch by Anonymous Coward · · Score: 0

      You kids. Objects is not the same as Object Oriented. C has objects (int number; // number is an object of type int) but C is obviously not object oriented.

    9. Re:Scratch by narcc · · Score: 1

      I don't know how you can say that with a straight face!

      Functions simply mirror what good programmers already do. If you've ever written anything non-trivial in an assembly language, maybe you'd understand.

      FWIW, those old unstructured BASIC's from the early 80's provided an outstanding foundation for assembly language programming. (When I tutored VAX Assembly a zillion years ago I'd often have struggling students do the assignment in BASIC before completing the same assignment in assembly.)

    10. Re:Scratch by Half-pint+HAL · · Score: 1

      Ok, fair cop. What I meant was "teaching someone to program in a language without functions is extremely extremely extremely likely to lead to bad coding practice." Personally, I found the unstructured BASIC got me into spaghetti-code habits that left my 6502 assembler code impossibly buggy. At first I resented the restrictions of procedural programming when I started on C, but I quickly came to appreciate how vital the concept of the procedure was to sane and hygienic coding. Good programmers "already" use functions/procedures because they've learned to use them -- new programmers need to be taught to use them.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    11. Re:Scratch by narcc · · Score: 1

      That's part of the learning process, isn't it? After a few non-trivial projects and experiencing the difficultly in managing the resulting "spaghetti-code" the beginner should *on their own* start thinking and writing modularly. Functions become immediately obvious at that point.

      As a bonus, you get to avoid making up stupid and useless rules about when a function is appropriate. (You may remember some rule like 'after 100 lines' or something equally ridiculous.)

      Ultimately, beginners *should* make mistakes -- and they should make as many common mistakes early on as possible.

    12. Re:Scratch by Anonymous Coward · · Score: 0

      why not: Scratch does not have a class instance or prototype model. Try making even the simplest of science models. Try making something like the game of life. Piece of cake in JavaScript. Nightmare in Scratch. Program one cell then copy the cell and the code as many times as you have cells. Try 100 x 100 and you have to copy, literally, the code 10,000 times. Not only does this make a monster of a program but also it run slow as molasses. Actually, it probably would not run at all. Scratch is a computer science travesty!

    13. Re:Scratch by Johann+Lau · · Score: 1

      Yeah... you can use console.log() for "outputting to the command line" to begin, then work your way up to manipulating HTML elements -- and bam!, you already have some simple GUI stuff that would be hell to code from scratch in stuff like C. Basically for free... I seriously doubt the learning curve of HTML and CSS is steeper than the learning curve for, say, QT or GTK. And all the time, you're on the interwebs, being able to pull resources from wherever, and do interesting or silly things with them... you know, instead of having to go insane trying to code networking.

    14. Re:Scratch by b4dc0d3r · · Score: 1

      A truly interesting perspective. I would caution that it depends on your intended outcome. If we want people to be aware of programming concepts and capable of applying them to real-world situations, training in proper technique with an explanation of why we do it that way would work.

      If we want people to grow up as creative master coders who can solve a problem in multiple ways for multiple scenarios, they need exposure to the good *and* the bad.

      For the purposes of Khan Academy, teaching through JavaScript works. And given the generous scoping of JavaScript variables, in a very BASIC like manner, the same mistakes can be experienced in nearly the same way. You could even thrown in some very JavaScript like C, read through it, and introduce the GOTO. If the students are sufficiently advanced, you could explain how the boolean logic checks are essentially the same as GOTO, just without the need for a GOTO.

      Hell, identify everything within brackets as an anonymous function, and say that the brackets are essentially a local unnamed GOTO. Or could be implemented as a CALL to an unnamed function. You could BLOW THEIR TINY MINDS up if you wanted. But that's not what Khan wants to do, so I'd say you can offer advanced classes to these kids and teach them all the stuff they missed.

    15. Re:Scratch by robsku · · Score: 1

      I've often wondered why BASIC programming habits clinged so horribly on spaghetti-code using GOTOS everywhere to create very minimal "structure" in such horrible way was so common - when I learned programming I started with Basic and although it was already '91, I had QBasic, which I later learned supported not only coding without *line numbers* and most of all, it had functions, I had no modem, no access to one before '95 and no friends understanding programming and the only access I had to any learning materials were old (early/mid 80's) BASIC programming books from library I too started with habit of structuring code using GOTO... Until I found that QBasic had surprisingly advanced help system which, before functions, described BASIC commands GOSUB/RETURN, which provided real, even though still awful yet compared to GOTO-spaghetti an advanced, syntax for structuring your code using what could be described as minimal subroutine methods - while some books did mention these I found it weird that almost none really taught how to use them and instead had almost 100 percent GOTO-spaghetti "structures" used in examples...

      --
      In capitalist USA corporations control the government.
  3. Logo! by Anonymous Coward · · Score: 3, Insightful

    Silly mongols, you should use logo. You can even get physical, pen-wielding turtle periferals to show how what you code can make something real move.

    Ok, it really isn't good for much of anything beyond geometric drawings with nested for loops, but it has immediate, visible results using a subset of normal coding logic.

    1. Re:Logo! by MindStalker · · Score: 3, Informative

      Try scratch. Its basically logo with drag and drop commands and better graphics. I recently retried logo and found the modern version of it highly confusing with its attempt to be heavily threaded.

    2. Re:Logo! by Anonymous Coward · · Score: 0

      Actually, Logo could do a lot more than drawing - it was basically an adaptation of LISP, so it could do all kinds of things. I learned list processing and functional programming in Logo (I was the only one in my class who showed an interest in programming so I got to play with the BBC Model B lots :) )

    3. Re:Logo! by Samantha+Wright · · Score: 4, Insightful

      Scratch not so darling. Maybe for the first couple of videos, but then what? Personally, I think the decision to go with JS was a good compromise. This should prove to be the exact opposite of going with Java, which actively drove students away by being too formal for a first date.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    4. Re:Logo! by elrous0 · · Score: 1

      Alice is also an excellent language for absolute beginners (especially kids). It teaches object oriented programming too (unlike a lot of intro languages).

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
    5. Re:Logo! by Anonymous Coward · · Score: 0

      Or python.

      >> from turtle import *
      >>> left(45)
      >>>forward(20)

      Added bonus: this gives you an easy transition into objects.

      >>> t1 = Turtle()
      >>> t2 = Turtle()
      >>> t1.color('blue')
      >>>t1.forward(20)

    6. Re:Logo! by narcc · · Score: 1

      Why pollute their young minds with the miserable failure that is OOP?

      We want students to learn good programming practices, after all.

    7. Re:Logo! by Brian+Feldman · · Score: 1

      You can't make a good OO program?

      --
      Brian Fundakowski Feldman
    8. Re:Logo! by narcc · · Score: 1

      You could try. Just don't think for a moment that OOP is going to actually help you get there. OOP tends to cause more harm than good.

    9. Re:Logo! by robsku · · Score: 1

      In that case your doing it wrong - what I learned about bad OOP is that it's usually because whoever wrote it does not fully understand where OOP has advantages and how to implement it, or secondarily because of poorly implementation of OOP in language - usually it's either former or both as implementation faults can usually be minimized by good programmer.

      C++, which I first started learning about OOP, is one example of poor implementation - another one, IMHO, is Java which takes things to another extreme, though Java's fault is the insane OOP madness where the base library objects are designed to force unnecessarily using insane amount of objects in combination with each others just to achieve something very primitive and to lesser amount because of it's "100% OOP only for any and everything" philosophy.

      Perl 5 does OOP quite nicely, and another pretty good implementation, IMHO, is PHP's OOP implementation (though let it be noted that I generally consider PHP to be poorly implemented, it's hard to believe that it began as Perl module before it was made into programming language inspired by perl - yet it seems to have dropped out *everything* that makes perl so good, and implements it's own solutions such as the insane implementation of regular expression handling using huge amount of separate functions for different stuff with regexps that in perl are done all with one single operator - ok, I'm drifting now...)

      --
      In capitalist USA corporations control the government.
    10. Re:Logo! by narcc · · Score: 1

      That's a pretty standard set of apologetics :) We can look at each in turn.

      The first, "You're doing it wrong", belies one of the biggest promises OOP failed to deliver: that OOP makes software development easier. Add to that that no one can agree on what constitutes OOP, and you can blame any failure of OOP to deliver on this or any of its other promises on the developer!

      The second, the failures of OOP are most due to poor implementation in languages like Java, isn't much different from the "You're doing it wrong" argument save that it's applied to the language designers and no the end-users. So, why is OOP language support so poor? It could be because no one can agree on what constitutes OOP?!

      Just look through this thread and you'll find all sorts of unusual claims like "if it's modular, it's OOP" (ridiculous!) or "if it's reusable, it must be OOP". Total nonsense, of course, but that's what happens when an ill-defined concept becomes a religion. (Just think: two "cornerstones" of OOP, inheritance and encapsulation, are fundamentally incompatible with one another! Only religious thinking could allow such a contradiction to stand.)

      The truth is that OOP has failed to deliver on all of the promises made on its behalf. It's no wonder that Alan Kay (the guy who coined the term OOP) regrets it.

      CMU has dropped it from their freshman curriculum calling OOP both anti-modular and anti-parallel by its very nature. Read that again: OOP is anti-modular by its very nature. It's hard to wrap your head around, isn't it? Isn't modularity one of the biggest advantages claimed by OOP?

      Bringing this back to the subject of OOP apologetics, I found this gem in a discussion about the CMU decision: "All the mainstream programming languages do OO poorly, and yes, they are anti-modular."

      Yes, they blame the language for the failures of OOP -- not just any language in particular, but all mainstream languages!

      That same poster goes on to write "And many–perhaps even most–instances of OO programs are non-modular." Not just the languages now, but also the the developers are to blame for failures of OOP! (Weren't we supposed to get modularity and code-reuse as a side-effect of OOP? Yes, it's another broken promise.)

      From the perspective of the OOP apologist, it looks like just about everyone is doing OOP wrong. If that's the case, why continue to promote this failed methodology as "the one true way"? Why tout its supposed advantages when they're rarely realized (usually in spite of OOP, rather than a consequence of it)?

    11. Re:Logo! by robsku · · Score: 1

      I'm considering that you might have some real points here :) Still I have to say that nowdays when I decide to do OOP it is always - that is, when *I* *decide*, not when I have to do OOP because of the language design or library I need to use being written in OOP - always because I find it helps me to write easier to read, use, re-use, etc. code... Well, if I felt that there is no benefit, why would I use it? I program mostly in perl nowdays, PHP I use for web a lot (not because I like it), and it does not force OOP on me :)

      --
      In capitalist USA corporations control the government.
    12. Re:Logo! by narcc · · Score: 1

      I think you've hit on the truth behind the myth.

      Objects can be handy when used appropriately (typically that means sparingly). The trick is to avoid conflating objects with OOP.

      Of course, in this modern age, we're often forced to use objects to mimic other (formerly) common aggregate structures more appropriate to the task due to non-existent language support. It's a shame, really.

  4. Javascript by Thanshin · · Score: 5, Funny

    alert("Khaaaaaaaaaaaaan!");

    1. Re:Javascript by Anonymous Coward · · Score: 0

      your heart must not be *truly* klingon.

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

      alert("Khaaaaaaaaaaaaan!");

      Pfff, n00b! Everyone knows you should use console.log("Khaaaaaaaaaaan!"); :p

    3. Re:Javascript by FilthCatcher · · Score: 1

      thanks! I've been programming js snippets here and there since 1999 and even though I've use a decent logging framework everywhere else (log4j, log4net, slf4j commons logging, the log object in ruby/rails) im still in the habit of debugging javascript with window.alert

  5. Since when is JavaScript an unorthodox choice? by jholyhead · · Score: 1, Troll

    Everywhere I've looked for the last year, people have been using JavaScript to teach programming. Codecademy anyone?

    I personally think it's a horrible choice. If you don't know enough about computers to install Python, you probably don't know enough about computers to learn how to code.

    1. Re:Since when is JavaScript an unorthodox choice? by 0racle · · Score: 3, Insightful

      By that, no one would do anything, you weren't born knowing how to do anything. You have to start somewhere.

      --
      "I use a Mac because I'm just better than you are."
    2. Re:Since when is JavaScript an unorthodox choice? by erroneus · · Score: 1

      That's an interesting assumption; that a programmer needs to know something about computers.

      In actuality, I too believe programmers SHOULD have an A+ level of understanding of computers and networks. The problem is, many programmers simply don't. They know what they know which never ceases to amaze me as to how little that actually can be. But can they code? I guess... maybe... it's hard to for me to have respect for a coder who doesn't understand the environment beyond what they learn from books and manuals.

    3. Re:Since when is JavaScript an unorthodox choice? by drinkypoo · · Score: 5, Insightful

      I personally think it's a horrible choice. If you don't know enough about computers to install Python, you probably don't know enough about computers to learn how to code.

      That's a pretty stupid thing to say, you must really be trolling or be really dumb. I was introduced to programming with BASIC, and procedural programming with LOGO, and just look at me now, I can't code shit! *ahem* Seriously though, people were learning programming before "installing" was something you could do on your personal computer.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    4. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      I think the point is that the lessons can direct people to download Python and then proceed to teach in the language. I suspect the main issue is that Python on Windows is a bit of a kludge compared to Mac/Unix/Linux where it's usually preinstalled. At least Javascript can be run in any browser with or without server-side interaction

      I learned with good old PHP and I still love it for hacking together ideas where you don't give a crap about defining variables or single-type arrays. It taught me about database interaction and object oriented programming fairly easily. The downside is that you need a server running it, but it's really very handy if you do (e.g. XAMPP). Python is probably my next choice if I need to script something quickly and failing that I'll revert back to good old C/C++.

    5. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      My 13 year old daughter learned javascript in a text editor in a few minutes. (hello world anyone?) It's simply ignorant to say you have to install something before you can learn to code.

    6. Re:Since when is JavaScript an unorthodox choice? by NickFitz · · Score: 1

      The first computer I used was a PDP 8/e. As a result, I think that if you don't know enough about computers to enter the bootstrap in binary using the toggle switches on the front, set the program counter to the start, and hit the RUN switch to start the computer loading the language interpreter from the high-speed punched tape reader, you probably don't know enough about computers to learn how to code.

      --
      Using HTML in email is like putting sound effects on your phone calls. Just say <strong>no</strong>.
    7. Re:Since when is JavaScript an unorthodox choice? by crazycheetah · · Score: 1

      You don't need a server running your PHP code. As an experiment to prove it to someone, I've even used GTK in PHP without any server running at all. I quickly decided that in most of the cases I've ever looked at, there are significantly better choices, but it is definitely possible to use it just like any other interpreted language outside of a web server.

    8. Re:Since when is JavaScript an unorthodox choice? by Kagetsuki · · Score: 2, Interesting

      That an JavaScript is an extremely "loose" langauge with a lot of quirks. Context of "this" changing randomly? Check. Accidentally redefining functions? Check. Variable raises (AKA variables not defined yet somehow exist before their defintion)? Check. The vaguest duck typing system of any language ever? Check. Awful, awful class definition syntax? Check. Total lack of a reasonable debugging environment? Check. Almost complete lack of ability to deal with binary (or even non-text) information? Check. I mean the list goes on and on. As for a "programming" languages go it's just a horrible mess. Even with node.js it's difficult to consider it a general purpose langauge. Tell me JS is a good language for learning compiting and programming paradigims and I'll spit on you.

      As far as practicality goes? It's pretty practical. If you know JavaScript enough to use jQuery and AJAX you can do something to make money.

    9. Re:Since when is JavaScript an unorthodox choice? by dave420 · · Score: 0, Flamebait

      You not having a clue how to code JavaScript doesn't mean JavaScript is a bad language, merely that you are out of your depth with it and simply don't understand how it works.

    10. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      Depends on what you're programming to a degree.

      If you don't have an understanding of the parts of the computer/network that you're going to be interacting with while programming, I don't understand how it's even possible to make something that actually works well and consistent (unless you're lucky...).

      On the flip side, I can't think of a time that knowing about setting up web servers or other servers is going to help with the programming at all (unless you're setting up the environment where this is going to be run/tested on as well, but that leaves the scope of the programming at certain points). Knowing how to make HTTP requests and the like to interact with that web server is definitely important to the programming, but knowing how to set up this weird extension or that weird extension or whatever on different web servers isn't something that's going to largely benefit a programmer...

      Given my view on that, in my current job, I'm the IT guy and the programmer (small company so I'm all there is for either of those, and I'm also the only real customer support line), so I need to know both, because I do both. But they never really overlap at all, and tend to just get in the way of each other time-wise.

    11. Re:Since when is JavaScript an unorthodox choice? by Tsingi · · Score: 0

      I personally think it's a horrible choice. If you don't know enough about computers to install Python, you probably don't know enough about computers to learn how to code.

      That's a pretty stupid thing to say, you must really be trolling or be really dumb. I was introduced to programming with BASIC, and procedural programming with LOGO, and just look at me now, I can't code shit! *ahem* Seriously though, people were learning programming before "installing" was something you could do on your personal computer.

      Not everyone has the intrinsic to be a programmer.

    12. Re:Since when is JavaScript an unorthodox choice? by Samantha+Wright · · Score: 1

      Your signature is inspiring. Also, if you would like to relive your PDP-8 days, click here for a comprehensive re-enactment. (The part of Digital Equipment Corporation will be played by Larry Ellison for the duration of this production.)

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    13. Re:Since when is JavaScript an unorthodox choice? by TheVelvetFlamebait · · Score: 4, Insightful

      If you don't know enough about computers to install Python, you probably don't know enough about computers to learn how to code.

      Coding is not a computer skill, it's a logical skill. It's about translating abstract intentions into a well-defined precise logical language. The skill is knowing how to efficiently turn your ideas into instructions that a machine can carry out. That's why it's so transferable between platforms and languages, because it's really a skill that's independent of a computer. It would be more than possible, for example, to teach someone who's never seen a computer to write pseudocode.

      --
      You know, there is a difference between trolling and pointing out the flaws in your reasoning. Just saying.
    14. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      Not everyone has the intrinsic to be a programmer.

      And what exactly is the intrinsic to be a programmer? Hard work? If you can explain what is needed as 'intrinsic', then you can teach it. But I'll bet you can't explain what is needed, except in terms that are so vague they are meaningless.

      --
      "First they came for the slanderers and i said nothing."
    15. Re:Since when is JavaScript an unorthodox choice? by Fast+Thick+Pants · · Score: 2

      GTK in PHP is very brave, but in my experience PHP makes a very capable local scripting language. Free, open source, cross-platform, debuggable, good database support... I end up using it often, and if it weren't for perl and python I'd probably use it a lot more.

    16. Re:Since when is JavaScript an unorthodox choice? by Tsingi · · Score: 1

      Some people can draw, some people can't.

      To differing degrees this applies to most disciplines.

      And no, other than the above, I'm not prepared to write an essay on what, aside from an affinity for logic, is required to become a programmer.

    17. Re:Since when is JavaScript an unorthodox choice? by mwvdlee · · Score: 2

      Qualify "A+".

      I have a good idea of how an MMU works and I've done logic gates in hardware in the past, but I wouldn't be able to design a CPU.
      I know the difference between a token ring and bus network architecture and how to read ethernet packages by raw hex, but have no idea which IPv6 ranges are reserved for what purpose
      Are those enough for an A+ or do I need the other things?
      Because I think none of what I just described is required to be a good programmer.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    18. Re:Since when is JavaScript an unorthodox choice? by Cogita · · Score: 3, Informative

      You not having a clue how to code JavaScript doesn't mean JavaScript is a bad language, merely that you are out of your depth with it and simply don't understand how it works.

      I agree that javascript is too often spoken poorly of as a programming language, but having the addition operator not be commutative is just twitch inducing. See the Wat video, or try
      [] + {}
      {} + []
      in you're JS console.

      --
      -- "The Price of Freedom of Speech, of Press, or of Religion is that we must put up with a good deal of rubbish."
    19. Re:Since when is JavaScript an unorthodox choice? by SpzToid · · Score: 2

      Seriously though, people were learning programming before "installing" was something you could do on your personal computer.

      Oh yes! I was forced to take a freshman high school (or maybe even earlier) computer programming course that I hated and still fail to see The Point. We had to learn Fortran code and punch cards, send them away, and wait for them to be returned to us, later. Like, weeks later, or so I recall.

      You don't mind if I water that last grassy patch, do you?

      --
      You can't be ahead of the curve, if you're stuck in a loop.
    20. Re:Since when is JavaScript an unorthodox choice? by jholyhead · · Score: 1

      I'm not saying it is a 'bad' language (whatever one of those is), but it is not the best choice, or the second best choice, or the third best choice, in my opinion. As for my second statement, it might have been more accurate to say 'if you can't be bothered to work out how to install Python, you probably lack the motivation to learn how to code'.

    21. Re:Since when is JavaScript an unorthodox choice? by mrnobo1024 · · Score: 2

      If you type {} + [] into the console, it's not actually parsing as addition, it's an empty block followed by a +[] expression (unary plus operator used to convert an empty array to a number).

    22. Re:Since when is JavaScript an unorthodox choice? by JobyOne · · Score: 1

      Exactly. This is why I'm always so baffled by people who engage is massive flaming holy wars over which programming language is for idiots, and which one will instantly turn you into the techno-wizard of your dreams, no effort required.

      There's Javascript out there that is a beautiful, well thought out, well structured piece of art. There's also plenty of C, Java, Python (pick your favorite programming language and insert it here) that is an unholy cloud of inept fuckery. No amount of high tech programming language wizardry can make you produce a good result if you're a doofus to begin with, and it takes a lot of programming language fail to really hold you back if you're genuinely skilled and intelligent. The user is, at the end of the day, responsible for the outcome, not the tool.

      Obligatory car analogy: If I traded cars with a professional rally racer and then challenged them to a race, they'd probably still win because they know what the fuck they're doing.

      --
      Porquoi?
    23. Re:Since when is JavaScript an unorthodox choice? by Kagetsuki · · Score: 4, Informative

      I'm sorry, but as someone who's written way more JS than anyone should ever have to I'd like to politely ask you to shut the fuck up and stop trolling me. You could have at least brought up what points you think I'm wrong on - but I can point out solutions that were created specifically to combat each of the issues I pointed out. Hell the basic jQuery code alone deals with all of these issues AND jQuery itself was created so you could code vanilla JS without having to waste time dealing with most of them.

      Oh, and I would really recommend CoffeeScript. See how wrong you think I am after coding CoffeeScript with jQuery for a week. Don't forget to use the node.js watched compile freature - you'll get vaidation each time you save. It's fantastic.

    24. Re:Since when is JavaScript an unorthodox choice? by shutdown+-p+now · · Score: 1

      Your reply would be better if it actually dealt with the specific points that GP has conveniently listed.

    25. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 1

      Actually, people can learn almost anything they desire. They can even become very, very good at it. All that is really required is passion. The more passionate you are about being good at what you're learning, the better you're going to be at it. It's well known that ordinary people can achieve incredible things just by having the passion and drive to get them to their destination. Bill Gates of microsoft fame is just one of millions of possible examples, or Madonna of music and dance fame. I don't believe Bill Gates was an Isaac Newton or Albert Einstein, but he had such a tremendous drive to make gobs and gobs of money that he succeeded hugely. Madonna worked her ass off for long hours every day from an early age, for years, even when all she wanted to do was sleep (from what I've read - I don't know her personally, or Bill Gates for that matter.) Most poeple don't have that kind of focused drive. Most people decide early on to divide their time into other directions - children, marriage, church, community, sports, pizza, etc. But the salient point is that one can, if one chooses to do so, do amazing things and learn amazing things. It's just a personal choice. I currently teach people how to draw and paint and I can tell you that unless there is something neurologically wrong with you, that you can, indeed, become very, very good at. The only thing that can stop you is other people - or yourself - telling you that you can't.

    26. Re:Since when is JavaScript an unorthodox choice? by erroneus · · Score: 1

      Oh, I hate to resort to this, but here goes a car analogy.

      To be a driver, you don't need to know how a car works. To be a good driver, you do. To be able to take advantage of facets of driving and handling, you have to understand how the rubber meets the road and all that.

      Where programmers need knowledge of the environment they are programming for seems kind of obvious to me. But if there are programmers out there who think they don't need to know such things and "do just fine" then, rhetorically speaking, that explains a LOT about how we find ourselves in the state we are in today in software and IT.

      So "to be a programmer, you don't need to know how a computer works. To be a GOOD programmer, you do."

      Personally, I cannot understand why anyone would call themselves a programmer unless they were a good one.

    27. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      as someone who can draw rather well and makes a good living at it. Understand this, because its the same with programming:
      It's a skill that anyone can learn. Some will be better or have a better aptitude for it, but it's a learnable skill, like reading and writing.

    28. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      What I find funny is that when it comes to learning things, some people say, "You can do anything with your mind! You may be physically disabled, but the sky's the limit with your mind!"

      I just don't understand where this "you can do anything" mentality comes from. It doesn't apply to our bodies, so it wouldn't necessarily apply to our minds. If you tell me that I can learn how to draw, I'll tell you that I can't. I spent years trying, and I never did get better.

      Some people have the aptitude to do something, others don't. There are common things that almost anyone can learn, but other things likely require an aptitude that some or many people simply don't have.

    29. Re:Since when is JavaScript an unorthodox choice? by K.+S.+Kyosuke · · Score: 1

      But can they code? I guess... maybe...

      Reality check: They can't. The fact that the industry average of bugs per KLOC is somewhere around 50 clearly shows that people these days should really take lesson from Dijkstra and Wirth. These gentlemen may not be as fashionable as Linus Torvalds and DHH, but they sure knew how to teach the basic stuff.

      --
      Ezekiel 23:20
    30. Re:Since when is JavaScript an unorthodox choice? by Hognoxious · · Score: 1

      And what exactly is the intrinsic to be a programmer?

      It's similar to the fundamental that enables you tell a noun from an adjective.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    31. Re:Since when is JavaScript an unorthodox choice? by K.+S.+Kyosuke · · Score: 3, Informative

      On the flip side, I can't think of a time that knowing about setting up web servers or other servers is going to help with the programming at all

      In one presentation at Google, Dan Weinreb from ITA said that unless the code delivered to be run in production in ITA doesn't pass muster for the Ops people, the Ops department will refuse to deploy it. There must be some documentation of upgrade steps, problem diagnoses procedures etc. Simply put, the programmers must write the code with some knowledge of how the Ops people are going to run it. I imagine that other companies, at least service-providing companies with internal development, have similar guidelines for developing internal code.

      --
      Ezekiel 23:20
    32. Re:Since when is JavaScript an unorthodox choice? by devent · · Score: 1

      Why can you convert an empty array in a number anyway? That does not make any sense at all. A number is a number, an empty set is empty. All is the Khan Ac. is going to do is ruining the kids lives with JS for ever.

      JS is not a good language to learn from. It's a good language to learn what not to do. Like to silently convert an empty array in to a number.

      --
      http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
    33. Re:Since when is JavaScript an unorthodox choice? by rs79 · · Score: 1

      The skills for installing python and learning general programming only have common sense and logic in common, like they do with plumbing and car repair.

      The thing about teaching js is, you're employable right away

      Go watch the video on the yahoo tech site (or yt, titles: JavaScript: The Good Parts, JavaScript: The Good Parts - Technical Presentations) about js by Doug Crockford there's about 8 hours worth. If they don't convince you js is, along with C, the only language worth knowing, get back to me. We still haven't even scratched the surface of what js can do; node.js on the server is going to speed up a lot of things and it's still in it's infancy.

      I liked js from day one but didn't play with it much until recently - it was pretty flakey 10 years ago, One of the bottom lines of those videos is that from an academic theoretical computer linguistics point of view, js is pretty much the current state of the art, it's got the good things from all the good languages before it without any of the bad things that made stuff like c++ and java such useless bloated pigs. And it's great to mention things like scheme and erlang but job opportunities for those are, well, um, not abundant.

      --
      Need Mercedes parts ?
    34. Re:Since when is JavaScript an unorthodox choice? by rs79 · · Score: 1

      Your toggle switches worked? You shouldn't be allowed to use a PDP 8/e unless you can solder a broken switch and fix the lights. Don't forget cleaning the tape heads.

      --
      Need Mercedes parts ?
    35. Re:Since when is JavaScript an unorthodox choice? by datavirtue · · Score: 1

      golf clap

      --
      I object to power without constructive purpose. --Spock
    36. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      I agree with you a little bit. Learning to draw a landscape or a portrait, or how to program, is about as hard as learning to drive a car, or learning to read or write. (I know this is a dangerous thing to say to a forum full of the best and the brightest. ha!) None of these things require one to extrapolate string theory into the ether of a unified field theory. Not many people spend their days driving race cars for big bucks, but they drive with millions of others, bleary-eyed and coffee in hand, during rush hour traffic at sixty or seventy mph, in rain and snow, with amazingly few mishaps. But when they were fourteen years old, before they ever sat behind the steering wheel, it was pretty damned intimidating! There are people who really can't learn to drive, but not many. There are people who can't learn to write. But not many. I don't think that there are many people who could not learn to be good programmers, given the passion and drive to do so.

    37. Re:Since when is JavaScript an unorthodox choice? by AliasMarlowe · · Score: 1

      Also, if you would like to relive your PDP-8 days, click here for a comprehensive re-enactment.

      First, it was too realistic - it gave me an error with no indication of how to solve it: "PDP-8 has an error, try again tomorrow".
      Also, it was not realistic - there was no button for thumping the unit (when the power key inexplicably caused an error light) or for muttering magic incantations (required while toggling in the address of your bootstrap in preparation for hitting the RUN switch).

      --
      Those who can make you believe absurdities can make you commit atrocities. - Voltaire
    38. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      Well, I'm not sure of the exact numbers (of course), but looking at the current state of the world... I really don't think that most people would be able to wrap their heads around the logic required to be able to program well. Just my opinion.

    39. Re:Since when is JavaScript an unorthodox choice? by AliasMarlowe · · Score: 1

      Your toggle switches worked? You shouldn't be allowed to use a PDP 8/e unless you can solder a broken switch and fix the lights. Don't forget cleaning the tape heads.

      The tape reader was fairly robust; it was the paper tale which needed to be fixed occasionally, as it did not wear gracefully. We had sticky tape and a couple of hole punch things for emergency fixes. Wait, you didn't mean magnetic tape, did you? We used to dream about a magnetic tape reader...

      --
      Those who can make you believe absurdities can make you commit atrocities. - Voltaire
    40. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 1

      I think a lot of the emotion against Javascript comes from the fact that Javascript initially was a half-baked pidgin language+API that may be the worst I've ever seen, and many of us tried it in those days and then ran like hell away from it. I've heard they've changed Javascript severely and I'll take other people's word for it that it's not a gigantic pile of shit any longer, but, since I have no reason to ever use it again and my only experience with it was in the late 90s, I also can't advocate for it and can think of other languages I'd teach my kids instead. I think there are a lot of programmers in the same boat here.

    41. Re:Since when is JavaScript an unorthodox choice? by mwvdlee · · Score: 1

      And again, this time applied to your analogy. HOW MUCH do you need to know about how the car works?

      There's a lot of things you can know about how a car works and you probably write entire essays on how the rubber literally meets the road. Quite obviously you need only a microscopic part of that knowledge to be a driver, and even the best drivers in the world likely know less than one promille of everything there is to know.

      So... according to you, how deep should an understanding of computers be in order to be a good programmer?
      You talk about programmers thinking they don't need to know of "such things", but you never describe what "such things" are supposed to be.
      As with the car analogy, the vast depth and breadth of knowledge about computers far exceeds any human's capacity to fully comprehend, so it is obvious that to be a good programmer, only a subset of that knowledge is required.
      I'm not asking for a detailed report, just an example of what level you consider minimum and what level is redundant to the task of being a good programmer.
      Right now I don't know whether you are talking about being able to drag & drop files using an OS or being able to write an entire OS from scratch.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    42. Re:Since when is JavaScript an unorthodox choice? by dgatwood · · Score: 1

      Most people of at least average intelligence can learn the basics, yes. Where good programmers distinguish themselves is in their ability to look at something that already exists and figure out how it works. This not only makes it much, much easier to figure out how to fix a bug in a piece of code that you wrote five years ago, but also makes it much easier to understand how other applications were written by examining their behavior. This, in turn, makes it easier to figure out how to go quickly from a concept to a working piece of code.

      Thus, anyone can easily learn to be a code monkey. Not everyone can easily learn to be a software architect. This is an important distinction because unless your goal is to be a cog in the machine, you're going to need to design software from the ground up.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    43. Re:Since when is JavaScript an unorthodox choice? by Samantha+Wright · · Score: 1

      Yeah, that would be the consequences of substituting Oracle for DEC.

      Q: How does a field engineer replace a flat?
      A: By switching tires out one at a time until the car can drive smoothly again.

      Q: How does a field engineer refill a gas tank?
      A: By switching tires out one at a time until the car can drive smoothly again.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    44. Re:Since when is JavaScript an unorthodox choice? by Half-pint+HAL · · Score: 1

      I think the problem here isn't so much Python as Khan Academy. The initial time to download and set up Python is fairly low, and getting an IDE makes it far easier in the long run than using editor+webpage. Anyway, they should be directing students to install a code editor -- intro to programming without syntax highlighting? No thanks!

      Anyway, if you have a look at Khan Academy, they already have computing lessons online, and they are... >drumroll>... Python! So why this switch? Well, the Python videos are rubbish. I can follow them, because I know a reasonable amount of C. But the introduction of lists is too abrupt. The problem of list variables as pointers vs normal variables (argh! I've forgotten what you call them!) is made more confusing by not being adequately explained. The calculation in the first video is unnecessarily complicated so you can't really see what it's doing. I can understand it, but I know I wouldn't have if I was a beginner. It's a bit of a train wreck.

      But that's obviously because it's Python, so they just need to start again with the magic "correct language"....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    45. Re:Since when is JavaScript an unorthodox choice? by Half-pint+HAL · · Score: 1

      Chicken and egg. I think if we taught more people the logic required to be able to program well, there would be less* thickos in the world.

      * Before some smart-arse says it, yes, I know, at your posh school you were taught to say "fewer". That doesn't make the word "less" wrong, or a sign of lower intelligence.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    46. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      Oh, and I would really recommend CoffeeScript. See how wrong you think I am after coding CoffeeScript with jQuery for a week. Don't forget to use the node.js watched compile freature - you'll get vaidation each time you save. It's fantastic.

      Thank you very much for these recommendations! How is it with YUI 2 or YUI 3 instead of jQuery?

    47. Re:Since when is JavaScript an unorthodox choice? by rs79 · · Score: 1

      I'm very proud of the fact that although I may have used punched cards and magtape but I never use those wretched paper (or DEC) tape things. Yick.

      --
      Need Mercedes parts ?
    48. Re:Since when is JavaScript an unorthodox choice? by Half-pint+HAL · · Score: 1

      As long as the Khan Academy doesn't start casting empty sets to numbers and sticks to a few for loops and string manipulations, what's the problem?

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    49. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      I think if we taught more people the logic required to be able to program well, there would be less* thickos in the world.

      I'm saying I don't think they're intelligent enough in the first place. I'm sure most people can learn the absolute basics, but I don't believe they're cut out to be good programmers (not just "code monkeys").

      Doesn't mean it's not worth trying. I'd enjoy being proven wrong.

    50. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      Not if the car he now uses has square wheels, no.

    51. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      A certain Betty Edwards would strongly disagree with your first point. People may be naturally geared towards certain vocations, but in many cases that doesn't mean they can't re-focus and be very good at something else.

    52. Re:Since when is JavaScript an unorthodox choice? by Hognoxious · · Score: 1

      Logically valid, but you pointing that out doesn't mean it's a good language.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    53. Re:Since when is JavaScript an unorthodox choice? by asliarun · · Score: 1

      Oh, I hate to resort to this, but here goes a car analogy.

      To be a driver, you don't need to know how a car works. To be a good driver, you do. To be able to take advantage of facets of driving and handling, you have to understand how the rubber meets the road and all that.

      Actually, I would argue that your analogy is incorrect. To be a good driver, you need to know:
      a. how to control your car really well under different conditions
      b. and you need to know the rules of the road really well

      You really don't need to know how your car works, at least not in great detail. Meaning, you need to know how to fill gas and do basic maintenance, but you really don't need to know what's under the bonnett.

      The reason I am getting a bit pedantic on this is to point out the fact that in today's age, it is more important for a newbie to know how browsers work, how internet protocols work, how the internet is structured and how information flows in general. It is becoming less important to know how your computer internals work. The internals have been commoditized to the extent that it is unnecessary to know how your microprocessor and your motherboard works, just as you don't need to know how your phone works in order to make a call or even to do something complex like manage your address book in your phone.

    54. Re:Since when is JavaScript an unorthodox choice? by NickFitz · · Score: 1

      Paper tape had its uses: it came in a variety of colours. When I was 14 I decorated my bedroom with streamers for Christmas using nothing more than early versions of my programs for matrix multiplication and plotting ASCII graphs on a Teletype :-)

      --
      Using HTML in email is like putting sound effects on your phone calls. Just say <strong>no</strong>.
    55. Re:Since when is JavaScript an unorthodox choice? by Kagetsuki · · Score: 1

      You know I've never actually used YUI so I can't really say, but it should work pretty well. Part of what makes jQuery with Coffee so great is how -> and => work and how you can chain with jQuery (because the context is always returned). If you use the two efficiently you can write amazingly conscise code and get a rediculous amount of things done in just a few lines.

      I glanced at some YUI 3 samples and I don't immediately see anything that would come out weird - but a quick google search makes it brutally apparent not so many people are using the two in conjunction (whereas using it with jQuery is common). In the end it all compiles into JavaScript anyway so it's not like there would be anything you couldn't do it in - and even if there were you can use inline JS.

      If you are trying it out and need some help there's an IRC channel on freenode.

    56. Re:Since when is JavaScript an unorthodox choice? by Half-pint+HAL · · Score: 1

      Doesn't mean it's not worth trying. I'd enjoy being proven wrong.

      I'm pretty convinced it is possible, but I don't think the Khan Academy are the people who are going to prove you wrong, sadly.

      The existing Python videos don't bode well for the Khan model as a computer tutorial method....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    57. Re:Since when is JavaScript an unorthodox choice? by Kagetsuki · · Score: 1

      I don't think it's more of JS being a questionable solution to the problem. Particularly there are concepts that should be dealt with when learning to program that JS just doesn't do well. I wouldn't want to teach people how to deal with binary data in JS for example (a problem I've had to deal with before in JS and let me tell you it isn't pretty). As far as practicality goes it does seem like a good choice - and as long as the course isn't aiming to make people into programmers but rather just give them the skills to do a few neat things real quickly it's probably a good choice.

    58. Re:Since when is JavaScript an unorthodox choice? by Kagetsuki · · Score: 1

      Oh man that post was a disaster. It looks like I'm illiterate. I should have paid more attention and actually previewed.
      *I don't think -> I think
      *it does seem like a good choice -> ""

      And yes English is not my primary language.

    59. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      But when the addition operator is overloaded to work on something like strings, you don't really want it to commute.

      e.g. "Hello " + "world" should not evaluate the same as "world" + "Hello ".

    60. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      What skill do you think it takes to become an architect that most people don't have?

      --
      "First they came for the slanderers and i said nothing."
    61. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      I just don't understand where this "you can do anything" mentality comes from. It doesn't apply to our bodies, so it wouldn't necessarily apply to our minds.

      Most average people never come close to reaching the full potential of their mind, just like most people never reach the full potential of their body.

      Assume you have a healthy, average body. The average human cannot run a marathon, but this is because of lack of work, not because their body doesn't have the capability. Similarly, with the brain, if you work on it, you can do a lot more than the average untrained brain.

      Of course not every body is capable of running a 2:10 marathon, similarly not every brain may not be capable of playing 30 blindfolded simultaneous chess games. But pushing your brain far beyond the default isn't too hard.

      If you tell me that I can learn how to draw, I'll tell you that I can't. I spent years trying, and I never did get better.

      You're not giving us much to go on here, except that you've given up drawing. Most likely there was one thing you failed to do. In all your practicing, you never did it, and it was the one thing preventing you from learning to draw. Possibly there was more than one thing. It's not clear what your problem is from your description, but.....

      As an example of what might be the problem, consider your method of holding the pencil. If you hold the pencil wrong, you will never be able to draw a smooth line. It doesn't matter how much a person practices, if they are holding the pencil wrong, they will always run into trouble. It will block them, even if they practice for thousands of hours. You have a similar thing blocking you, or maybe two things. You need to figure out what it is, and eliminate it.

      --
      "First they came for the slanderers and i said nothing."
    62. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      Some people can draw, some people can't.

      I don't know why you think this. I don't think there are many good art teachers who disagree with Betty Edwards when she said, "drawing is a skill that can be learned by every normal person with average eyesight and average eye-hand coordination."

      I'm not prepared to write an essay on what, aside from an affinity for logic, is required to become a programmer.

      It's not like programming is hard, even kids do it.

      --
      "First they came for the slanderers and i said nothing."
    63. Re:Since when is JavaScript an unorthodox choice? by dgatwood · · Score: 1

      Who said anything about skills? Skills are something learnable. When it comes to computer architecture, there are fundamental differences between people who are good at it and people who aren't. Those differences are difficult to overcome.

      Good code architects see a tool and immediately can describe how it works. There's no thought process, no practiced skill; they simply see the complete system and instinctively know approximately what the parts are that must make it up. That initial transition from nothing to a rough architecture occurs in a single quantum leap, or at most, a handful of quantum leaps for distinct, separable parts of the architecture. Some people can make that leap, some can't. If you can't, no amount of studying the whole and the parts that make it up is likely to change that. You're either naturally curious or you aren't.

      There is a second aspect to architecture, of course, which is the refining stage. As you figure out additional requirements/features, the architecture must be adjusted to support it. That part is a skill that can be significantly improved with practice. Similarly, reasoning through what sorts of additional features you might want to add in the future is a skill that improves with practice. However, you must be able to imagine the first approximation before it is possible to refine it. And even if your job is to poke holes in somebody else's design, you're either naturally skeptical and cynical or you aren't. You either tend to look for flaws or you don't. Someone who doesn't naturally look for flaws is unlikely to be good at refining other people's architectural designs.

      IMO, a good way (or at least a good first approximation of a way) to determine whether you'll be a good software architect is to buy pretty much any piece of furniture from IKEA. If you can't assemble it at all without reading the directions, you probably won't be a good software architect. That's not saying that you shouldn't read the directions to avoid making painful mistakes (splitting the veneer by using a screw that's too long, for example), but you should be able to closely approximate a correct result without looking at them. You should be able to see the parts and "just know" approximately how most of the parts (at least the bigger ones) fit together to form the whole.

      Also, although it's okay to get pissed off when the directions don't clearly distinguish between similar parts, a good architect tends to be unafraid to try it one way and see if it works, then try it the other way if it doesn't (but does so with some care to avoid actively causing harm). If you constantly live in fear of breaking something, you'll never be a good software architect; you can't realistically learn without making lots of mistakes. More to the point, the best way to learn is to deliberately break things and see how they break. It is possible to overcome such psychological inhibitions, but it isn't easy.

      To be fair, many of the limitations I'm talking about here could conceivably be overcome with years of study, but it makes more sense to steer people who are innately talented in those areas towards jobs that maximize their potential rather than trying to shoehorn someone into a position that will be a constant struggle.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    64. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      but it makes more sense to steer people who are innately talented in those areas towards jobs that maximize their potential rather than trying to shoehorn someone into a position that will be a constant struggle.

      I couldn't agree more. However, if someone is willing to go through that struggle, there is no reason to make it more difficult by telling them it's impossible.

      --
      "First they came for the slanderers and i said nothing."
    65. Re:Since when is JavaScript an unorthodox choice? by Hermanas · · Score: 1

      For those who are wondering, there's a great explanation of that "[] + {}" and "{} + []" question based on the ECMA-standards on StackOverflow.

    66. Re:Since when is JavaScript an unorthodox choice? by Brian+Feldman · · Score: 1

      Know the rules of the road? No, you need to know how other drivers tend to act and react, regardless of the "rules." Same with police -- speed, be conscientious, and you won't get tickets often.

      --
      Brian Fundakowski Feldman
    67. Re:Since when is JavaScript an unorthodox choice? by Brian+Feldman · · Score: 1

      It's not like programming is hard, even kids do it.

      Right, and even adults do it very poorly.

      --
      Brian Fundakowski Feldman
    68. Re:Since when is JavaScript an unorthodox choice? by Brian+Feldman · · Score: 1

      Because JavaScript uses + and - as shortcuts for typecasting into numbers. There need be no other reason.

      --
      Brian Fundakowski Feldman
    69. Re:Since when is JavaScript an unorthodox choice? by Brian+Feldman · · Score: 1

      You're a troll. The "this" pointer doesn't change randomly -- the rules are very well-defined, but weird, and for this reason (hah) use of "this" should be avoided wherever possible. ECMAScript Harmony is attempting to fix these kinds of mistakes in the language definition, so in the future, JS will be cleaner. However, in the now, you simply don't know what the hell you're doing if you're trying to do "OO" in JS instead of functional programming. Go learn Ruby or Python or Lisp or Haskell and then come back and maybe you will start to structure your JS properly.

      --
      Brian Fundakowski Feldman
    70. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      Without exception.

      --
      "First they came for the slanderers and i said nothing."
    71. Re:Since when is JavaScript an unorthodox choice? by Electricity+Likes+Me · · Score: 1

      Python is still a pretty "messy" development environment IMO.

      It's insistence on centralizing things into site-packages and the like does not make it very user friendly for the beginner (and packaging Python apps is frustrating).

      Javascript has the big benefit that 90% of the functionality is built right into the web browser someone would be using for the Kahn academy. The syntax has plenty of cross-over with more low level languages and you don't spend forever figuring out basic string handling. Probably more importantly - it's what drives all the "cool stuff" on the web. It has the massive benefit that once you start teaching it, people can see something neat and hit "Inspect" in their browser and look at how it was done (once you run the minified code through a formatter of course).

    72. Re:Since when is JavaScript an unorthodox choice? by devent · · Score: 1

      You have not answering my question. My question was: why can you cast an empty set to a number? If you still don't get it, here is what I would expect. I would expect that the JS parser will give me a nice error like: "Cannot cast an empty set to a number, because it does not make sense."

      --
      http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
    73. Re:Since when is JavaScript an unorthodox choice? by Kagetsuki · · Score: 1

      I'm coding Ruby and CoffeeScript at this very moment and I know Python and Haskell (never learned Lisp). I've seen "this" context change differently on different browsers before so rules or not it's behavior is unpredictable, so I consider it's behavior to be random and take precautions. Avoiding "this" is often not an option and trying to use it as little as possible is a waste of time. This is why so many people do things like have the first line of their script assing the entrant context of "this" to a different variable and also why => in CoffeeScipt is nice.

      Sorry I didn't write a dissertation validating each of the points I made. I also don't see how you can call me a troll and then basically validate my point.

    74. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      Addition is not defined mathematically to be commutative. Addition of numbers is commutative. "Well that's the same thing!!!" No, it seems like it in math, where addition is taught as an universal operator which has one very defined implimentation in lower grades, but really you have to define both the operator and what it operates on. In programming you do this by having plus(int, int) having a definition and such. An array is not a number and an object is not a number, so there is no mathematical argument for the fact that they should obay commutation. In object oriented programming, you would most likely have objects owning the operator, so then the question becomes whether + is right assosiative or left assosiative as to which object of the two owns the plus operator. And then ofcause you have to ask whether the owner of the operator knows how to handle the situation (does array+ have a defnition for array+object?), and throw a type error if it doesn't.

      Basically, your basic assumption that + is always commutative is just wrong. It's like assuming that multiplication should be commutative, which is not true for matrices.

    75. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      You need to figure out what it is, and eliminate it.

      I'm 99% sure there was nothing. I simply don't believe that I can draw even if I tried. No imagination at all.

    76. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      I simply don't believe that I can draw even if I tried.

      As in, spent years trying to draw again.

    77. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      Really? I didn't watch them. What exactly is wrong with them?

    78. Re:Since when is JavaScript an unorthodox choice? by erroneus · · Score: 1

      I think our definitions of "good programmer" differ.

      To me, writing good code is to account for every problem that might occur along the way while execution proceeds. This can't be done without a proper understanding of how the environment works and many variables at play at any given moment. As in the case of driving, knowing how things work enables a programmer to anticipate the bad things coming and will know how best to handle them.

      Every time we see another commercial application vulnerability report showing a bad programmer not anticipating the environment and enabling exploits of the most common variety, it's just further indication of where things are really going wrong.

      If you think, though, that computer technology is too vast for any one person to know and understand, then I think ... well, let's not go into what I think exactly. Let's just say that perhaps anyone who feels that way isn't really suited to the career as much as the TV commercials would like to tell you otherwise when they are selling you "a new career in computers."

    79. Re:Since when is JavaScript an unorthodox choice? by mwvdlee · · Score: 1

      If you think, though, that computer technology is too vast for any one person to know and understand, then I think ... well, let's not go into what I think exactly. Let's just say that perhaps anyone who feels that way isn't really suited to the career as much as the TV commercials would like to tell you otherwise when they are selling you "a new career in computers."

      So you're able to melt silicium into wafers, etch a i64-compatible CPU of your own design on it, connect it with your very own harddisk-like device on your homemade MLB, write the OS, libraries and GUI for it then proceed to program a AAA-quality game engine and play the resultant game on your handcrafted display device?

      Even if you were able to do all of the above, you're still nowhere near to having a complete understanding of computer technology. Nowhere near by a longshot.

      In my experience, somebody who thinks he knows a lot usually doesn't even understand how much more there is to know.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    80. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      drawing is a skill, nothing more nothing less. it can be taught, much like programming. Not everyone will have what it takes to create a masterpiece, but anyone who learns even a smidgen of how to draw or code will have their lives improved dramatically.

    81. Re:Since when is JavaScript an unorthodox choice? by b4dc0d3r · · Score: 1

      You don't know enough to learn to code, but you probably do know enough to be taught to code.

      You are missing this important distinction. I will rephrase my other post. If you want to *teach* programming, you will start out with something simple and common, and preferably useful. The intended audience already has a browser, there's very little GUI fiddling, and it's a lot like the C/C++/C# that everyone will see someday.

      If you want to offer students an environment to *learn* programming, an entirely different approach is needed. Give them rope, let them hang themselves, let them make all of the nasty mistakes and learn *why* we do the things we do.

      These are two entirely different situations, and Khan is only considering one.

    82. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      No imagination? What does imagination even have to do with drawing? You need to be able to see, not imagine (unless you want to draw imaginary things, obviously).

      --
      "First they came for the slanderers and i said nothing."
    83. Re:Since when is JavaScript an unorthodox choice? by b4dc0d3r · · Score: 1

      You are vastly simplifying. I spent 4 years in a great college learning how to do something. I work in an entirely unrelated field now. I was very good at what I did, but I could not break over the wall to be great.

      A person who can't play his way out of a paper hat is currently teaching, having all of the benefits of 4 years of a good college music program and a great teacher. He is, perhaps in theory, capable of playing better, but in reality that never happened. Even with someone showing him once a week how to hold the pencil.

      I know what I would have had to do to be great. It would have taken every waking minute of my life to understand, do things wrong, do things other ways, talk to many different people, immerse myself in the art.

      I did not do this because I do not have what it takes to be great. What does it take? The dedication to immerse yourself in it, completely. I spent 5 years being told what I was doing wrong and still couldn't get it right. When I turned to programming, it just made sense. No learning, no being taught, just absorbing everything and everything, and being able to do it. It came naturally. I have "what it takes" to be great.

      Now, you can argue that everyone in theory has what it takes to be an author, a poet, an artist, an engineer, a mathematician. I argue that practically, very few people do, and almost nobody has what it takes to be all of the above.

      You have to include personality and circumstance when you discuss ability. "What it takes" is going to be different for everyone, and you are not going to be able to pull that out of everyone. I m not capable of drawing because I don't have what it takes. Maybe that means someone to show me how to hold a pencil - I don't have that. I also don't have an instinctive desire to draw everything I see, or everything that flits into my mind. I do not have the foundation needed for being capable of drawing even to the point of winning a game of Pictionary. I will not be a professional artist or musician or engineer. I will not be fluent in 3 languages.

      I am missing far more than just the "potential" to be anything but a programmer, unless unemployment heads my way and I find something else I'm more interested in, and can spend time on, and can immerse myself in. Your theories are nice until they hit the practical world with its inherent constraints and this little annoyance called reality.

      Most average people do not have the confluence of interest, support, resources, and all of the other little things necessary to be able to do something, even if they super duper really want to be able to. Take anyone who can't draw, go back in time and raise them in a house of artists, inject a curiosity about drawing, and they *may* learn how to draw reasonably well. Enroll them in classes at an early age, and they may be one day good. But if they don't catch that spark, even all of those advantages will be lost.

      "Everyone can do it" is theory, not reality, and that comes from 6 years of teaching, 7 years of actively observing, all with the opposite understanding. Reality ate into my optimism, and I left the profession. With boundless time, and a chance to reach every child like in "Stand and Deliver" and make that spark happen, maybe it's possible. But students are not going to find the spark on their own, even if they really want to.

    84. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      Well, I mean that I can't picture things in my head. Random images flash into it and I can never get a clear picture. That and I just don't have the skill in the first place since my hands are always shaking when trying to concentrate and the drawing simply never comes out.

    85. Re:Since when is JavaScript an unorthodox choice? by b4dc0d3r · · Score: 1

      False dichotomy. You don't tell someone it's impossible, you suggest what they might be better at. One of my peers in college was told she should change majors. Oh, how she was angry at that. But honestly, after two years no one was convinced she could continue an be any good. It was a valid suggestion.

      The same person told me I should maybe look into computing. I scoffed at the idea, mainly because I was committed to graduating on time and had taken 22 hours each semester making that happen. Had I thought about it, that would have been the best choice I could have taken.

      I have no formal education, I know what I know because I want to know how computers work. BASIC's peek/poke, disassembly, reverse engineering, cracking, polymorphism in C... I know a lot of stuff they don't teach in school because I have that fire to learn. Someone is going to crap on my post because I don't know the basics, but that's my point - I know the basics and more, I just wasn't taught formally. I read the same books, not because I had to, but because I wanted to.

      The best thing to happen to me would have been to be told explicitly to change majors, that it would be impossible to be as successful where I used to be. There is no reason to struggle when an easier path is available.

    86. Re:Since when is JavaScript an unorthodox choice? by erroneus · · Score: 1

      Heh... I love the ad absurdum argument you've made. It so happens I have a good understanding of semiconductors and a working knowledge of electrical and electronic systems. I also happen to have a working knowledge of building electronic systems for very simple processing thanks to my experience and training in the US Navy. (I miss that cute com-tran-10...) I have a working knowledge of assembly and machine language on motorola 6502, 6809 and 68000 series and a fair understanding of the same on x86 and up. With all of that as a foundation, I have a deep understanding of how things work in general terms which is sufficient to fill in the blanks when I need further details.

      But it also so happens that my father worked for Texas Instruments when the methods of chip manufacture were being created and have experienced it first-hand when I was a child.

      I know what I don't know. You're making some pretty silly assumptions. It's like saying "no one could read a book THAT big!" Yeah they can... and people do. There are people who know lots more than I do. It's great. But that's far and away not the point I am making.

      The point is that people who program very often have no clue that computers aren't "object oriented." They don't have a respect for or understanding that these high-level additions to programming have hidden problems and issues which they are completely incapable of isolating or debugging let alone seek to avoid. How many times have we seen a vulnerability found in a commonly used library? I've seen that a lot. It takes a _good_programmer_ to be able to find the source of such bugs. And to be able to do that requires knowledge the paper-chasing, black-box using programmers out there don't have and will likely never have.

      The very idea that someone might require access to manufacturing facilities and technologies is absurd. What's more, you know it's absurd. But somehow you think it's a great tool for an argument. It makes me worry though... if you are an indication of the mindset of the masses of coders out there, coding their black boxes and simply expecting things to work as you think they should... it's how Microsoft earned its stellar reputation for stability, speed and reliability.

    87. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      Oh, first draw things by looking at them, then you don't have to picture them in your head, you can just look at them.

      The shaking hand problem can have a few different causes, so (if you actually cared) I would suggest trying different things until something works. Make sure you are holding the pen correctly (it's a pain, especially since your drawing gets worse at first, but then the rapid progress you make after you start getting the hang of it makes it all worth it. Note also there is no 100% correct way to hold the pen, but there are ways to hold it that will make it very difficult to draw a good line). If you are shaking because you are too tense, or too nervous, your primary focus should be relaxing. Don't worry about whether your drawing looks good or not, focus entirely on being relaxed. Once you start getting the hang of being relaxed, move to the next step of being relaxed AND drawing smooth lines. Don't worry about if the lines are where you want them, just make them smooth. If you find yourself being tense while you draw, stop focusing on drawing smooth lines, and go back to focusing on being relaxed. Do yoga if you have to.

      A good order to learn art is Line, Value (dark/light contrast), Color, then Painting (if you desire to use paint).

      --
      "First they came for the slanderers and i said nothing."
    88. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      I was very good at what I did, but I could not break over the wall to be great.

      See, this is the part I don't get. You didn't break over the wall to be great, and then you jump to the conclusion that you couldn't break over that wall. An equally, if not more reasonable conclusion is that you didn't know how to break over the wall (break through the wall?). Why do you favor one conclusion over the other?

      I spent 5 years being told what I was doing wrong and still couldn't get it right.

      Why couldn't you get it right? Another way of looking at it is to say your teachers were horrible, they couldn't teach you something simple in five years (note: if you were studying music, your teachers were almost assuredly horrible).

      --
      "First they came for the slanderers and i said nothing."
    89. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      Oh, first draw things by looking at them, then you don't have to picture them in your head, you can just look at them.

      Which is what I'd normally do. But that can't be done if what you're trying to draw only exists in your own mind.

      I tried many things. I just don't think I'm cut out to draw. The shaking hands problem wasn't the only problem. I'm just awful at it altogether.

    90. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      I tried many things.

      *shrug* the wrong things.

      Vision in drawing is composed of four things.

      1) The perception of edges.
      2) The perception of spaces
      3) The perception of relationships
      4) The perception of lights and shadows
      5) The perception of the whole (gestalt)

      That's all. These are the perceptual skills you need to draw things.

      --
      "First they came for the slanderers and i said nothing."
    91. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      *shrug* the wrong things.

      I see that you asked in another comment, "Why do you favor one conclusion over the other?" How is it that you're so certain that I'd be able to draw if I wasted years (already seven were pointlessly wasted before I gave up) trying to get better?

    92. Re:Since when is JavaScript an unorthodox choice? by mwvdlee · · Score: 1

      You failed to understand the simple, normal question I asked a few posts ago, then complain when I try to clarify the question by exaggerating. Good luck with being a "good programmer".

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    93. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      No amount of high tech programming language wizardry can make you produce a good result if you're a doofus to begin with, and it takes a lot of programming language fail to really hold you back if you're genuinely skilled and intelligent.

      I think we can all safely agree that VBA is a whole lot of programming language fail.

    94. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      Easy enough, because the skills required for drawing are not great, exceptional talents, they are fairly simple things that normal people can develop. I assume you are not brain-damaged, and you've given me no reason to think that you are. If you've had a large chunk of your brain removed, I apologize for your great misfortune.

      --
      "First they came for the slanderers and i said nothing."
    95. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      Easy enough, because the skills required for drawing are not great, exceptional talents

      So you say. But it's a bit hard to prove when a majority of people haven't started learning to draw.

      that normal people can develop

      Which doesn't mean everyone.

    96. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      So you say. But it's a bit hard to prove when a majority of people haven't started learning to draw.

      Uh, you're starting to say stupid things, which I hope you wouldn't under normal circumstances. Otherwise you might need to read this, before you say even stupider things.

      I mean, if only we had scientific, statistical methods for determining traits of a population, without actually investigating every individual of the population. If we had such a thing, what would we call it? Maybe, random sampling?

      --
      "First they came for the slanderers and i said nothing."
    97. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      BASIC's peek/poke......I don't know the basics

      Apparently you DO know the basics!

      I know a lot of stuff they don't teach in school because I have that fire to learn. Someone is going to crap on my post because I don't know the basics, but that's my point - I know the basics and more, I just wasn't taught formally. I read the same books, not because I had to, but because I wanted to.

      Yes, desire to learn is often the most important distinguishing factor in how well someone learns something.

      --
      "First they came for the slanderers and i said nothing."
    98. Re:Since when is JavaScript an unorthodox choice? by GmExtremacy · · Score: 1

      Uh, you're starting to say stupid things

      That's people that disagree with you for you. They always seem to say stupid things.

      I mean, if only we had scientific, statistical methods for determining traits of a population, without actually investigating every individual of the population. If we had such a thing, what would we call it? Maybe, random sampling?

      Doesn't really prove that it's true for everyone, or even a majority (unless they sampled a majority). It might make the idea seem more probable (which is kind of the point), but that is all. For some things it would work well; for this, perhaps not so much. Are they going to collect a random assortment of people who have no talent or interest in drawing and then try to get them to spend time learning to draw? Possible.

      But as I said, even if you proved it was true that most people have those abilities, that wouldn't mean it would apply to me. And that's just for art.

    99. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      Doesn't really prove that it's true for everyone, or even a majority (unless they sampled a majority). It might make the idea seem more probable (which is kind of the point), but that is all.

      Clearly you should stop worrying about art, and go take a statistics class. Your ignorance here is worrysome.

      --
      "First they came for the slanderers and i said nothing."
    100. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      You called me ignorant without explaining anything or even trying to further inquire about what I meant to confirm any suspicions you may have had; I'm completely defeated now!

    101. Re:Since when is JavaScript an unorthodox choice? by phantomfive · · Score: 1

      Conversation isn't a contest.

      You lose because you don't know how to draw.
      I win if you learned something. I also win if I learn something.

      --
      "First they came for the slanderers and i said nothing."
    102. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      Conversation isn't a contest.

      Is that what I said? Is that what I meant?

    103. Re:Since when is JavaScript an unorthodox choice? by Anonymous Coward · · Score: 0

      My university 1st year Computer Science programming course (1991) was taught by a 50 year old arts graduate who claimed to have never touched a computer.

      Unfortunately all of his students already "knew" how to program in at least one language.

      This student profited from his course by learning how to write such good pseudocode that he never needed to learn any other language ever again.

    104. Re:Since when is JavaScript an unorthodox choice? by Half-pint+HAL · · Score: 1

      He starts off far too technical, rather than building up from practical points. Why is he telling us about the "type" function in the first video? Seemingly he's trying to teach the concept of variable typing, but I understand that because I already know it. But for the beginner, this is a pretty random, arbitrary piece of information. There's no clear motivation to any of the stuff he does. Take this second program:

      a = 3 + 5
      b = a * a - a - 1
      c = a * b
      print(c)

      It's a rather opaque and confusing calculation, and it's overly complicated when you're trying to verify the result. Plus he does this without mentioning order-of-precedence (I'm assuming Python follows mathematical standard oop, but he doesn't say one way or the other).

      Lesson 2 is on lists and he points out the "gotcha" of list variable assignment, but he does so without really getting to the meat of it. If you're not familiar with Python, basically an list (array) variable is a pointer, so assigning "a = b" doesn't duplicate the list, it only gives it a second reference. But it's a very clunky explanation.

      In essence, I don't think Sal really understands computer programming well enough to produce a well-structured course.

      I also think Sal's sacrificing quality for quantity, churning out lessons without properly testing them with a trial audience and tweaking to deal with student problems. When you're getting thousands of people watching each video, there is a lot of value in doing a little more prep....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  6. Gee... by MobileTatsu-NJG · · Score: 0

    I bet somebody says 'khaaaan', but uses the word 'obligatory' in a vain attempt to excuse its lack of funny.

    --

    "I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)

    1. Re:Gee... by Anonymous Coward · · Score: 0

      You.

    2. Re:Gee... by Samantha+Wright · · Score: 1

      Personally, I'm waiting for the obligatory xkcd so I can really start grinding my teeth. It will presumably be posted in one of the side-conversations about Python, since there isn't really a strong one about Javascript.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
  7. Sane choice by acak · · Score: 2, Insightful

    This move should be vindicated in the near future. But I do have some qualms:

    - Appreciating data-types, their limitations and the perils of using casting them incorrectly helped me a lot in understanding about things I need to be careful about

    - Are they going skip the concept of Pointers ? It's not wise to use them unless necessary but to be aware of the concept was very rewarding for me

    - How will they teach multi-threaded programming? We're not quite there yet in JS.

    ... (insert other features here)

    If they switch to another language to teach stuff which JS doesn't support, they might lose their audience and so blind side a large set of them.

    1. Re:Sane choice by tedgyz · · Score: 5, Insightful

      Since when do you teach complex casts and threading in an intro course? For crying out loud, I know engineers with 5+ years experience that still don't fully grok multi-threaded issues.

      --
      "No matter where you go, there you are." -- Buckaroo Banzai
    2. Re:Sane choice by Bonker · · Score: 1

      - Appreciating data-types, their limitations and the perils of using casting them incorrectly helped me a lot in understanding about things I need to be careful about

      This is a fairly serious issue, but one that can be brought up after the basics of computer programming have been instilled. Most languages are either loosely typed, duck-typed, or have robust conversion features these days. Kids who learn to mangle a string in Javascript will pick up quickly on 'You have to use a 'to_str' method in some other languages'.

      The place where this will really catch them is math... but again there are robust solutions in almost all languages.

      - Are they going skip the concept of Pointers ? It's not wise to use them unless necessary but to be aware of the concept was very rewarding for me

      Pointers in anything other than the very lowest-level-touching-the-metal code are an abomination. They cause far more confusion and grief than they ever help. Yes, there are situations in which the best way to address a problem is to pass a pointer around. However, in this day and age of multi-gigabyte ram sticks, I'd rather bloat up a program's ram usage with maybe unnecessary copies of large objects than dick around with pointers.

      - How will they teach multi-threaded programming? We're not quite there yet in JS.

      Threading and thread safety are not really beginner concepts, nor are they really required for the majority of code work in the real world.

      However, JS approaches the issue obliquely by being bolted onto the threading model of the underlying interpreter. In a browser, which is probably what most of these kids will be learning on, you have to worry about concurrency of the browser instance. If I run a script in this named window, is it going to affect anything in that named window? No, that's not really threading, but it's the same mental concept.

      Likewise, beginners are not going to be writing their own output handlers, which is the obvious usage for threading. The advanced ones are going to be playing with painting on HTML5 canvas elements while maybe playing sounds at the same time. They'll be using the browser's already threaded output for those functions.

      --
      The next Slashdot story will be ready soon, but subscribers can beat the rush and slashdot the links early!
    3. Re:Sane choice by capnchicken · · Score: 3, Interesting

      Well this is going to fuck up a previously up modded comment here, but I had threading and sockets in my Intro to Java course freshman year of college and am very glad I did. Not sure what is so complex about type casting in a statically typed language, its fairly necessary. You don't fully understand them there either, but that only comes with experience anyway.

      On the other hand it was an advanced intro course, and I already spent a lot of time screwing around in Q-Basic in high school, in which had done none of those things. But the non-advanced intro class still had threading and sockets and what not, they just waited until the second semester to introduce them.

      --
      A libertarian shat on my carpet once. Claimed the free market would sort it out. -Ford Prefect(8777)
    4. Re:Sane choice by CubicleView · · Score: 1

      I grok the hell out of those multi-threaded issues... we're talking about /.'s layout yeah?

    5. Re:Sane choice by dougmc · · Score: 4, Interesting

      - Appreciating data-types, their limitations and the perils of using casting them incorrectly helped me a lot in understanding about things I need to be careful about
      - Are they going skip the concept of Pointers ? It's not wise to use them unless necessary but to be aware of the concept was very rewarding for me
      - How will they teach multi-threaded programming? We're not quite there yet in JS.

      Your first language doesn't have to support every programming feature. BASIC certainly didn't support any of these (except data-types to a very, very minor degree) and many of us did fine with it. While data types are important at the beginning to do anything in many languages, we don't really teach pointers or threads (if a language even supports them) until later, so I don't see this as a big problem here.

      I'd say for the purposes of Khan Academy, they need something easy that will keep people's attention (as it's mostly aimed at youth who have no real obligation to keep on paying attention unless it's interesting) ... and so, given it's graphical nature, this sounds like a good choice. Their second language can be more fully featured.

    6. Re:Sane choice by tlhIngan · · Score: 1

      This is a fairly serious issue, but one that can be brought up after the basics of computer programming have been instilled. Most languages are either loosely typed, duck-typed, or have robust conversion features these days. Kids who learn to mangle a string in Javascript will pick up quickly on 'You have to use a 'to_str' method in some other languages'.

      If only that were the case - you start seeing a lot of reimplements of functions like "to_str()" and the inverse (strtoi/strtoul/etc) because what was transparent to them before, suddenly they can't do it and don't realize it's a library function. So they promptly end up rewriting those functions and it ends up carried along to finally end up on The Daily WTF.

      Or worse, you just fuel the language wars... "Javascrpit is cool - Java/C#/C/C++ all suck because it's so hard to take a string and treat it as a number so you can add to it. You have to do write functions to do it for you".

    7. Re:Sane choice by ferguson731 · · Score: 1

      Pointers in anything other than the very lowest-level-touching-the-metal code are an abomination. They cause far more confusion and grief than they ever help. Yes, there are situations in which the best way to address a problem is to pass a pointer around. However, in this day and age of multi-gigabyte ram sticks, I'd rather bloat up a program's ram usage with maybe unnecessary copies of large objects than dick around with pointers.

      You should talk to my students who just discovered how their 3x3 tic-tac-toe program had some "issues" when they tried 10x10. Understanding the difference between stack allocation and heap allocation, understanding the overhead of creating objects, understanding how to use structure sharing, understanding destructive mutation: all crucial for non-trivial programs. Multi-gigabyte ram sticks buy you nothing on real-world problems.

      Nothing wrong with teaching pointers in Java or your other favorite modern language. They're just called reference types. But teaching malloc/free or retain/release, now that's crazy. ;-)

    8. Re:Sane choice by TheRaven64 · · Score: 1

      Are they going skip the concept of Pointers ?

      Pointers are easy. The difficult thing is getting people to understand the concept of indirection. A language like JavaScript contains references, which teach you 90% of what you need to know about pointers. The rest - pointers to pointers and pointer arithmetic - is pretty trivial once you understand the difference between copying and aliasing.

      --
      I am TheRaven on Soylent News
    9. Re:Sane choice by Anonymous Coward · · Score: 1

      "I had threading and sockets in my Intro to Java course freshman year of college"

      All very well in college, but this is, y'know, for kids!

    10. Re:Sane choice by Anonymous Coward · · Score: 0

      I wouldn't take your Java experience and apply it to the concept as a whole.

      It is extremely easy to use both threads and sockets in Java, so easy that the basics could be learned in a matter of days because the JVM is doing all the complicated stuff for you. With Java, threading is as simple as creating a class that extends runnable and implements a 'run' method... sockets are similarly simple to construct and use.

      Now try actually implementing threading without Java doing 99% of the work for you. Once you understand the sophisticated locking/unlocking mechanisms involved, the memory management, the inter-thread communication, etc. you will understand how hard this stuff really is. The same thing applies to sockets, in Java constructing a socket, and reading from it/writing to it is extremely easy... now try creating a socket with proper IO using winsock2 and you'll see that once again that the JVM is doing most of the work for you.

      When people say that it takes years to get good at this stuff, they aren't just trying to feel superior to you. I created a multi-threaded HTTP server with custom IO handling (created custom readers/writers for the socket datastreams) in 2007... almost 5 years ago... back then I didn't understand half of what was going on behind-the-scenes but could still pump out workable code, because Java made that easy to do.

    11. Re:Sane choice by DarkOx · · Score: 3, Insightful

      Pointers in anything other than the very lowest-level-touching-the-metal code are an abomination. They cause far more confusion and grief than they ever help. Yes, there are situations in which the best way to address a problem is to pass a pointer around. However, in this day and age of multi-gigabyte ram sticks, I'd rather bloat up a program's ram usage with maybe unnecessary copies of large objects than dick around with pointers.

      I am going to disagree. There is basically no difference between C pointers and the byRef concept in all the higher level languages. It requires the same understanding, its just slightly different vocabulary and syntax.

      C method is superior because it makes it CLEAR when things are being passed by value and when they are not.

      C method is superior because it makes programmers consciously decide every time, if a reference or value should be passed. Not doing this results in code that passes massive objects by value and causes performance/resource issues, or often hard to solve bugs where values change in unexpected ways because multiple references exist and its not clear they are only references not clones.

      Not having pointer syntax is a mistake most modern languages are making IMHO.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    12. Re:Sane choice by Anonymous Coward · · Score: 1

      Threading is for wimps. Real men use setjmp.

    13. Re:Sane choice by trev.norris · · Score: 1

      - Appreciating data-types, their limitations and the perils of using casting them incorrectly helped me a lot in understanding about things I need to be careful about

      Understanding data types is important in JavaScript. How to convert from one type to another (e.g. String to Number). Just need to remember that you can reuse a variable name. Also it's important they understand that there are no integers (only IEEE-754 double precision floats), and why 0.1 + 0.2 !== 0.3.

      Are they going skip the concept of Pointers ? It's not wise to use them unless necessary but to be aware of the concept was very rewarding for me

      Understanding pointers in JavaScript is very necessary. All Arrays and Objects in JavaScript are passed by reference. If you don't understand the concept of a pointer in JavaScript then you will spend a lot of time beating your head into the screen wondering why the Array you passed as a function argument keeps getting altered.

      If they switch to another language to teach stuff which JS doesn't support, they might lose their audience and so blind side a large set of them.

      I'm not being facetious here, but I could say the same about developers everywhere who hate JavaScript but have little exposure to the language. That problem goes both ways.

    14. Re:Sane choice by jmerlin · · Score: 1

      It should be pointed out that despite what people think, there are more advanced issues available in JavaScript if they wish to act elitist. Most people who haven't spent a significant amount of time writing code for Node.js or working on a proper "AJAX" application may have never even thought about them. For instance, say you're in a browser and you want to do some computation. Well every browser out there will *eventually* bother the user to kill your script because the event loop is completely blocked until you relinquish control (this is why setTimeout exists, because it's necessary when programming in an uninterruptible event loop). So if you want to spend 10 seconds doing complex calculations, aggregations, etc on data to make pretty graphs for a user, you're most likely going to:

      1. Break at least 2-3 browsers because the user needs to opt to let your script finish. Most notably IE.
      2. Prevent the user from doing anything on the site in the meantime.

      This situation falls under the same premise as multithreading: resource contention. To have a responsive application, and to do long, complex calculations like this, you need to explicitly design a re-entrant (trivial via closures) function that can work for X number of iterations then pre-empt itself for anything else on the event loop, including your own code. You place a setTimeout every so often and pick right back up where you were (which will be far easier with the addition of yield). You run into a lot of the same issues you would in multithreading, except you get the guarantee that any action you take is atomic, but the state of your data unless private may change after a setTimeout (which is a really nice thing, actually).

      I've written multi-threaded servers in C. I didn't find it any more challenging than writing highly useful web applications in JavaScript. Let the trolls be damned, ignorance is a wonderful thing.

    15. Re:Sane choice by Anonymous Coward · · Score: 0

      It really would be a good idea to teach multi-threading in an intro course, at least after syntax. You have to think of solving a problem in an entirely different way, so much so that all the habits you pick up writing single threaded code will murder a multi threaded program. The problem becomes even larger if you try to learn a highly threaded environment like CgFx, HLSL, GLSL, OpenCL, and CUDA. Oddly enough the same sort of thinking used to develop code for a multi threaded environment works well in a single threaded environment, just not the other way around.

    16. Re:Sane choice by Anonymous Coward · · Score: 0

      Not doing this results in code that passes massive objects by value

      Really? What modern language lets you pass large objects by value?

    17. Re:Sane choice by capnchicken · · Score: 1

      As easy as it is to do sockets and threading in Java, there is still concurrency problems and other non-trivially things that aren't solved by the JVM's overlay. And there are still overlay's in C with POSIX that still put a lot of the backend work on the OS.

      What I am applying to the whole concept was agreeing with the OP and disagreeing with the GP that you can teach a language that allows threading in an intro course without having to understand all of the concepts surrounding threading, you do still get to sink your teeth into a lot of the other challenging aspects (or maybe not, haven't touched Java that much since ... i dunno .. 1.2 maybe?), but its plenty possible and has been done.

      --
      A libertarian shat on my carpet once. Claimed the free market would sort it out. -Ford Prefect(8777)
    18. Re:Sane choice by capnchicken · · Score: 1

      Kids in college are still kids, in my mind at least ;)

      --
      A libertarian shat on my carpet once. Claimed the free market would sort it out. -Ford Prefect(8777)
    19. Re:Sane choice by ndykman · · Score: 1

      Not quite. Take the prototype for strcpy:

      char *strcpy(char *dest, const char *src);

      As we know, char* means a string. We aren't passing a reference to a single character. The overloading of pointers for arrays is a complicating factor. You are correct in that C does make you decide passing semantics, but it can't truly enforce them. I can happy cast away const and destroy the source string if I want.

      Compare to a C# version:

      string StrCopy(string src, out string dest);

      Here, src is passed by value and we can't get around that, but by using the out keyword, we can get pass by reference semantics on the value. With this and auto-boxing support, I don't don't think you need pointer syntax. C++ added the concept of a reference explicitly to also address the issues of pointer semantic overloading in C. So, pointers aren't the final solution. Not a bad thing at all (when you need them, you need them), but there are other solutions to the problems you raised.

    20. Re:Sane choice by Jonner · · Score: 1

      This move should be vindicated in the near future. But I do have some qualms:

      - Appreciating data-types, their limitations and the perils of using casting them incorrectly helped me a lot in understanding about things I need to be careful about

      - Are they going skip the concept of Pointers ? It's not wise to use them unless necessary but to be aware of the concept was very rewarding for me

      - How will they teach multi-threaded programming? We're not quite there yet in JS. ... (insert other features here)

      If they switch to another language to teach stuff which JS doesn't support, they might lose their audience and so blind side a large set of them.

      Javascript does have types. Don't confuse dynamic typing with typelessness. None of the other things is essential to learning the basics of programming. Both pointers are threads are powerful but low-level tools which beginning students don't need to tackle. Most high level programming using modern languages doesn't need to be concerned with pointers at all any more. Unfortunately, we don't yet have good high level abstractions for dealing with concurrency and most threading models are often more trouble than they're worth.

      When a sufficiently advanced class needed to teach the concepts of pointers and threads, it could use C or C++. Starting with Javascript wouldn't hurt that class. In fact, the more languages a student is exposed to while learning, the less limited his thinking will be in general.

    21. Re:Sane choice by thegrassyknowl · · Score: 1

      I've known senior programmers with 15-20 years experience who can't understand multi-threaded programming. Specifically, they don't grok synchronization primitives and are incapable of thinking through races, deadlocks and other program strangeness which might have happened outside the current sequential block.

      If you're not taught the right way by someone who really understands this stuff you run the risk that your self-teaching is incorrect or incomplete, and I see the results of that almost daily. I learned basic threading principles in my C intro course and I know that the early and correct introduction helped me fully grok them.

      In response to an earlier thread about what it 'takes' to be a good programmer: persistence, willingness to learn more than one tool (so problems stop looking like nails) and the brains to think about the what-ifs which may occur.

      Any schmuck can write code that works when everything goes right and burns spectacularly at the first sign of malformed input. That is easy, and we all work with a few of those types. It's how you analyse and deal with unexpected or error conditions in your code that makes you a good programmer, and you can learn that skill in any language.

      --
      I drink to make other people interesting!
    22. Re:Sane choice by Anonymous Coward · · Score: 0

      "There is basically no difference between C pointers and the byRef concept in all the higher level languages. It requires the same understanding, its just slightly different vocabulary and syntax."

      Same understanding, but no NEED. Choosing whether to use a pointer/reference or copy by value is a no-brainer; any compiler should be able to make the right choice and optimise that for you, probably better than you can, or at least in a more cross-platform way. The only question is whether your language is too low-level to make the compiler aware of what you're trying to do, so that it CAN optimise it.

      Yes, I know there are hardware driver and API-compability reasons for needing to use pointers, but there are things like JNA/ctypes for that.

    23. Re:Sane choice by Anonymous Coward · · Score: 0

      The graphical nature , see this counter [http://goo.gl/zni5B ], can encourage the use JavaScript & learning from 'page source' ..

    24. Re:Sane choice by Anonymous Coward · · Score: 0

      I am ok, I guess, at threading in the computing sense (I passed the unit that covered it at least).

      I have literally (literally) no idea how slashdot's layout works.

  8. JavaScript not found by HeyBob! · · Score: 1

    Funny, a search for JavaScript on Khan Academy has no results!

    http://www.khanacademy.org/search?page_search_query=JavaScript

    1. Re:JavaScript not found by tedgyz · · Score: 2

      That's because you are searching for the answer to the question. Try this search:
      http://www.khanacademy.org/search?page_search_query=programming

      Someone who wants to learn programming doesn't search for javascript. That's like searching for "42" when you want to know the answer to life, the universe, and everything.

      --
      "No matter where you go, there you are." -- Buckaroo Banzai
    2. Re:JavaScript not found by drosboro · · Score: 5, Funny

      Someone who wants to learn programming doesn't search for javascript. That's like searching for "42" when you want to know the answer to life, the universe, and everything.

      So wait - javascript is the ultimate answer to programming?

      Crap. I quit.

    3. Re:JavaScript not found by ArsonSmith · · Score: 1

      No it's the answer to the ultimate question about programming. The trick is to find out what that question is.

      --
      Paying taxes to buy civilization is like paying a hooker to buy love.
    4. Re:JavaScript not found by HappyHead · · Score: 1

      Of course, the problem there is that the entries that search returns which actually contain a programming language at all are entirely done in python, so still no javascript.

    5. Re:JavaScript not found by TheRaven64 · · Score: 1

      'How do we guaranteed job security for a generation of programmers?'

      --
      I am TheRaven on Soylent News
    6. Re:JavaScript not found by Anonymous Coward · · Score: 0

      No it's the answer to the ultimate question about programming. The trick is to find out what that question is.

      "Which programming language in common use today is quite possibly the worst programming language ever?"

    7. Re:JavaScript not found by Anonymous Coward · · Score: 0

      And that's why man has invented differential equations.

    8. Re:JavaScript not found by Anonymous Coward · · Score: 1

      I still don't see any JavaScript. Everything listed is in python.

    9. Re:JavaScript not found by tedgyz · · Score: 1

      My apologies. I didn't actually click the links. I assumed those were JavaScript lessons.

      In any case, I believe my comment still holds water. It just means those JavaScript lessons are more elusive than I thought. :-)

      --
      "No matter where you go, there you are." -- Buckaroo Banzai
    10. Re:JavaScript not found by rs79 · · Score: 1

      >So wait - javascript is the ultimate answer to programming?

      Pretty much. Some guy wrote an x86 emulator in it and can run linux under it. I tried it and even on my shitty laptop I could use vi and compile and run small c program. In a browser tab. That's right, an instance of linux in any browser tab you care to run it in.

      Try doing that in any other language, and being able to write something like that so easily and quickly - which only works because of some of the esoteric properties js has.

      I learned C in 76 on the first pdp-11 in Canada an no other langauge has ever excited me and I've played with them all. js excites me, there's just nothing you can't do easily with it. The node.js thing now that it has the google v8 engine (a good 10x faster than any other js engine) actually can serve up web pages 30% faster than Apache, written in C. That's not bad for an interpreted language and happens of course because of the asynchronous nature of the language. We waste so much time in linear langauges like c to make event stuff happen, when it's part of the langauge it's soooo much quicker. And js has a bunch of properties that wern't even a glimmer in dmr's eye back in the day.

      No, it really is cool as hell and you should look at it in depth, I think you'd be surprised. Have a look at about 5 hours of Doug Crockford's videos, it takes that long to explain all this stuff.

      It's a brilliant choice to learn programming. All other languages are subsets of javascript so by really learning js then things like scheme, lisp and C aren't mysterious at all; I think this was a very good decision on Khan's part.

      --
      Need Mercedes parts ?
    11. Re:JavaScript not found by Dutch+Gun · · Score: 1

      All other languages are subsets of javascript so by really learning js then things like scheme, lisp and C aren't mysterious at all; I think this was a very good decision on Khan's part.

      Uh... what? I have nothing against Javascript (and tend to agree it's a decent choice as a learning language), but since when is Java a superset of all other languages? And "there's just nothing you can't do easily with it"? No language can claim that. None.

      Sorry to be contrary, but when people start claiming that there's one do-all-be-all language, I'm going to have to disagree. I'm a game developer, so of course we use C/C++ for our game where maximum performance is absolutely critical. However, we also write a lot of supporting code: we use C# for tools, Python for scripting and tool customization, Lua for our build server, and even a lightweight custom scripting language that's used by the game directly. Oh, yeah, and of course our web developers use a lot of Javascript.

      Each of these languages has strengths and weaknesses, so we use what we feel is the most appropriate language for the task at hand. Picking a single language and sticking with it come hell or high water seems as foolish to me as a carpenter who refuses to use anything but his one favorite tool for all his tasks.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    12. Re:JavaScript not found by rs79 · · Score: 1

      I've done game and other realtime/process control/vision programming too, for a few decades. We both know there's only a small amount of code that has to be blindingly fast (even if "render" one of those "small amounts") and the rest is grudgework. I posit that I could take one of your working games in C/C++ an rewrtite it in js and assembly for the critical bits and that it would run faster than what you have now.

      --
      Need Mercedes parts ?
  9. keep the kids ignorant and unable to compete by Anonymous Coward · · Score: 0, Informative

    Nothing better than toy programming languages to keep the kids from ever learning the concepts that they will need in order to do software as a career.

    Call it "Boomer lifetime employment assurance".

    1. Re:keep the kids ignorant and unable to compete by Anonymous Coward · · Score: 1

      If they're stupid enough to believe that their first language is the only language they need, they're bad programmers anyway.

      Starting people with BASIC, or JavaScript, or anything else cannot rot the mind of a good programmer. Yes, I know some famous guy said BASIC destroys them. He was a teacher. It was his job to set them straight if they had any bad ideas. If they couldn't be set straight, they were stupid, not the language.

    2. Re:keep the kids ignorant and unable to compete by Anonymous Coward · · Score: 1

      We're talking about kids here, not college courses and careers!

      I see this as analagous to giving kids Legos to learn how to build stuff. Put some blocks together... it makes a bridge.. cool! Do the Lego joints have the appropriate tensile strength to support actual loads? OMG, they probably don't.

      But they'll think building bridges is cool, so someday in the future they might take a real engineering class instead of basket-weaving, and then maybe, just maybe, we might get some smart folks to make it real career instead of a generation that will outsource everything because no one in the country cared to figure it out.

      We're not asking 10-year olds to build production code after watching a Khan Academy video...

    3. Re:keep the kids ignorant and unable to compete by Anonymous Coward · · Score: 0

      I just got done implementing everything from "The Little Schemer" in javascript (using node.js to avoid dealing with the DOM).

      If you think it's a toy language, you have a lot to learn.

    4. Re:keep the kids ignorant and unable to compete by TheRaven64 · · Score: 4, Insightful

      Yup. And it's a really stupid idea giving kids lego bricks too. I mean, how often do you see a house or a bridge built out of lego? And what about meccano? I've never seen anyone make a car out of meccano! These toys have no place in education.

      --
      I am TheRaven on Soylent News
    5. Re:keep the kids ignorant and unable to compete by wirelessduck · · Score: 1

      Someone should mention this to James May. After his success with the Lego house and the Meccano bridge, I think a Meccano car would be simply awesome. Doing a piston engine might be a bit of a challenge, but you could probably get away with Pedal Power.

      --
      "Every man has a right to his own opinion, but no man has a right to be wrong in his facts." - Bernard Baruch
  10. Could be worse. by John+Hasler · · Score: 0

    They could have selected PhP.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  11. Pretty much all the problem with JS by i+kan+reed · · Score: 1

    Come from the fact that its syntax and features are set in stone, and every change either takes the w3c 10 years to establish a standard that's actually obeyed, or a massive browser feature war that leaves us with unimplemented blink tags. If the language itself could have evolved even as fast as slothful Java, it wouldn't seem so unintuitive as a first language.

    1. Re:Pretty much all the problem with JS by Meatbucket · · Score: 0

      The fact that it doesn't change much over the years ensures they won't have to re-write the online textbook any time soon then. I see this as a bonus Javascript as a programming language 1) it is the most accessible (no compiler or other software needed, just run it in a browser) 2) it is easy (no pointers or explicit variable types) 3) it is graphical (it's much more entertaining to show programming through visual output with graphics then with text) 4) it is practical (you can use it to write a website, it is a skill relevant to the workplace) 5) it is a language that will not be thrown away (it works with html5 which is the future standard for web apps) 5) it does not change much, teaching material will not have to be re-written every year I don't see why anyone would see a problem with teaching this to children, it's a great starter language

    2. Re:Pretty much all the problem with JS by Anonymous Coward · · Score: 0

      But the best part about JavaScript is how easy it is to expand and portability.

      Don't like having to get an element by ID every single time because it is such a chore typing it? Throw it under a something like "gebid", easy to remember, much much smaller. camelCaseIsJustTerribleWhenItGoesOnAndOnLikeThis makesYouWantToPunchADolphinAndDolphinsAreCute.
      You can do this with pretty much anything in the language that you would need to do, including emulating other languages and even running binaries. (as long as you aren't trying to boot WinXP / Ubuntu and the other larger OSes similar, you should be fine)
      And with a decent setup, people can even code in realtime and see the results next to the code as they do it. Livecoding is such a useful and easy to perform feature of JS.

      Now the only problem is dealing with the CSS kiddies and CSS in general due to it being so AWFUL, EVEN NOW, and accessibility morons at W3C trying to break Canvas even more by throwing on a ton of bloat, probably.
      Seriously, what the hell is with CSS, it could be a billion times more useful if it just had a few format changes, actual decent inheritance control and, you know, features that it was supposed to replace from the whole Tables For Layout days. Some of that only JUST appeared in CSS3 for crying out loud! (and it wasn't because of the IE wars either, before anyone tries to use that tired excuse, W3C in general are what is wrong, too many Coulds, Mays and not enough MUSTS. See the entire input capture system of JS in every browser)
      And before you come in with a bunch of lines of obtuse CSS to perform such a simple task, you don't use a supercomputer to do 2+2.
      Yes, I mad, mad that idiots like that managed to get that horrible mess of ideas standardized.
      The web isn't a damn newspaper! Stop living in the limitations of print damn it!

      I'd be quite happy seeing CSS scrapped. So terrible. It only recently picked up, but everything before is still there and still terrible, and some, just completely inconsistent and pointless.

  12. Re:Javascript is already for kiddies anyway by sehlat · · Score: 4, Insightful

    Javascript is a baby language for unskilled and sloppy programmers, so it'll fit right in. Javascript fagets need to learn a grown-up language. They only write in Javascript because there faget asses can't hack it in something better.

    Cue trolls and linguistic snobbery. If you can get the kids et. al. interested in learning, 90% of the battle is won. The other 10% is debugging. :)

  13. Re:Javascript is already for kiddies anyway by Anonymous Coward · · Score: 0

    As opposed to unskilled and sloppy trolls (eugh!) who cannot spell faggot.

  14. Khan Academy and Python by Anonymous Coward · · Score: 0

    Khan Academy already has like 30 Python videos up.

  15. Good by Anonymous Coward · · Score: 1

    Good choice, as far as I'm concerned. The thing I like best is that you don't need a compiler, a special IDE, a runtime, or anything apart from pretty much any browser that's been built since about 1995 to get going.

    (Except if you're on iOS, of course. Then you're just fucked as far as programming goes.)

    1. Re:Good by mwvdlee · · Score: 1

      Only downside is that you DO need some basic knowledge of HTML and, presumably, CSS. Not too difficult and perhaps a good way to introduce students to the concept of syntactic rules, but an additional step nonetheless.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    2. Re:Good by Anonymous Coward · · Score: 0

      Not really. Just have them edit "myproject.js" html file that includes their file and provides some prebuilt print functions or whatever. They'll have a simple API to play with and as they improve, can start working with the DOM.

    3. Re:Good by Anonymous Coward · · Score: 0

      Not a big step though.

      <script>
      alert("hello");
      // also do some other stuff here...
      </script>

      Not much html to get started. You can of course add html for interactions but you only need extremely simple stuff
      <button>Do the thing</button><button>Or the other one</button>
      <input id='results' value='results will be shown here' />

      Hardly a major obstacle to learning javascript

  16. Re:Javascript is already for kiddies anyway by mwvdlee · · Score: 1, Insightful

    Javascript fagets need to learn a grown-up language.

    Why bother learning a grown-up language if you're unable to act like a grown-up?

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  17. WITTY SUBJECT LINE by not+already+in+use · · Score: 0

    Yes, what a wonderful idea. Teach people a language that doesn't use classical inheritance, that constantly violates the principle of least astonishment, and that google is trying to replace (and is hopefully successful in doing so).

    --
    Similes are like metaphors
    1. Re:WITTY SUBJECT LINE by trongey · · Score: 1

      Because every program requires inheritance, least astonishment isn't controlled by the programmer, and everything Google does is good.

      --
      You never really know how close to the edge you can go until you fall off.
    2. Re:WITTY SUBJECT LINE by not+already+in+use · · Score: 0

      Because every program requires inheritance

      My bad, I was under the impression that people might desire marketable skills.

      least astonishment isn't controlled by the programmer

      Oh, you're right. Javascript semantics are totally reasonable and consistent. It's the programmers fault that there appear to be a million nuances.

      everything Google does is good.

      What would a wildly successful company who's invested heavily in javascript know about its shortcomings? You got me man, you got me.

      --
      Similes are like metaphors
    3. Re:WITTY SUBJECT LINE by Anonymous Coward · · Score: 0

      Sorry, you gave a sidewise compliment to Google. On NuSlashdot, that's instant grounds for a -1 Overrated/Disagree. You should have put something in there about how IE10 is more standards compliant than any other browser because IE has the most market share and is therefore the standard. Get it?

    4. Re:WITTY SUBJECT LINE by toriver · · Score: 1

      And what is not marketable with Javascript skills? Ever hear of Node.js, jQuery etc.? "Oh noes, a language that does not confirm to my limited preference of how a language should act!!1!!!" Inheritance is not inherently (hihi) better than Javascript's prototyping.

    5. Re:WITTY SUBJECT LINE by not+already+in+use · · Score: 0

      Oh yes, because there are SO many jobs that require javascript experience and NOTHING else. You'll get laughed out of an interview if your only experience is with javascript and you don't understand simple, classical inheritance.

      --
      Similes are like metaphors
    6. Re:WITTY SUBJECT LINE by Hentes · · Score: 1

      When you are teaching noobs to code you shouldn't start with OOP. Classes are something for later, most likely in another language.

    7. Re:WITTY SUBJECT LINE by narcc · · Score: 1

      "Classical inheritance" (whatever that is supposed to mean) is bad and should be avoided (probably with the rest of failure that was OOP.) I could go on and on about why (like how inheritance is fundamentally incompatible with encapsulation) but I'll leave that to you.

      Besides, the new hotness in that failed methodology is composition.

    8. Re:WITTY SUBJECT LINE by Brian+Feldman · · Score: 1

      Inheritance is perfectly-compatible with encapsulation as long as you hide the variables that could be modified in a wrong way behind methods that do the right thing. I save plenty of code when I do C++ or Java by using classes. So what do you mean?

      --
      Brian Fundakowski Feldman
    9. Re:WITTY SUBJECT LINE by narcc · · Score: 1

      This isn't a new claim. See: Do We Need Inheritance? [PDF], Evolution of Object Behavior using Context Relations, Selective Open Recursion: Modular Reasoning about Components and Inheritance [PDF], Encapsulation and inheritance in object-oriented programming languages and many other academic sources.

      It's widely acknowledge that inheritance violates encapsulation. It's a fundamental problem with OOP.

      If you prefer a less academic and more practical discussion, try a Google search for OOP criticism.

    10. Re:WITTY SUBJECT LINE by toriver · · Score: 1

      Why do you think that people who start by learning Javascript do not proceed to learn more languages? It is a fucking introductory course. It's not like when you had learned basic arithmetic then you would not learn any more math, so you should have started out with advanced trigonometry to get some "marketable skills".

  18. Strongly typed? by Anonymous Coward · · Score: 0

    Yes Mr Khan, way to turn our youngsters into savages just like those who use VB and call themselves a programmer...

  19. Old News by DudemanX · · Score: 4, Informative

    The video the article uses as its source is from October.

    The article also incorrectly states that this is Khan Academy's first programing language. There are a few intro to Python videos on the site already.

  20. python? by d3matt · · Score: 1

    he's already got several videos up with python... why the switch I wonder...

    --
    I am d3matt
  21. My post to the original Slashdot discussion by KrackerJax · · Score: 2, Interesting

    I got modded down as Flamebait, so I feel a bit vindicated now :)

    Post from Saturday July 25 2009:
    "One not-so-obvious candidate: JavaScript and HTML.

    Pretty much every browser in existence supports JavaScript, so with nothing more than a simple text editor and your browser of choice you can be off and running. As far as beginning programming is concerned, JavaScript easily encompasses any programmatic constructs you'd need.

    The best part is that the students can easily display the results of their test programs in HTML, either dynamically generated or just by manipulating some divs, textboxes, tables etc that they've written on their page. Additionally, an instructor could write a 'playground' bit of HTML and JavaScript, so all output variables are bound up and easy to access. At that point the student is free to focus on what really matters, his/her first logic routines. When the student has created his first masterpiece, sharing the accomplishment with parents/peers is as simple as sharing a link to their HTML file.

    I think this has the potential to engage students much faster than observing console output or fighting with a front end like windows forms in VB or Swing in Java."

    --
    Sauer
    1. Re:My post to the original Slashdot discussion by grumbel · · Score: 2

      Pretty much every browser in existence supports JavaScript, so with nothing more than a simple text editor and your browser of choice you can be off and running.

      Not really. The default "development tools" of your browser are complete shit, half the time you won't even get an error message when something went wrong and printf-style debugging isn't all that easy either and of course you need to have a HTML to even start doing Javascript, which adds a another layer of complexity. So as a beginner you are confronted with a lot of "stuff doesn't work" without even a hint on what went wrong. Of course you can fix that by using browser add-ons, predefined HTML pages and a bunch of other stuff, but at that point you could simply use another language.

      Now don't get we wrong, I absolutely agree that something graphic is extremely important to keep the children interested, I just find that Javascript is a lot more frustration then fun. I personally probably go with something like Python/Pygame.

    2. Re:My post to the original Slashdot discussion by mwvdlee · · Score: 3, Informative

      half the time you won't even get an error message when something went wrong

      FireFox, MSIE, Safari and Chrome all have a javascript console which prints plenty of error messages. F12 is your friend.

      printf-style debugging isn't all that easy either

      You can log text and data to the javascript console using console.log(); or any of the other debugging features like line-debugging.

      and of course you need to have a HTML to even start doing Javascript, which adds a another layer of complexity.

      ...and teaches you to create documents to relatively loose syntactic rules before switching to the more strict rules of JS.

      I agree that javascript isn't the nicest language out there, but it's probably the best compromise.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  22. AutoIT by fluffythedestroyer · · Score: 2

    Autoit is a good scripting language. Not too hard yet not to easy since you gotta know, like every other language, what you do. I know almost nothing in programming and I found AutoIT very fun and very good scripting language. Well very good is a wierd term for me since I didn't use other scripting language. From what I read on their forums and their pdf tutorials (available on their forums) is it helps you learn good basic programming behavior from the start.

    1. Re:AutoIT by Anonymous Coward · · Score: 0

      I used Autoit for a very specific project I was working on a year ago and while it is easy to use it only real works well in the very limited domain of gui automation. To really be general purpose would require much more robust object support. You would be better off teaching kids bash scripting as even that smokes Autoit in flexibility.

  23. that's what I started my son with 8 years ago by a2wflc · · Score: 5, Insightful

    Since then he's gotten pretty good with Java, C#, C, and python and played with F#.

    The key part of the title is "intro language". Seems like some comments are expecting kids to come out of this and write the next Office suit, or Google competitor, or missile guidance system. I think javascript is a great way to see if a kid wants to do more.

  24. Re:Javascript is already for kiddies anyway by GNious · · Score: 1

    Hope you don't mind me quoting you ... :)

    https://plus.google.com/106639317314065291577/posts/irsF5UAvfsE

  25. Javascript isn't the problem by Viol8 · · Score: 1

    Learning the unmitigated mess known as the document object model is. And then you have you worry about CSS if you want to do anything fancy. So in effect you have to learn 3 languages (2 above + HTML) , including how they interact and obtuse DOM system before you can do anything useful. And then we have HTML5 and the god awful canvas object interface. I feel sorry for the kids, BASIC would be a better choice.

  26. Re:Javascript is already for kiddies anyway by Rosy+At+Random · · Score: 1

    Yes. You do.

    --
    Would you like a slice of toast?
  27. Ouch... Javascript is broken in a number of ways.. by HizookRobotics · · Score: 1

    Javascript is broken in a number of ways. Just watch this video: WAT.

    The fact that commutativity does not hold for "[] + {}" is just wrong! I understand the need for "pretty graphics" and "instant gratification", but a different language would have been appreciated. Heck... a background in python would at least set them up for a lifetime of scientific computing.

  28. Re:Javascript is already for kiddies anyway by sehlat · · Score: 1

    No problem. I'm honored.

  29. The right choice by XxtraLarGe · · Score: 4, Interesting

    I think that's the right choice. All you need is a web browser & text editor. It's easy to get immediate results. It has a C-style syntax, so it will help them with other similar style languages like C++, Java and PHP. Can you really imagine starting kids off with C++ or Java? You could argue for Python (it's what Udacity is using), but I think it's dissimilar enough from other languages that it could cause confusion.

    --
    Taking guns away from the 99% gives the 1% 100% of the power.
    1. Re:The right choice by hcs_$reboot · · Score: 1

      Paradoxically, I think Javascript closure is something that should appear more natural, to the beginner.

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    2. Re:The right choice by evil_aaronm · · Score: 1

      Amen to this. Perl's like that, too, to some extent: write code, save file, run script, see immediate output. Lather, rinse, repeat.

      Unlike the inexcusably broken Xcode 4.3, which won't even run - not even doing anything, just sitting there! - longer than five minutes on my machine.

  30. Re:Javascript is already for kiddies anyway by amicusNYCL · · Score: 1

    Javascript is a baby language for unskilled and sloppy programmers, so it'll fit right in.

    Just out of curiosity, which language do you prefer when you're creating interactive web application interfaces?

    --
    "Our two-party system is like a bowl of shit looking at itself in a mirror." - Lewis Black
  31. LOGO by Anonymous Coward · · Score: 0

    In my school district we have a summer course coming up for programming geared towards kids. They are using LOGO. Once upon a time I thought that a graphical language like Labview G would be a good choice.

    I think you could teach Java to high schoolers reasonably well. I don't know what is appropriate for the Elementary and middle school aged kids. I don't like the choice of LOGO but it's better than nothing. I've tried to teach my kids a bit of C but they weren't interested in learning from Dad.

  32. Re:Queue the GNU hate machine by astropirate · · Score: 1

    How is Javascript proprietary??

  33. Why khaaan.com uses Flash by tepples · · Score: 1

    Except the site you're probably thinking of (the one that isn't an Academy) uses Flash because they didn't have a consistent JavaScript audio/video API back then.

    1. Re:Why khaaan.com uses Flash by Anonymous Coward · · Score: 0

      Except the site you're probably thinking of (the one that isn't an Academy) uses Flash because they didn't have a consistent JavaScript audio/video API back then.

      And we still don't have a consistent audio/video API for all practical purposes.

  34. Scripting by virgnarus · · Score: 1

    I'm not a programmer, but I remember hearing many times throughout the years that learning scripting like Javascript is a no-no as a first language because it lacks certain concepts that are crucial to learning a "full" programming language, and sets them in a rut to write code that works well for scripting but is not best practice otherwise. Is this dubious wisdom people have been feeding me?

    1. Re:Scripting by HornWumpus · · Score: 3, Interesting

      Ask 100 programmers what 'best practice' is and you will get 100 answers.

      Want to start a flamewar? State that _any_ OO language isn't a 'real' OO language like other OO language.

      Personally I don't think it matters what a persons first programming language is, as long as their second programming language is some sort of Assembler. OK I will allow Assembler 3rd, C second.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    2. Re:Scripting by mwvdlee · · Score: 1

      Yes. Every programming language has issues. There is no such thing as a "full" programming language. For teaching to absolute beginners, javascript will do just fine. Only when you actually start to educate future programmers (as opposed to schoolchildren) would it be prudent to use a different language. Learning to program is primarily about logic and javascript implements logic just as well as other languages.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    3. Re:Scripting by AHuxley · · Score: 1

      Yes Pascal or Ada would have been nice educational options to teach good habits and show what a well created language can be like before the reality of what is used sets in :)

      --
      Domestic spying is now "Benign Information Gathering"
  35. Graphical feedback is a good idea... by Entropius · · Score: 4, Interesting

    I was given the assignment of teaching an intro computational physics class at a university two years ago using C. The students came in knowing no programming (or Linux), and I was supposed to get them comfortable writing C codes to simulate things in two hours a week.

    The trouble with C is that graphical output requires a bunch of advanced concepts; I wanted to give them a way to animate their simulations just using the things they already knew (which, at that point, were basically math, for, if, and printf/scanf)

    One of the first things they learned was shell I/O redirection (the | operators), so I wrote a command-line filter that read text in from stdin and translated it into animations, with support for various graphics primitives in 2D and 3D along with some interactivity (rescaling/translating on the fly by keystroke input into the animation window). So they could code up a simulation of some thing (a double pendulum, say), and watch it go in front of them. To my surprise it was a lot faster, even over remote X, than I thought it'd be. The huge advantage is that it let them get pretty graphics using nothing other than printf on their end.

    Some of the stuff they made by the end was pretty impressive: vibrating 3D meshes showing the oscillations of a stretched membrane, the resonance between Jupiter and the asteroid belt developing, and the like.

    1. Re:Graphical feedback is a good idea... by Anonymous Coward · · Score: 1

      processing (http://www.processing.org/) is really nice for this

    2. Re:Graphical feedback is a good idea... by HelpMeSpock · · Score: 1

      Nice. Is this online somewhere?

  36. Re:Javascript is already for kiddies anyway by Anonymous Coward · · Score: 0

    Dart!

  37. Sushi cook by jones_supa · · Score: 1

    I guess it's a practical choice then. JavaScript is widely used and they can move their skills to the AJAX and Metro world.

    For the more nerdy types, the "if you want to be a sushi cook you will have to start as a kitchen cleaner" route could be offered as an interesting alternative route. There you would begin with C and assembly...to learn a bit how processors work (machine language, registers, stack) and how to write lean code. Raspberry Pi would be the hardware and, you would have a dedicated mentor to guide you through. Just a fancy dream...

    1. Re:Sushi cook by Anonymous Coward · · Score: 0

      I guess it's a practical choice then. JavaScript is widely used and they can move their skills to the AJAX and Metro world.

      For the more nerdy types, the "if you want to be a sushi cook you will have to start as a kitchen cleaner" route could be offered as an interesting alternative route. There you would begin with C and assembly...to learn a bit how processors work (machine language, registers, stack) and how to write lean code. Raspberry Pi would be the hardware and, you would have a dedicated mentor to guide you through. Just a fancy dream...

      Rasberry Pi is way too expensive. For the cost of just the LCD display to go with it, you could instead buy a cheap tablet and a bluetooth keyboard.

  38. Bad idea... by xyourfacekillerx · · Score: 4, Insightful

    Teaching programming to children isn't even about teaching PC's or teaching a particular language, it's about imparting the ideas behind turning "what we want the computer to do" in our imagination (the kids will later call this algorithms) into instructions for the computer. BASIC and others are languages were designed as introductory because they can be used without much regard for external environment, allowing a natural focus on the fundamentals of all programming in general.

    The child then develops an intuitive understanding of what s/he will later describe as algorithms, data structures, and programming languages, or platforms, in general; they develop the theoretical foundations subconsciously via exercise, habit and practice, (and for the gifted, introspection and critical thinking), so they can be taught these concepts formally with ease later on. At that time, the choice of programming language isn't much of an issue.

    But this? JavaScript requires the teaching of an environment and pre-existing objects like DOM that have nothing to do with the above goals and will certainly diminish the natural intuitive development of the appropriate concepts involved with programming. They are not learning how to translate their imagination into instructions as a general practice; they are learning how to manipulate specific pre-determined objects outside the scope of theoretical concerns. This is bad for them. This will limit them.

    As an aside, let's face it, this is motivated by business. 1) JavaScript will be a heavily used language in the immediate future, 2) Khan prepares students to use JavaScript, 3) Khan's students are equipped with business-world skills and succeed, 4) Khan claims statistics reflect it competes well in the education market place, 5) Khan gets money.

    Meanwhile Khan's students have to learn the basics of programming the hard way. Like a GED student picking up calculus at age 35 struggles with it, so will those students.

    1. Re:Bad idea... by Chakra5 · · Score: 1

      But this? JavaScript requires the teaching of an environment and pre-existing objects like DOM that have nothing to do with the above goals and will certainly diminish the natural intuitive development of the appropriate concepts involved with programming. They are not learning how to translate their imagination into instructions as a general practice; they are learning how to manipulate specific pre-determined objects outside the scope of theoretical concerns. This is bad for them. This will limit them.

      As an aside, let's face it, this is motivated by business. 1) JavaScript will be a heavily used language in the immediate future, 2) Khan prepares students to use JavaScript, 3) Khan's students are equipped with business-world skills and succeed, 4) Khan claims statistics reflect it competes well in the education market place, 5) Khan gets money.

      Meanwhile Khan's students have to learn the basics of programming the hard way. Like a GED student picking up calculus at age 35 struggles with it, so will those students.

      OK first, there are several modalities to learning programming via JavaScript that are console based. Eloquent JavaScript ( collectedcurios.com ) being one example. So if the markup/DOM aspect of things offends you, it can be sidestepped. Would seem to toss a lot of goodness out with the bathwater to me..but hey, if you feel the need for that form of decoupled purity, there it is.

      I for one would argue that your "bad" is a fundamental good in the end for those interested in Web programming specifically, allowing for crossover conversations about web related topics. But also, programming is not really an ivory tower activity. There must be some I/O interaction to have some effect on the world.

      Also, the whole DOM/Markup aspect can be mostly (or even completely) handed to them. So I don't see this as an issue at all really.

      Finally any school that doesn't take into account that their students will want/need/use their skills in the real world is ...well...unique. Can't say I see that as much of an indictment.

      I taught a class of adults beginning programming through JavaScript and the vast majority did anything but struggle thank you....the only problem I see is that I have yet to find a text that doesn't blow in some major fashion.

      --
      Get your facts first, and then you can distort them as much as you please.--Mark Twain
    2. Re:Bad idea... by Anonymous Coward · · Score: 0

      Thank you. You would be a good teacher.

    3. Re:Bad idea... by spage · · Score: 1

      JavaScript requires the teaching of an environment and pre-existing objects like DOM

      Of course it doesn't require those, you idiot and everyone who voted you insightful. The Code Academy Getting Started with Programming is in JavaScript and doesn't cover the DOM, CSS, or anything else that goes on in a browser.

      Your argument is like saying kids shouldn't learn mechanical engineering by looking at car engines, because car engines are hooked up to all those distracting car interiors and dashboards, and once you shift out of neutral, you have to learn the vast messy subject of driving. So kids should study freestanding steam engines, no potential distractions there.

      The environment that JavaScript runs in is a huge feature because it's the web pages where everyone spends much of their time! Once you learn the language, you can start doing canvas graphics (are you seriously proposing BASIC's shitty graphics instead?) Once you learn about objects, you learn that the browser and the window in which your script runs in are themselves objects that you can mess with. What's more motivating, peeking under the covers of Facebook and a million other websites or learning some ivory-tower language and its own limited environment disconnected to everything else the kid does on a computer? Your claim "this is motivated by business" is laughable. It would be profoundly stupid to begin with any language other than JavaScript when the other essential computer course is "Learning how the web works (HTML and HTTP)."

      --
      =S
  39. fd(50); rt(90); by tepples · · Score: 1

    Actually, Logo could do a lot more than drawing - it was basically an adaptation of LISP

    Logo is Lisp without a lot of the parens. So is JavaScript. Add a turtle graphics library that draws to a canvas, and JS is the new Logo.

    function square(w) {
    fd(w); rt(90);
    fd(w); rt(90);
    fd(w); rt(90);
    fd(w); rt(90);
    }

    1. Re:fd(50); rt(90); by Tsingi · · Score: 2

      Actually, Logo could do a lot more than drawing - it was basically an adaptation of LISP

      I googled logo javascript, and got lost of hits.

    2. Re:fd(50); rt(90); by melikamp · · Score: 2

      % Real men use Postscript
      /draw_square { 1 dict begin
        gsave
          /w exch def
          newpath 0 0 moveto
          3 {
            w 0 rlineto
            90 rotate
          } repeat
          closepath stroke
        grestore
      end } def

      100 draw_square

  40. Speedware by Oswald+McWeany · · Score: 1

    Anyone who is anyone knows that real programmers use Speedware.

    ugh... I shudder just typing that- even though it was in jest...

    --
    "That's the way to do it" - Punch
  41. If the goal is to groom students to be web app developers and nothing else, then Javascript with HTML/CSS are perfect choices for a first language. For a more general curriculum, I'd suggest a more general purpose language like python or Java.

  42. A better choice: QML by hardaker · · Score: 1

    The QML language is amazingly simple to learn and contains javascript snippets to drive the complex stuff. It has much better concepts of variable bindings than HTML/Javascript alone and is significantly faster (and runs on pretty much everything).

    I recently taught a child QML and had her create a Mahjong game for her mother in a couple of weeks. I did some of the harder javascript logic, but she did most of the entire game from scratch. Oh, and she learned git in the process and the concept of simultanious development during the portions I was working on the javascript to create the game board structure (she had to tell me the algorithm though).

    side note: she would have done the harder code too, but we were short on time for the present to get delivered

    --
    The next site to slashdot will be ready soon, but subscribers can beat the rush and start slashdotting it early!
  43. Event-based cooperative multitasking by tepples · · Score: 0

    in this day and age of multi-gigabyte ram sticks

    Multi-gigabyte RAM sticks don't fit into a cell phone quite yet.

    Pointers in anything other than the very lowest-level-touching-the-metal code are an abomination.

    What are handles in managed languages, such as Python, JavaScript, Java, C#, and VB.NET, other than pointers? Try doing anything with a null in Java, for example, and you'll get a java.lang.NullPointerException.

    Likewise, beginners are not going to be writing their own output handlers, which is the obvious usage for threading.

    The other obvious use for threading is non-blocking I/O, and that's not quite as necessary in JavaScript because multitasking within an HTML DOM context uses an event-based cooperative model, which as you point out is supported by threaded constructions in the interpreter. An AJAX request, for example, includes a closure that's called upon its completion, and user interactions with a document fire events on DOM elements.

    1. Re:Event-based cooperative multitasking by Anonymous Coward · · Score: 0

      Shut the fuck up, tepples.

    2. Re:Event-based cooperative multitasking by Anonymous Coward · · Score: 0

      >What are handles in managed languages, such as Python, JavaScript, Java, C#, and VB.NET, other than pointers?

      They're smart pointers. Reference counting and all that.

  44. Re:Ouch... Javascript is broken in a number of way by Anonymous Coward · · Score: 0

    I agree that JavaScript has its problems, but none of them matter for an entry-level programming course.
    And it has a few valuable benefits. 1) Everyone has it. 2) IO can be rich and simple. 3) You don't need to worry about pointers. 4) You don't need to worry about type-safety.* 4) It is useful to learn as a practical language also.
    * While important, it's a complex subject and best taught later. Just like memorising kanji won't work for most people unless they can already understand Japanese to some extent, you can't expect to teach someone type safety without teaching programming first. It's a question of motivation really.

  45. I may sound like a broken record, by Python? by lattyware · · Score: 4, Insightful

    I don't get why Python isn't the choice here. Javascript, I find, is a horribly ugly language, harder to understand and code in than most, and with more quirks, special cases, and generally horrible-to-work in language design choices than pretty much any other language in common use today.

    Python does it right for learning. It teaches good practices (indentation, code readability), it aims to not surprise the user, it's a well designed language which is very good at being consistant, and in general is nice to learn in. Not only that, but it avoids the low-level stuff (which isn't that relevant when you are first learning to code) and instead teaches you the higher-level concepts which are more important. It's also got a large, well documented standard library, and is interpreted, so you can use it as a prompt, and don't have to worry about compiling. It's also cross platform, free and open.

    I'm not going to lie, I don't like JavaScript, and I've never got why people like it. I can understand using it - it's the only real choice for scripting on the web - but to use it out of choice, or teach in? I don't get it. Fun and graphical? Not really - then it requires an understanding of HTML and CSS too, which is either going to be done wrong or be too much.

    My main problem is the line

    Resig admits JavaScript, as a language, has its warts and issues, but so do all languages.

    - This is true, but some languages try really hard to avoid them, and some fix them. Python is an example of both - Python 3 fixes a number of issues with the language, and in general, with the process of PEPs and not being afraid of pushing the language forward, Python has turned into an extremely polished language with very few issues. JavaScript on the other hand, is full of them - and there is no real effort to fix them, as far as I know of, at the moment.

    --
    -- Lattyware (www.lattyware.co.uk)
    1. Re:I may sound like a broken record, by Python? by devent · · Score: 1

      But Python is not on the BS Bingo book. You can find there: Web 2.0, Cloud, Synergy, etc. and JavaScript. Because Web 2.0 is the future and everything will be running in the web browser in the Cloud, they have to learn JavaScript.

      --
      http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
    2. Re:I may sound like a broken record, by Python? by narcc · · Score: 0

      Python? Disgusting!

      I've used that fetid abomination and I can find no circumstance where that would be (or should be) any ones first, second, or even last choice for implementing anything.

      As a beginner language, it fails so miserably that I'm almost at a total loss to explain the attraction.

      My best guess is that it has an immediate mode -- which anyone with two brain-cells to rub together can agree is great for beginners. Of course, once you've actually used Python, it should become abundantly clear to even minimally competent developers that it should never be used at all -- especially as a teaching language!

    3. Re:I may sound like a broken record, by Python? by martin-boundary · · Score: 1
      I suspect the simple issue is availability and graphics. Python is just not available preinstalled on any random computer, whereas a browser (which implies Javascript) is. If you're going to teach or require *any* language that's not already loaded on the computer, then half your students will never take the next step of downloading it, installing it, and trying it out. This is very important when you have no control over your students, when there's no formal classes or grades that depend on completing them. So Python or other languages never had a chance.

      To be competitive with Javascript, what the Python (or any other language) devs need to do is create a plugin for every major web browser, like a Java applet, but with NO installation. You simply go to the web page and it's there to use instantly (maybe download a component that's less than 1 meg). Obviously this wouldn't be the full Python, just a tiny core language with graphics capability.

      Sadly, educational suitability and the potential for bad habits is secondary to the question of availability. In the old days everybody learned BASIC instead of LOGO, because BASIC was just there, ready to use, as part of every OS of the time. To learn LOGO, you needed to 1) know it exists, and 2) be able to find/install it - that was enough of a problem to kill its systematic use by kids in their bedrooms.

      The good thing about Linux is that so many major languages are pre-installed. You can rely on gcc, Perl, Python, bash being there on just about any system. Onfortunately on the web, there's only Javascript, and it happens to be a crappy language.

    4. Re:I may sound like a broken record, by Python? by macshit · · Score: 1

      Because frankly, Python is no better than Javascript as a language (python is hardly "an extremely polished language with very few issues"). Both languages are basically "OK". Although both have some odd quirks (e.g. both have funny scoping rules, significant whitespace in python), they can reasonably serve the purpose.

      However Javascript also has the advantage that it's ubiquotous these days, in way that not even Python can claim to be. It's a reasonable choice.

      --
      We live, as we dream -- alone....
    5. Re:I may sound like a broken record, by Python? by lattyware · · Score: 1

      Python has really good language design, and has very few quirks. Scoping isn't weird in Python at all, and significant whitespace makes a ton of sense - encouraging good readability while reducing the insane amount of curly braces in most languages. Please give some explanation of what problems are actually there in the language.

      --
      -- Lattyware (www.lattyware.co.uk)
    6. Re:I may sound like a broken record, by Python? by Anonymous Coward · · Score: 0

      I hear lots of people banging on about Python. Myself, coming from a C++, Java and C background, find it HORRIBLE. I learnt BASIC on my BBC B, badly. Then I bought a book on Pascal and didn't finish reading it. Then I bought a book on C, didn't understand vast swathes of it, and then actually got my head down and learned C++. Very liberating.
      Of the small amount of Python I have done, I have found most of it doesn't appear to be in common with other languages. At least with C, the migration to C++ and Java is easy (similar syntax), and even JavaScript has similar syntax. Even PHP's syntax is similar to C++/Java, particularly the OOP model in it (blatant copy of Java).

      Python has none of these, so reading other languages is hard.

  46. Re:Javascript is already for kiddies anyway by Tsingi · · Score: 1

    They should get kids interested in a serious programming language instead of babby faget language like Javascript. Why not start them off right instead of starting them off faget?

    Faget Vulcan pet teddy-bear person.

    JavaScript is an awesome language. I'll concede that it isn't the best language to start with if you want to write structured code, but if you are skilled it is very powerful.

    That's not to say that a kid with smarts just starting out can't do a lot with a little code. Instant gratification.

  47. Perfect choice by Hentes · · Score: 1

    Javascript is easy, has a similar syntax to other C-like languages, no compiler/environment needed as a browser is enough, enables embedded scripting thus giving instant feedback. A good language for beginners.

    1. Re:Perfect choice by Anonymous Coward · · Score: 0

      > has a similar syntax to other C-like languages
      Nice. Same syntax, but totally different behaviour-wise. Variables have function-scope instead of block scope (unless you use let, which is relatively new); it's the only language with C-like syntax using prototype based inheritance, and so on.

  48. Java Script not a real computer Language by na1led · · Score: 1

    That's like saying a web developer knows how to program software. Developing scripts for the web, and writing software are two different things. They should be teaching JAVA, not Java Script!

    --
    -- By all means let's be open-minded, but not so open-minded that our brains drop out.
    1. Re:Java Script not a real computer Language by igomaniac · · Score: 1

      Javascript has closures and functions as first order objects, Java doesn't. Java has classes and inheritance, Javascript doesn't (but you can sort of implement it yourself). They are just completely different languages and need to be treated as such.

      --

      The interactive way to Go -- http://www.playgo.to/iwtg/en/
    2. Re:Java Script not a real computer Language by na1led · · Score: 1

      Javascript requires a web browser to run, it can't run independent, and you can't compile executable. Java is a true programming language that can be used on many different devices and platforms.

      --
      -- By all means let's be open-minded, but not so open-minded that our brains drop out.
    3. Re:Java Script not a real computer Language by spiralx · · Score: 1

      You've never heard of node.js (or other equivalents), and you can't compile a Java executable either.

    4. Re:Java Script not a real computer Language by Anonymous Coward · · Score: 0

      1) Agreed! "Java Script" is not a real computer language at all. "Javascript" most certainly is though.
      2) Javascript is a free language whereas Java is controlled by a company; something which really ought to be taken into account more frequently. "The foolish man builds his house upon the sand."

    5. Re:Java Script not a real computer Language by Anonymous Coward · · Score: 0

      You're right - "Java Script" is not a real computer language, but JavaScript certainly is - enough so that you can translate Scheme, Smalltalk, Objective-C and any language you can compile using LLVM into, you guessed it, JavaScript!

      http://javascript.crockford.com/little.html
      http://amber-lang.net/
      http://cappuccino.org/
      https://github.com/kripken/emscripten/wiki

      etc.

      It's also good for running Linux in your browser:
      http://bellard.org/jslinux/

  49. Re:Multi threading by ameline · · Score: 2

    Most programmers don't fully grok multi-threading issues. Ask your typical programmer what a lock convoy (https://en.wikipedia.org/wiki/Lock_convoy) is and you'll get a blank stare.

    --
    Ian Ameline
  50. squeak? by Anonymous Coward · · Score: 0

    JavaScript, unless you're using something like lively kernel, is pretty amorphous. Squeak would be a better way to learn more advanced programming.

  51. data structures more important than control flow by mspring · · Score: 1

    They should start teaching a language with rich constructs for data modeling.
    Once you have modeled your problem domain adequately, the control flow comes naturally.

  52. Unorthodox choice? by Anonymous Coward · · Score: 0

    Other web based programming learnifying things I've seen tend use javascript as a starter. Codecademy for example.

    Although I have been seeing places use coffeescript too.

  53. Re:Javascript is already for kiddies anyway by amicusNYCL · · Score: 1

    What if you want the application to be accessible to more than 58% of users (according to browser market share from Hitslink)?

    --
    "Our two-party system is like a bowl of shit looking at itself in a mirror." - Lewis Black
  54. f(x)['x'] = error by roguegramma · · Score: 1

    For function f(x){ return array('x'=>$x); }

    You can't even do the above in PHP because it was developed to make parsing easy (see $), not coding.

    I guess the validity of $x='x';$$$$$$$$$$$$$x; makes up for that ;-)

    It is also lacking a means to list variables in your scope, I think.

    --
    Hey don't blame me, IANAB
  55. Smart choice - it's accessible, and the future. by mckinnsb · · Score: 4, Insightful

    It's a great way to introduce kids to the basics of programming languages without miring them in the ( necessary as they grow more proficient ) details of memory management and computer science fundamentals such as data design and system architecture. It also falls into a very interesting class of languages - a class by its own really - which exposes kids to some of the concepts of procedural languages and some of the concepts of imperative languages.

    But more importantly, Javascript - whether or not more traditional computer scientists like I would like to accept it - is likely a gigantic component of the computing future. Its the language that runs on the most platforms, and is used for nearly everything. Right now, many of us are familiar with how Javascript handles interactivity on webpages, but did you know that Javascript is actually used to route the majority of phone calls placed through cell networks? Did you know that most SmartTV manufacturers ( GoogleTV, Samsung )are producing SDK's and API's to produce "Apps" on their televisions written 100% in javascript (instead of the "window" host object you have "volume"...etc)? Did you know that it's being used in factories ( along with python ) to control the movements of industrial robots? With the advent of server-side event-based asynchronous web programming in javascript like Node.js as well, and the beastly v8 engine being BSD licensed, its importance will only increase over time as people find more ways to embed it as the primary interface scripting layer.

    It's good thing to expose people to, for sure.

    1. Re:Smart choice - it's accessible, and the future. by g0bshiTe · · Score: 1

      Here's a better way. http://www.toontalk.com/ I bought this for my daughter when she was 4, the software was awesome with it's lego like look, she had the hang of looping for if whiles in a few days.

      --
      I am Bennett Haselton! I am Bennett Haselton!
    2. Re:Smart choice - it's accessible, and the future. by T.E.D. · · Score: 1

      but did you know that Javascript is actually used to route the majority of phone calls placed through cell networks?

      No, but that explains a lot...

  56. Worked in the 90's by Anonymous Coward · · Score: 0

    In the mid-90's, my high school was introducing students to programming via Turbo Pascal. It didn't catch my attention. The following year they switched to JavaScript, and that definitely worked.

  57. Re:Ouch... Javascript is broken in a number of way by toriver · · Score: 1

    Every language is broken in a multitude of ways - especially to users of different languages. Just watch a C# fan tear Java a new one, for instance. Or a LISP or Ruby programmer versus - well, everything else, really.

    Javascript is simple (but yes, inconsistent), and the runtime environment is already on your computer. If they find out they like programmibng, then they can progress into the minefield that is selecting a second language to learn for more professional use.

  58. Re:Ouch... Javascript is broken in a number of way by mwvdlee · · Score: 2

    The fact that commutativity does not hold for "[] + {}" is just wrong!

    If that's the worst you can think of in javascript, you must really hate C, C++, Java, PHP and probably most other languages ;)

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  59. Why worry about "keeping kid's attention"? by TheMathemagician · · Score: 1

    Programming does not need to be made fun - it already is fun - unless you're forced to learn JavaScript as your first language. Terrible decision; there are just so many better choices. I really don't care if a child is put off by {insert favourite language} not being flash-bang-whizzy. Let's be realistic here, they were never going to be programmers anyway. What they should be teaching is the idea of an algorithm not burdening kids with silly syntax for making widgets appear on a screen.

    1. Re:Why worry about "keeping kid's attention"? by Eponymous+Coward · · Score: 1

      Keeping in mind that a significant number of people visit Khan Academy from an iPad or iPhone, I think I would have chosen Javascript as well.

      Also remember that this is an introductory class. It will be teaching looping, branching, etc... I think you could easily implement all of the essential algorithms from Knuth's "The Art of Computer Programming" books in Javascript.

      I agree with you that burdening kids with syntax is counter productive. Personally, my favorite way to teach programming is with Lego Mindstorms. There's practically no typing involved and the results are very satisfying. Unfortunately, it's also very expensive.

  60. Suggest: by Anonymous Coward · · Score: 0

    English. Dammit.

  61. Re:Multi threading by gewalker · · Score: 5, Insightful

    Not happening to know the term "lock convoy" does not imply that said programmer is unfamiliar with the issues. If you learned multi-threading long ago (like I did), no-one had invented the cute description, but you certainly knew how what the condition was and possible methods of mitigation. Sounds like a stupid "tech interview" type of question.

    I have programmed using threads in a number of different environments (phtreads, dce threads, and windows threads) in a number of different languages, and have taught threaded programming -- I have also threaded needles, reattached buttons, sewed, embroidered and read most of the Dragon Riders of Pern series. I am a skilled and experienced threader. I had never heard of a lock convoy until now, but have certainly dealt with this precise issue before..

    I suspect you would not have just asked this question and "stopped the interview" because I did not know this term, but I get tired of hearing statements similar to yours, and worse, I've caught myself saying similar things.

  62. Re:Multi threading by Chakra5 · · Score: 1

    .:stares blankly:.

    --
    Get your facts first, and then you can distort them as much as you please.--Mark Twain
  63. In other news by g0bshiTe · · Score: 1

    The kids coding in Javascript at Khan Academy have produced better code than 90% of the web's developers.

    --
    I am Bennett Haselton! I am Bennett Haselton!
  64. Interactive JS lessons by YoJ · · Score: 3, Interesting

    I'm a fan of learning JavaScript as a first language, it can be presented in a nice way. One of the best parts of js is closures, it really gets them right. I put together some interactive js lessons to teach closures a little while ago, give them a try and let me know what you think.

    1. Re:Interactive JS lessons by spage · · Score: 1

      Nice work, I like it better than Code Academy because you show what you're testing for, CodeAcademy often leaves me guessing.
      Your editor is slightly better visually. I like Code Academy inserting the closing parenthesis and doing its linting in the editor as you type.

      Everyone blathering on about how Khan should have chosen some language X instead, please provide the URLs of comparably awesome interactive tutorials for language X with linting, syntax coloring, etc.

      --
      =S
  65. Re:Ouch... Javascript is broken in a number of way by NJRoadfan · · Score: 1

    Pretty graphics? Isn't that one of the things that made LOGO attractive as a teaching language?

  66. Re:Ouch... Javascript is broken in a number of way by DamonJW · · Score: 1

    a background in X would at least set them up for a lifetime of Y.*

    * Please note: advice only applies to mayflies and Cobol programmers.

  67. Re:Seems like a practical choice by datavirtue · · Score: 1

    Gawd....I had never seen it! It does look like a big pile of pudding!

    --
    I object to power without constructive purpose. --Spock
  68. Wow. by GmExtremacy · · Score: 1

    Why not Gamemaker? Why not start with Gamemaker? Gamemaker offers such extreme degrees of inefficiency (pure unadulterated slowness) that it would be perfect for teaching kids patience.

    Every true professional uses Gamemaker.

  69. Not to gore anyones Sacred Cow but by FlyingGuy · · Score: 1

    Teach them how to program first.

    The problem with JavaScript, Perl, Python, C++, C#, F# all of them is that they bypass the most fundamental elements of programming and obfuscate almost all of the nuts and bolts in objects and libraries for everything

    Take your even above average web monkey and ask them the difference between 16 and 32 bit numbers and they will think you are speaking Latin.

    The DOM is one of the worst, if not the very worst, POS to come down the pike and is not for anyone learning how to program from the ground up. If you want to teach people how to be web monkeys then do that, just don't call it programming.

    Step away from objects, step away from GUI's and actually TEACH them how to program, how loops work and interact and how storage works, the concept of variables, when and why and how to use them, global, local, the reasons for and against. The concept of lists, trees, and the things that actualy make all this "pretty" crap work.

    --
    Hey KID! Yeah you, get the fuck off my lawn!
  70. The dice game by Anonymous Coward · · Score: 0

    Codecademy 52 weeks of Java Script beat them to it.

  71. Not surprised... by Anonymous Coward · · Score: 0

    After all, I read John Resig's blog post about this in December 2011.

  72. Re:Ouch... Javascript is broken in a number of way by spiralx · · Score: 1

    Why would you try and add an array to a code block?

  73. The article doesn't make sense ... by Anonymous Coward · · Score: 0

    Khan has offered Python exclusively for at least the past several months. When I visit the Khan Academy, I don't see JS offered. Something is missing in this story.

  74. Re:Multi threading by Anonymous Coward · · Score: 0

    While I agree "Lock Convoy" is a dumb thing to hang anyone's hat on, his point remains. The simple fact is, even very "experienced" coders frequently to fail to understand the intrinsincs of multi-threading. I've worked at places where even the "experienced guy" couldn't properly address the subtlties of multithreading.

    The problem with threads is they are very subductive and subtly full of endlessly complex traps. Because its such an attrative feature to leverage, many inexperiecned coders blindly wonder in. And because concurrency issues can be hard to detect, many coders train themselves to does things dumbly and/or poorly simply because they do so in the past and got away with it.

    The number of people I've met at major corporations who really understand threading I can count on two hands, and I might not even need one of them. The fact is, threading is hard.

  75. I loved the pdp-8 architecture by Kupfernigk · · Score: 1
    It was like one of those 1920s motorcycles where you could see the push rods operating the valve rockers with the exposed hairpin springs. You could almost imagine the logic gates operating as the opcodes went in. We had a utility which could convert numbers from any base to another so long as it was less than base 37 (think about it.) And then there was the creepy shadow memory for the system management. The pdp-8 was a wonderful expression of what things were like between anarchy and when it all started getting mainstream and boring, when architectures were still up for grabs.

    Sorry, I can't always manage car analogies: I have to make do with motorcycles or boats.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
  76. Re:Multi threading by Dutch+Gun · · Score: 1

    Most programmers don't fully grok multi-threading issues. Ask your typical programmer what a lock convoy (https://en.wikipedia.org/wiki/Lock_convoy) is and you'll get a blank stare.

    Hmm... I've been programming threaded systems for years, but hadn't heard that particular term. I'm not sure it's indicative of a lack of understanding, because I just nodded at the description and thought "ok, yeah, it's a specialized contention issue." If someone claimed to know how to write multithreaded code and couldn't explain what a race condition or deadlock was, or didn't understand what lock contention was, then I'd

    That being said, I agree that many programmers don't fully appreciate how tricky it is to write correct and safe multi-threaded / thread-safe code. The problem is more that it's fairly simple to throw some long-running operation into a thread, but it's really, really difficult to write bug-free threaded code. I've found new programmers aren't scared of writing multithreaded code, and to me, that's just because they don't know enough to be scared of it.

    --
    Irony: Agile development has too much intertia to be abandoned now.
  77. A humble suggestion: Scheme by ndykman · · Score: 1

    Seriously, I credit a lot of my success in CS with being taught Scheme. There are free environments that are great for teaching, and you can start with a very reasonable subset of the full language and still do some fun stuff. And the fact that it isn't widely used is a big bonus in my opinion. Languages change, library change, but the fundamentals slowly change. Scheme makes it clear that programming isn't just about a language, it's about abstraction.

    Not saying that you give high schoolers a copy of SICP of course, but the fact that it is a stepping stone to that is really kind of neat in my opinion.

    Let me make it clear, I find Javascript's quirks and behaviors to be very frustrating at times, so I am biased against it. And, really, there are things that need to be fixed even if that means making a updated version that breaks some older scripts, so be it. Add a attribute to script that says "Hey, use the less-brain damaged version of JS" and be done with it.

  78. Re:Javascript is already for kiddies anyway by Half-pint+HAL · · Score: 1

    I will give you the benefit of the doubt and assume that this is a deep and cutting satire on the childishness of format wars....

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  79. First programming language? by gv250 · · Score: 1
    I'm confused:
    From TFA:

    John Resig of jQuery fame outlines why Khan Academy decided to offer JavaScript as their first computer language. With video, of course.

    From http://www.khanacademy.org/ :

    • Computer Science
    • Introduction to programming and computer science
    • Python Lists
    • For Loops in Python
    • While Loops in Python
    • ...

    How is Javascript the first language if they are already teaching Python?

  80. Re:Multi threading by adisakp · · Score: 1

    Amen brother... I wrote the concurrency library at our studio and a multicore memory system used in 2 of the top 10 console games of 2011 and while I'm aware of the issue of locks causing thread yields and have coded around the issue by implementing locks which spin before yielding, I've never heard the term "lock convoy" used to express thread starvation due to lock contention causing shortened processing quantums until now either.

  81. Graphical? by Tablizer · · Score: 1

    JavaScript is "graphical"? Being non-graphical is one of its great frustrations. We wouldn't need Flash and screwy incompatible CSS and DOMs if it was graphical. Did I miss something?

  82. Fine... by Anonymous Coward · · Score: 0

    Javascript is honestly not that good a language. But, to begin learning programming, it's certainly fine. A class such as "programming language concepts" where we did some exercises with a stack-based language, a procedural language, an object-oriented language, and so on is also a good idea. That way, if you switch to a different language, you will recognize some bits and pieces from these other languages instead of starting from zero if it's too different from (in this case) Javascript.

  83. Re:Multi threading by dgatwood · · Score: 1

    I've never heard that term before today, and I consider myself to be fairly well versed in threading and operating systems theory. The standard computer science term is "lock contention". Or, in particularly heinous examples, I often hear it called the "big giant lock problem"....

    I guess "lock convoy" is a Microsoft term.

    --

    Check out my sci-fi/humor trilogy at PatriotsBooks.

  84. How much did Oracle pay for that? by EmagGeek · · Score: 1

    Just curious...

  85. Yeah let's use a case-sensitive scripting language by PJ6 · · Score: 1

    without any good IDEs, or a compiler to highlight typos.

    Should be real fun for beginners.

  86. Lua by Anonymous Coward · · Score: 0

    Anyone that doesn't think of considering Lua should be gangraped in the anus.

    That is all.

  87. Greenfoot by Anonymous Coward · · Score: 0

    I think Greenfoot would fit the bill. It is visual, but is built on java objects - so they learn to assign varriables, move objects like turtles around, then change the properties of the 'turtles' in classes. Its objects first, but the visual aspect makes it great.

  88. general purpose by spage · · Score: 1

    Javascript is a general purpose language, you and several other commenters are conflating it with HTML/CSS. When and if implemented in a browser, it's effectively the only language you can embed in a web page, and one of several with a DOM implementation to allow programmatic access to HTML and CSS. Those are all messy complicated topics, but it's still a win that JavaScript is part of the environment where we spend most of our time interacting with computers.

    One could turn it around and argue that Python and Java aren't general-purpose languages because they aren't integrated into the browser unless you do a lot of messy work. Running standalone programs from the command line that do standard I/O is the niche paradigm these days, and if you want to write such programs you can do so in JavaScript with node.js.

    --
    =S
  89. R -- programming plus math, graphics by Jameson+Burt · · Score: 1

    Programming plus math, statistics, legendary graphics -- that's R.
    Just a programming language is a barren language for most people.
    Use a programming language that eases and magnifies another field/course.
    R dominates numerous statistics departments, biogenetics, and financial quants,

    R originated from AT&T (as S) at the same time as Unix and C.
    Many people start an R session whenever they login, since R can even do the trivial as a calculator with history and help.
    With vectors x and y, the following creates a good graph.
          plot(x,y)
    R has associative arrays (hashes) and parallel programming, native to R since the programmer often uses vector objects.

    http://www.r-bloggers.com/
    http://www.r-project.org/

  90. Its like math by zeyl · · Score: 1

    When you begin learning math you dont start with calculus. You start with basic addition. A person can learn the complicated concepts later.

  91. since when Javascript was considered a language? by Anonymous Coward · · Score: 0

    *ducks*

  92. John Resig recently joined Khan Academy by rsborg · · Score: 1

    So perhaps this decision to go javascript was influenced by the programming luminary John Resig (he recently joined Khan Academy [1] )?

    Or is it the other way around, did Khan Academy go and hire Resig because he's a javascript ninja [2] ?

    Either way, despite my discomfort with some of the features of javascript, this decision makes complete sense. JS has really been pushed forward by the ECMA [3] giving it a strong momentum for solid, controlled, future growth. Finally and most importantly, unlike any other language, javascript has the most available full programming environment, as the VM exists in every browser and IDE and testing tools (firebug, webkit inspector, etc) are numerous and powerful.

    [1] http://ejohn.org/blog/next-steps-in-2011/
    [2] http://jsninja.com/
    [3] http://en.wikipedia.org/wiki/ECMAScript

    --
    Make sure everyone's vote counts: Verified Voting
  93. Re:Ouch... Javascript is broken in a number of way by robsku · · Score: 1

    Why would you try and add an array to a code block?

    Apparently because it's inconsistent... I don't understand that either :) ...and it's not that I love Javascript, but I would try to justify my dislike with flaws that one faces with normal coding methods - some syntax inconsistency on something that you don't have any real world use anyway doesn't bother me.

    And as said, I don't like Javascript, it's just that with jQuery and/or other libraries I really like what I can achieve with it, but as far as the language itself goes, if I had a choice I would gladly switch to another language unless it somehow managed to be worse - I don't like Javascript language, I do love what I can do with it nowdays.

    --
    In capitalist USA corporations control the government.
  94. Re:Ouch... Javascript is broken in a number of way by spiralx · · Score: 1

    I agree, it's not the greatest language out there (that would be Python lol), but "modern" Javascript development using libraries like jQuery mean you don't worry about the warts and just get on with doing things quickly and concisely. Which I like a lot :)

  95. Re:Ouch... Javascript is broken in a number of way by robsku · · Score: 1

    Indeed - it's like graphics library in DOS times, browsers are like video cards and, despite that Javascript *should* ideally work on all browsers, you have to write your code separately for every video card (browser) you want your program to support, but with good graphic library you can simply use it's functions and it will detect your card (browser) and work accordingly :)

    --
    In capitalist USA corporations control the government.