4 ms·
I can read it but it's a struggle. Much like reading Ruby, for someone who comes from Python. The syntax doesn't quite make sense to me and its usage varies bet
by shazow 13y ago
I can read it but it's a struggle. Much like reading Ruby, for someone who comes from Python. The syntax doesn't quite make sense to me and its usage varies between authors—a bunch of things are optional and used unpredictably (parenthesis, lambdas, indent-alignment).
Despite the Pythonish indent-based blocks, CoffeeScript is very much Ruby-like in syntax and culture. From my experience, fluent Ruby readers enjoy CoffeeScript much more.
Regardless, the point is that CoffeeScript != JavaScript. Doing things like answering JavaScript questions in CoffeeScript is simply inconsiderate and not very useful—much like answering Python questions in Ruby.
It's true—I could go ahead and learn CoffeeScript and become more fluent at it if I wanted to, but I don't. I actually like JavaScript as it is, especially the newer specifications. Same way I choose to continue using Python rather than learn Ruby more thoroughly so that I can benefit from random Ruby answers to my Python questions.
- gfodor 13y agoI think making analogies about this is hard. Programmers are used to thinking about languages as Big Things that change the way you think. This is not that. I would encourage you to dedicate a block of about 30 minutes to port a single piece of non-trivial JavaScript code to CoffeeScript. You'll almost certainly neutralize any hangups you have in this short period.
- vinceguidry 13y agoThe first time I tried to do this, it forever changed the way I write Javascript.
- tommaxwell 13y agoVery solid points. As someone that also enjoys JS as-is, it really frustrates me when people use CoffeeScript in JS answers and tutorials.
- lloeki 13y agoWile I don't consider them to be solid points (see my reply), yours is a solid one: when one asking a question (say on SO) asks speaking in JS tongue, I'd expect the person answering to reply in JS, simply out of courtesy. And conversely.
- xdissent 13y ago"Doing things like answering JavaScript questions in CoffeeScript is simply inconsiderate and not very useful" Fuck me, right?
- tommorris 13y agoStrange. I know Ruby and Python and switch between them quite frequently, but generally prefer Ruby. I loathe CoffeeScript. My problem with CoffeeScript is it imposes extra burden—to learn the syntax, and to learn how the build tools and process works (which, once you factor into account the various different web frameworks like Rails, Django, Flask and whatever brand of crazy syrup the Node people are currently drinking can be quite substantial)—but the benefit isn't there. CoffeeScript is just JavaScript but prettier. That's not a worthwhile tradeoff for me. When Rails started doing CoffeeScript, I just opened up ~/.railsrc and popped --no-coffee in there, and my life has been a lot less painful. CoffeeScript fixes the things about JavaScript that are least significant to me in terms of developer pain (semi-colons, curly braces and so on) but does nothing to address the things that I hate about writing JavaScript (oh, the weakly-typed type system for one thing). If a front-ender on my team started using CoffeeScript on a project I work on, I'd take him to one side and say "it's fine to practice weird kinks in private, but compile it into JavaScript before you check it in". :)
- lloeki 13y ago> does nothing to address the things that I hate about writing JavaScript (oh, the weakly-typed type system for one thing It can't because it's actually JS, by design. Yet it dutifully tries as hard as it can within this design goal by e.g making its == compile to JS ===. Maybe you'd rather be interested in ClojureScript or Dart, which use JS merely as a VM instead of their systemic core. > If a front-ender on my team started using CoffeeScript on a project I work on, I'd take him to one side and say "it's fine to practice weird kinks in private, but compile it into JavaScript before you check it in". :) If a back-ender[0] were to come to me-as-a-front-ender (since I'm equally both), and tell me what language to use, I'd tell him to, well, mind his own server-side business and let front-enders use whatever language they deem able to make them go from A to B in the most clean, reliable, and efficient way possible to them, or else I'll make them rewrite their stuff in NodeJS under cover of both ends being able share and reuse code, just to make them suffer ;-) [0]: which I don't know if you are or not, but given the substance of your comment, I'd venture mostly the former.
- masswerk 13y ago
- lloeki 13y ago> CoffeeScript != JavaScript [...] Python != Ruby I beg to differ, CoffeeScript really is JavaScript, written (literally) differently. CoffeeScript is merely a different formal language+grammar[0] that can (and is — almost) translated word for word into the same core. The semantics and underpinnings are exactly the same as with JavaScript. Conversely, were you writing Python with a Ruby-like formal language, it would not give you things that are profoundly Ruby, like blocks or inheritance model (classes and modules, singletons, method resolution) or open classes or require. The opposite is completely true, as writing Ruby in a Python formal language would not give you decorators or (python) modules with their imports and namespaces. CoffeeScript vs JavaScript is literally a bikeshed over the very same core. (That said, I'm in the CS camp because I find the language requires much less overhead to keep code safe and sound, especially when dealing with not so potent developers that just can't seem to understand that yes, var is damn important) [0]: in the mathematical sense, i.e http://en.wikipedia.org/wiki/Formal_language http://en.wikipedia.org/wiki/Formal_language
- anaphor 13y agoYes, this is what I've been saying all along. CS does not alter the semantics of JS, it is just a different syntax for the same language. A PL is not just its syntax. I sometimes hear new programmers say something like "it's easy to learn more programming languages once you know one, it's just syntax" and I'm not sure where they're getting this idea from :(