EDIT: passage from book/site: "As far as programming skills, we assume you have had some exposure to computer programming using some language. If that language is Small Basic, great!! We offer two beginning Small Basic tutorials that could help you gain that exposure (see our website for details). But, if you’ve ever programmed in any language (Visual Basic, C, C++, C#, Java, J#, Ada, even FORTRAN), you should be able to follow what’s going on."
Link: http://social.technet.microsoft.com/wiki/contents/articles/1...
There are more elegant languages (lisp, lua, scala, python) but they fall short at some of mentioned points.
I assure you, JavaScript programmers understand JavaScript. No need to project onto others.
2) Runs essentially everywhere
3) Practical (lots of jobs, syntax is close to that of other important languages)
4) Easy to share your creations with friends (see 1 above)
5) Has REPL, garbage collection, closures, objects, recursion, anonymous functions... soon to have TCO.
6) Can be a compilation target for other languages
7) Good libraries for media, 3D graphics
8) Hard for a beginner to trash the machine (at least with browser-based JS, Node of course is a different story)
Yeah, it's pretty ugly in spots (it's certainly not as aesthetically pleasing as Scheme), but there are some real advantages there.
Learn to program. Don't worry so much about the language.
It's unfortunate it's a mess of a language and evolving too rapidly.
GWBasic, QBasic, and later TI-Basic were some of my first major forays into software, and I worry a bit when there's not a super easy way to get a game out there - however simple, because those are great gateway drugs.
For BASIC, this meant easy access to graphics modes, and some basic "BEEP" and noise playing ability.
These were all installed by default -- something that's not true of most programming tools today (well not entirely, OS X does have them! But not game/graphics libs), and having the source code to things like gorillas and snake helped. Many people could discover them completely by accident and boom, you're a programmer!
And that's all you need.
JS has a bit more learning curve.
OT: I think the glossy production of games these days may also be a negative factor, for those that know they can take millions of dollars, people trying to reproduce this result at a young age (or even as older hobbyists) may get disllusioned, give up, and not build something.
Just as DevOps culture has encouraged sharing how tools works at meetups, I wish this happened more for indie/homebrewed game development.
How to program is entirely different. It involves breaking down problems, creating abstractions for those problems, and turning them into code. And JavaScript is the one language that gets out of your way and lets you create programs that give new learners immediate feedback in a web browser.
Python and Ruby are great and all, but this is 2015 and new students are not that interested in black and white terminal applications. JS and HTML make it easy to make things closer to what they experience.
People my age learned to program while playing text adventure games. People now want to make mobile games, XBox games, or, at least, web things. And JS makes that easy.
In full disclosure, I don't much like JS. But I know it quite well.
I think the intention here is to somehow reach a point where the understanding is complete. As if one can say "There, now I understand all of [insert programming language]." and tick off some item on their career progression or bucket list. It's simply not like that.
Well, they used to for a bit in the UK
https://en.wikipedia.org/wiki/Initial_Teaching_Alphabet
as a result of which I still (5 decades later) sometimes have to stop and think about the spelling of quite routine words. So I agree - toddlers get a subset with a restricted vocabulary and simple grammar but one that is actually a subset of English.
Now - if I wanted to learn enough Javascript/CSS/Canvas stuff to make a series of 'drag-gable diagrams' for use on an interactive whiteboard (e.g. area of trapezium or pythagoras' result) where shall I start? I have the head first book and I sort of like their approach.