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."
No additional tools needed. Everyone watching a Khan video already has a JS environment.
Well, Javascript is not basic, and they can test their programs in any browser, but... why not scratch?
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.
alert("Khaaaaaaaaaaaaan!");
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.
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)
This move should be vindicated in the near future. But I do have some qualms:
... (insert other features here)
- 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.
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.
Funny, a search for JavaScript on Khan Academy has no results!
http://www.khanacademy.org/search?page_search_query=JavaScript
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".
They could have selected PhP.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
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.
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. :)
As opposed to unskilled and sloppy trolls (eugh!) who cannot spell faggot.
Khan Academy already has like 30 Python videos up.
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.)
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?
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
Yes Mr Khan, way to turn our youngsters into savages just like those who use VB and call themselves a programmer...
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.
he's already got several videos up with python... why the switch I wonder...
I am d3matt
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
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.
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.
Hope you don't mind me quoting you ... :)
https://plus.google.com/106639317314065291577/posts/irsF5UAvfsE
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.
Yes. You do.
Would you like a slice of toast?
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.
No problem. I'm honored.
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.
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
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.
How is Javascript proprietary??
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.
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?
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.
Dart!
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...
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.
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.
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
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.
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!
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.
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.
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)
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.
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.
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.
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
JavaScript, unless you're using something like lively kernel, is pretty amorphous. Squeak would be a better way to learn more advanced programming.
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.
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.
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
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
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.
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.
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.
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?
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.
English. Dammit.
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.
.:stares blankly:.
Get your facts first, and then you can distort them as much as you please.--Mark Twain
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!
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.
Pretty graphics? Isn't that one of the things that made LOGO attractive as a teaching language?
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.
Gawd....I had never seen it! It does look like a big pile of pudding!
I object to power without constructive purpose. --Spock
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.
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!
Codecademy 52 weeks of Java Script beat them to it.
After all, I read John Resig's blog post about this in December 2011.
Why would you try and add an array to a code block?
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.
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.
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."
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.
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.
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'
From TFA:
From http://www.khanacademy.org/ :
How is Javascript the first language if they are already teaching Python?
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.
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?
Table-ized A.I.
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.
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.
Just curious...
without any good IDEs, or a compiler to highlight typos.
Should be real fun for beginners.
Anyone that doesn't think of considering Lua should be gangraped in the anus.
That is all.
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.
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
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/
When you begin learning math you dont start with calculus. You start with basic addition. A person can learn the complicated concepts later.
*ducks*
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
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.
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 :)
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.