6 ms·
We don't want your coffescript
- Horusiath 13y agoI'm not a CS lover, but I think most of your arguments are invalid. You say that you don't like CoffeeScript because it generates JavaScript code you don't understand. But do you understand what machine code will JS generate? No? Why? Maybe because you don't care... In general same thing applies here. If you need to debug generated JS, use source maps. This argument is not an excuse. Beside, CS is fairly simple in translating to/from JS. If you think it's not, try use dart2js ;)
- squiggy22 13y agoAssembler is hard. JavaScript is not. It's a layer of abstraction that makes no sense to me either, particularly when there's a community of JavaScript enthusiasts already out there. If I was looking for open source project commits I know which I'd use.
- bayesianhorse 13y agoCoffeescript is a tool rather than a language. The syntactic conventions of this tool form a sort of "shorthand" for "best practice" javascript which happens to be also almost as easy to comprehend as javascript itself, amounting to a net productivity gain. Given that, coffeescript is nothing beyond javascript. It does not have its own ecosystem, its own libraries, its own type system or any of the other baggage that comes with some other compile-to-javascript systems.
- gfodor 13y agoAre there people that seriously can't just read CoffeeScript as-is? Are there seriously people that can't scan through the CoffeeScript docs in about 20 minutes and pick up the language more or less? The first time I saw CoffeeScript I immediately realized, oh, fuck yes, this is obviously better, and switched over to it immediately. I was productive with it instantly. Is it really something worth spending your time arguing about in either direction? I mean, it feels like telling someone to quit using their English accent or slang when you only understand American. Reading CoffeeScript code is hardly an effort in trying to decipher a compiler, almost all of CS's constructs do exactly what you expect if you'd have to guess, and where they are not obvious the non-obvious is due to Javascript's oddities, not anything to do with CS. A better analogy for CoffeeScript is not another language, but it's Javascript slang or shorthand. It's a practitioners dialect of the language.
- invalidOrTaken 13y agoAgreed completely. My only issue w/coffeescript is that, uh, I like clojurescript better. But clojurescript is all the things coffeescript is, just more---further from javascript, more concise, less compatible with standard js tools.
- smilekzs 13y agocoffee-script is not less compatible with standard js tools. Again, "it's just javascript" and you can use backticks in coffee to get embedded js. Common mistake made by coffee-script-nay-sayers.
- invalidOrTaken 13y agoGive me a break, you know what I mean. When you look at the page source, do you see embedded coffeescript? Can you debug in coffeescript with the standard tools? I know these things aren't possible and shouldn't be expected b/c coffee is a "compiled" language...but you can do them in javascript, and telling the vanilla js programmer that they're "exactly the same" is being less than honest.
- smilekzs 13y agoFor "vanilla js programmer", coffee-to-js-correspondance probably doesn't matter anyway. But the point of coffee is that compiler output is very straightforward. While I have to admit that tooling is far from good enough at present, I personally have no problem reading any js generated by coffee, even without source available to me. Apparently many[citation needed] coffee users can do this. What really made the "vanilla js programmer" feel uncomfortable, I speculate, is the correct way of handling javascript oddities, such as handling nulls (`?` in coffee). They are daunting -- but ignorance is no excuse. Once you start to populate these patterns yourself in your javascript, not only would you immediately recognize them in coffee-generated js, but also you'd appreciate that coffee abstracted them. I think these common points against coffee mostly apply to other compile-to-js languages such as clojure-script, where the generated code almost always made no sense to a "vanilla js programmer".
- ryderm 13y agoIn my experience, it took essentially zero time to understand and be able to write simple CoffeeScript. Yeah, it will take some minor effort, but I see it as as parallel to templating languages in terms of your argument. It is faster and cleaner to write, and makes my life easier. I have hardly (I think never) needed to look at the output for debugging, but when I have looked out of curiosity it seemed reasonable, just with strange variable names. Does anybody have examples of some CS code that only differs from JS in terms of syntax (eg. not defining a class or something) but compiles to something weird?
- gfodor 13y agoI agree and I can't help but think that all the concerns about source maps and being unable to read the output comes from people who saw the transpilation aspect to the language and freaked out, and never actually tried to use it to get something done. The only time I had to look at the source was when there were bugs in the compiler. (This was years ago, and I submitted patches.)
- hayksaakian 13y agoMy biggest problem with CS is it's a space sensitive language that comnpiles to a space insensitive language. Given that you'll typically interact with wild west JS that adheres to no spacing conventions, having to juggle strict spacing vs arbitrary spacing seems looks a headache.
- smilekzs 13y agocoffee-script compiler output is pretty well-formatted -- so it's indented correctly even though javascript does not require that.
- smilekzs 13y agoThe author mentioned the ES6 problem, which I think is the only valid point made in the whole article (others are way too subjective). Despite the hope that ES6 could be usable as-is, there's always the legacy syntax problem -- and the same applies to coffee-script (and its various forks). Some bad parts of javascript are going to stay in ES6 -- solved beautifully by pre-ES6 coffee, but due to the changes elsewhere we'd have to start over. It remains unclear what we would be using when ES6 gains traction.
- lcedp 13y ago> Always compile your code down to JavaScript before posting a question to StackOverflow, or replying to a blog post. You might even learn things about JavaScript itself, too. I don't see author's enormous arrogance backed by any efforts to think about his reasoning.
- cnp 13y agoagreed.
- _random_ 13y agoTypeScript is the best bet if you want to write today's JS the ECMA6 (Harmony) style. It's not like CofeeScript.
- standup75 13y agoI do love CS and I don't think people should answer js questions writing CS code. This is just rude. If you write your blog in CS, it's your choice, it just limits your audience. Seeing such an angry reaction about CS is a good news, it just means that it is popular. And for the ones who think CS is just pretty js, I suggest this reading http://aseemk.com/talks/intro-to-coffeescript http://aseemk.com/talks/intro-to-coffeescript
- dpweb 13y agoYou need to get more benefit from the abstraction than the cost. I couldn't find it, in cs. I've made thousands of mistakes (on a daily basis it feels like). In 17 years I don't think I have ever once forgotten to put 'var' in front of a variable declaration.
- krapp 13y agoWhat i've never understood about coffeescript is, since it compiles to javascript, why not just learn to write javascript in the idioms that coffeescript generates? No one would have a problem suggesting that a developer who only used jQuery actually learn how to code in standard js without the syntactic sugar. CS doesn't compile to bytecode, it compiles to an actual, human-readable and editable language. So why not just learn that style of javascript and save yourself the hassle of pretending there's a second scripting language for the web?
- unmei 13y agoAbstracting away the messiness of classes in JS is justification enough for CS, IMHO. Also, to use your above example, I agree understanding that style of JS is important, but that doesn't mean you shouldn't use the tool.
- vinceguidry 13y agoI don't understand the claim the the outputted Javascript is hard to read. Whenever I have a problem with Coffeescript, the first thing I do is look at the output, usually in the Chrome devtools. If it doesn't compile, I'll yoink the offending code out and feed it into the linter at coffeescript.org. It is by far the least odious part of my workflow. Part of me wants to claim that if Coffeescript is getting in your way, you're trying to do too much. I consider it a code smell and start to wonder what needs to get refactored.
- timruffles 13y agoI'm happy to go head to head with this link baiter on who knows Javascript better :). I'm not going to take "you might even learn something about Javascript" from someone who says that a simple transpiler is a "black-box" that's totally beyond them. p.s and a link-baiter than has a loading screen on their blog that crashes Chrome on iOS
- pcx66 13y agoIs there a mass CoffeeScript-answers-to-JS-Questions taking place on SO? Without even pointing to some instances of CoffeeScript-ers arrogance/mischief, ranting like that is not a nice thing to do.
- skilesare 13y agoCoffeescript has made me roughly 6x-8x more productive in writing 'javascript.' I can't fathom how anyone that spends more than 4 hours trying to use doesn't see the same results. My biggest fear was debugging, but it was/has been absolutely no issue whatsoever.
- stepik777 13y agoYou don't understand what asm.js is for, right? It is not meant for writing code in it, it is for compiling code from other languages to it. Well, sometimes you may need to write code in it for optimization. But the code you point to looks complicated not because it is written in asm.js, but because algorithm itself is compilcated. If you will rewrite it in any other language it will still contain all of these magic numbers and strange operations. In fact, almost any hashing algorithm looks like this. Just open wikipedia page for sha-1 or md5 and look at pseudocode.