Hacker News new | comments | show | ask | jobs | submit login

I guess you have had some experience that explains this sentiment of yours, even though I can't guess at what it is.

To me, CoffeeScript is pretty much to Python as Clojure is to Common Lisp, as far as syntax is concerned. It's similar enough for syntax not tripping anybody up.

One of the problems with JavaScript's C-like syntax, IMO, is that it makes people think in a C-like way. CoffeeScript's syntax brings out the functional qualities of JavaScript in a nice way. Writing CoffeeScript makes me a better JavaScript programmer.

Further, if you're working on a Node stack there are a few levels where CoffeeScript and JavaScript can interact. Different modules can be written in either language. You can expose a http.Server interface in your application. If you're on Connect/Express, you can mount routes to apps written in either language, or even Zappa.

And if you want a moratorium on new syntax, I suggest you stop learning new syntax. I look forward to a future where syntax moves further into the background.

My experience stems from learning the language of the week for twenty years until getting serious about learning lisp, and coming to see that syntactic innovation at the language parser level is a waste of time. Syntactic innovation should occur through a macro facility that gives everyone, not just the parser-writing language gods, tools to build a language that suits their needs.

That is why CoffeeScript is ultimately uninteresting if perhaps useful to people who don't understand or are not in a position to use lisp.

In my experience, JavaScript's syntax has never encouraged people to think in a C-like way. In a Java-like way, perhaps, but not really even then. People seem to get, if they're remotely clueful, that JavaScript programming calls for a lispy approach. It's all the damn parens and (optional) semicolons and braces and no-win indenting scenarios that frustrate people who try to exploit JavaScript to its fullest.

Yes, CoffeeScript solves these problems and others, but through the introduction, as I said before, of yet a new set of rules that result in whitespace-sensitive line noise code that requires frequent contact to stay familiar with. And again, I'm a busy person: a new language wastes my time because I already need to write shell scripts, Clojure, and Python in a daily basis. I know JavaScript, even if I dislike it.

And if you're going to learn a language that doesn't help your resume with The Man, you may as well learn a language that can change your life. Like a lisp.

Lisp's flexibility is more of a theoretical advantage. In practice, particularly in common programming contexts, I think it's more valuable to have a richer, standardized syntax. Sometimes its better to nail down a few degrees of freedom in order to better exploit others.

I agree and disagree with you. Vehemently. Most programming tasks will not require writing macros because most programming tasks amount to solving understood problems. But those programming tasks will be accomplished and made tractable and tolerable through the use of macros that someone else wrote.

Think of the analog of writing a desktop application: there are many object-oriented desktop app frameworks where you can write pretty rich apps exclusively by instantiating existing classes, and this is possible because some domain experts designed a framework for writing desktop apps.

Macros—which I've been using as a shorthand for "syntactic innovation"—are the same way. Someone writes e.g. a web application framework that consists of some macros, perhaps of deep skankiness, that let you write clean, obvious code that solves whatever problem in the web application domain that you're currently confronted with.

I've heard this argument made many times, but where's the evidence? If true, we should see Lisp used disproportionately at the cutting edge of software design. Lisp is somewhat more common in these contexts, but no more so certainly than languages without macros like Erlang & Haskell.

I will grant you that people are doing interesting things in languages other than lisp, and in that in many of those situations, when the results are interesting, you see lispers smugly replicating those systems and saying, "That was easy; we could've done that." But they didn't.

That said, I think the various lisps out there have plenty of user—and by that I mean programmer—success stories. My favorite right now is Cascalog. It's an amazing, life changing tool for anyone who needs to analyze data sets using Hadoop. It makes something that would otherwise be too difficult (given the time I have) to even try to do into something that is fun. Nathan Marz, Cascalog's author, should be considered for a MacArthur genius grant.

Cascalog, incidentally, would not be nearly so amazing if not for the relatively few macros that tie everything together.

Someone please tell me what Hadoop, PIG, HIVE, Cascalog, et al. are doing that is fundamentally new? Reinventing the unix FILE, unix pipes, lisp, awk, sed, grep in a new "distributed bash shell"?

I don't think this stuff, while brilliant and clever and useful, qualifies for a MacArthur grant when one is standing on the shoulders of N CS giants reimplementing their ideas with few truly novel improvements.

MaCarthy, Kernigan, Thompson, Richie, McIlroy etc are those giants.

Nathan went to one of the Clojure meetups in S.F. I didn't get a chance to talk to him but somebody else did a demo of Cascalog there. Cool stuff, I agree, and a good example of the flexibility of Lisp.

I think a lot of people would still balk at the syntax though, and prefer something with similar functionality and more comfortable syntax, even if it was a lot more work to implement such a thing.

  syntactic innovation at the language parser level is a
  waste of time
We are all language parsers. CoffeScript makes that easier to do. It may make very little difference what to parse to the computer, but it may be big for us, humans.

  learn a language that can change your life. Like a lisp.
Whoa. The language that changed my life (a bit) was English. And by the way, do you literally mean lisp, or just functional paradigm?

I think CoffeeScript is easier for certain values of "easier". My position is that there are important senses in which easier can mean harder. You know, like how worse can be better.

I literally meant a lisp. I'm a big fan of mostly-functional programming, but a functional tendency is just one of the features that hang together—along with the absence of syntax and lexical scoping and macros and maybe something I've forgotten—that make lisp what it is.

My natural style is polemical. My thoughts tend to the nuanced. That's often a bad combination.

I totally respect that CoffeeScript is just not your cup of tea. But non sequiturs like "it's whitespace-sensitive line noise code that requires frequent contact to stay familiar with; use lisp instead" are elitist, unhelpful and just not likely to convince anyone about anything. Really, why that tone?

I'm really not being that much of a hater. If I had the freedom to choose one language and use it for everything, I might not have a problem with a language that possessed the terseness of APL or Perl or Haskell or whatever. If a language truly were the Hundred Year Programming Language, that would be fine, because the investment you make in it would pay dividends for the rest of your life, and you could keep it in your head because you'd be using it all the time. But we don't live in that world.

I think lisps are too crufty. I prefer whitespace to parentheses.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact