CoffeeScript will mean giving up on JavaScript. The more popular CoffeeScript becomes, the less proficient the overall developer population will be at JavaScript,especially if they spend most of their time writing CS over JS. The problem at the moment is that the world still works in JavaScript, not CoffeeScript.
He rightly draws the analogy between jQuery and JS. I spend a lot of my time working on jQuery core, and we have definitely seen the phenomenon described in that blog. Five years ago when jQuery was created, just about every web developer knew JS quite well and understood the quirks of every browser and JS implementation. Now, they just assume that if something doesn't work consistently in IE6 then it must be a jQuery bug, because you know, jQuery is cross browser. People are now programming in jQuery and have given up on JavaScript.
If you're a CoffeeScript pioneer you don't see this. You already know the hard and ugly JS things that CS makes easy and beautiful, just like the early jQuery adopters. A few years from now if browsers haven't created native CS implementations but CS is popular, novice programmers will be dealing with the same jQuery-vs-JS dilemma. For example, programmers with weak JS skills will write CS and be baffled by the errors thrown from the bowels of the JS code they are forced to debug.
> "Five years ago when jQuery was created, just about every web developer knew JS quite well and understood the quirks of every browser and JS implementation."
False. Five years ago programs thought of JavaScript as a silly little non-language to add fantastic effects onto their serious back-end code. When Rails 0.6 added a way to do sort-in-place lists via ajax, and they worked every time, I remember feeling that this was surely some kind of dark magic, because who could write JavaScript that worked all the time with different back-ends?
What has actually happened is that the pool of people who used JavaScript five years ago, with in most cases an appropriate dash of fear, are now quite competent JavaScript programmers who can do fancy things. And newer programmers can get started with jQuery even without knowing browser quirks from the start, though eventually they have to learn them.
jQuery has lowered the barrier to entry, it hasn't made people stupider. It's made the prior intermediate-level js programmers into ninjas, and it's given newbies the power to do cool things and then complain when they find small problems.
CoffeeScript is the same. It lowers the barrier to entry for people who don't care to understand why the arguments array isn't a real array, or how functions definitions are hoisted if they don't come as part of a var statement.
Yes, this means that new users will complain because they don't understand the technologies underneath. And that's a challenge to us to be a welcoming and educational community that helps them learn.
> Five years ago programs thought of JavaScript as a silly little non-language to add fantastic effects onto their serious back-end code.
Back-end programmers may have felt that way five years ago, but there were plenty of people who were using JavaScript to write highly functional and responsive web pages in 2005. Don't forget that the original XHR object was created by Microsoft with IE5 as a way for Outlook to refresh a web inbox view without a roundtrip to the server.
"In a few years," Chrome and Firefox will have support for source maps. The average CS developer will be debugging in CoffeeScript, not JavaScript. The original author's argument is much weaker when this feature is considered.
The author of the people-will-forget-JS-in-the-future premise is specifically referring to the future. CS specifically solves a present-day problem--ugly JS syntax.
In the case that your prediction comes true, his (and my) concern that people need to know JS will probably not be as much of an issue. But then again, he'll be right about giving up on JS, and debugging in IE will still be a monster.
He rightly draws the analogy between jQuery and JS. I spend a lot of my time working on jQuery core, and we have definitely seen the phenomenon described in that blog. Five years ago when jQuery was created, just about every web developer knew JS quite well and understood the quirks of every browser and JS implementation. Now, they just assume that if something doesn't work consistently in IE6 then it must be a jQuery bug, because you know, jQuery is cross browser. People are now programming in jQuery and have given up on JavaScript.
If you're a CoffeeScript pioneer you don't see this. You already know the hard and ugly JS things that CS makes easy and beautiful, just like the early jQuery adopters. A few years from now if browsers haven't created native CS implementations but CS is popular, novice programmers will be dealing with the same jQuery-vs-JS dilemma. For example, programmers with weak JS skills will write CS and be baffled by the errors thrown from the bowels of the JS code they are forced to debug.