I have taught JS in higher education to complete beginners for three years now and have been very successful doing so. The secret is that you teach how to program, not how to JavaScript.
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 agree with this sentiment. We don't need new, simpler languages to teach programming concepts; we just need a better approach to teaching. We don't skip teaching the English language to toddlers in favor of a simpler one. I learn "cat" before "encyclopedia" and "hungry" before "enlightened". Programming languages have similar levels of abstraction so one can start with basics and allow the growth/understanding/grok to come from exploring the depths of abstraction inherent within.
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.
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.
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.