Jeremy Ashkenas's proposal for minimalist JS classes
gist.github.com
gist.github.com
http://irclogger.com/.coffeescript/2011-01-05#1294280074
How is that different than the validation / error handling in the model set method in Backbone.js (in that they can run arbitrary code)? Is it just the distinction of side-effects in the language vs the framework?
Also, why should a = obj.b need to be any more predicable than a = obj.b()?
It seems like there are benefits to using getters / setters (ie, http://ejohn.org/blog/javascript-getters-and-setters/), and I actually think the syntax is cleaner "get firstName" vs "getFirstName". Curious to understand more about the objection.
for (key in hash)
hash[key] = null;
May or may not call a bunch of functions. It could turn out to be a debugging nightmare.The deal is that if you implement a property getter, you promise no side effects and fast execution (for some value of "fast"). If you don't do this, your code is broken.
Seriously, can someone please explain this to me?
Yeah, I know he didn't try to sell CoffeeScript on the client, but that isn't because its not better to use CoffeeScript on the client, its just because its not worth trying to sell to people if you are trying to get them into CoffeeScript. Sure it might be a bit harder to debug on the client, but not as hard as looking at a pile of JS.
* Some of us are actually comfortable with and enjoy programming in JavaScript. :)
* Are we absolutely sure as of now that adding the CoffeeScript abstraction will not introduce performance regressions and/or subtle bugs?
* Are the niceties and syntactic sugar of CS really worth the time I'll have to invest in mastering it? Or is this just another programming fad that everyone finds "cool" this month?
You still have to debug your Coffeescript in Javascript, so you still have to understand Javascript. Unlike, say, HAML, where you can't possibly do anything in HAML that you wouldn't know how to do in HTML, Coffeescript lets you avoid learning about JS prototypes by using Coffeescript classes and letting it translate for you. You'd better hope the abstraction doesn't leak.
I'm not against Coffeescript - I'm excited to start using it soon. I'm just saying that I understand why not everyone is.
If you mean "why do we still have to compile to Javascript," well, we'll have to do that at LEAST until every browser supports Coffeescript natively (currently none do, so you're looking at maybe 2025 when IE9 falls out of use), and probably beyond that (since there's little chance that MS will break backwards compatability with JS).