ClojureScript, Lisp's Revenge [video]
youtube.com
youtube.com
EDIT: Before viewing the presentation I wasn't aware who the presenter, David Nolen, was. I was aware of the online persona "SwannOdette" and his blog posts [1] were a major reason for me seriously considering ClojureScript. During the presentation I realized that "SwannOdette" and "David Nolen" are one and the same. His blog posts [2][3][4] are a lot more convincing than this video.
Some day I will write in vanilla Javascript the corresponding code for the examples in those posts. That will truly help me appreciate the advantages Cljs brings to the table. Incase someone else does that, please do reply here.
[1] - http://swannodette.github.io/2013/11/07/clojurescript-101/
[2] - http://swannodette.github.io/2013/07/12/communicating-sequen...
[3] - http://swannodette.github.io/2013/07/31/extracting-processes...
[4] - http://swannodette.github.io/2013/08/31/asynchronous-error-h...
Clojurescript uses CSP (same concept as Go channels invented by Tony Hoare) to allow simulated multiple concurrent threads of execution in javascript. How many compile to javascript languages have concurrency? not many.
Clojurescript has powerful immutability at the core of the language, macros that are so powerful they can add concurrency to single threaded javascript via a library.
I admit it's not simple to understand everything clojurescript has from a casual glimpse, but if you learn enough, it can really kick all the other compile to JS languages in the butt.
My dissatisfaction wasn't with ClojureScript but with the presentation. Given that I saw the presentation out of context (I don't know who the audience at the goto; conference was supposed to be - experienced FP developers looking to move to web or existing js web developers looking for something better). Purely from the presentation, I (who belongs the latter) wasn't really sold on anything. Maybe I wasn't the group being targetted.
Finally, I didn't watch the presentation because it was presented by David (I didn't who he was), I watched it for the title. It wasn't till midway through the presentation I realized SwannOdette is actually David. And that surprised me a lot cuz his blog posts are really good, and as I said really sold me on considering ClojureScript. I didn't intend to pick on David, maybe he just had a sub-par day. Especially after knowing David=SwannOdette :)
You just made every single Common Lisp programmer who reads your comment cringe.
Clojure is a very nice language and while it has no real innovations it does bundle a few unusual (for mainstream) concepts into a single easy to use package. However, you should wait with calling Clojure macros "powerful" until after you get access to readtable. Or wait, you won't ever, that's a feature, supposedly...
So it seams to clojure macro system is more powerful. That said that does not mean its better.
Also, Clojure macros are kind-of, a-little-bit hygienic, with their rules for identifiers resolution.
Anyway, I'd say they're rather similar in expressivity and capabilities, but I don't know both macro systems well enough to do detailed comparison.
And reader-macros can be achieved with a small hack [2].
I actually did the ClojureScript tuts via LightTable, which was slightly less complex than the alternatives, but still required a bit of fussing.
(Incidentally, modifying my emacs setup in order to work on a project is the very definition of "incidental complexity".)
This is the kind of attitude that keeps people away from your language. The amount of people who shun away from C# simply because they don't like the idea of Windows / Visual Studio should be a hint.
I guess I did forget about Light Table (as AFAIK it doesn't support Scheme or Common Lisp yet), which seems like the right thing to point beginning Clojure programmers to.
Hell, that's probably a big part of why Clojure became more popular than the previous Lisps.
This is really not true any more. LightTable is great for beginners, and there are more options for Clojure now. I'm developing Cursive, which is becoming pretty popular - Vim also seems to work well, Counterclockwise is good too.
And it's unfounded. Thanks to Lisps unusually regular syntax adding support for semantic editing features (paredit-like) should be rather straightforward in any editor. And accidentally paredit is also enough to make coding any Lisp way more pleasant than editing raw code in other languages.
See http://emacsrocks.com/e14.html for an overview.
I'm actually kind of disappointed that in the demo I saw adding parens manualy, one at a time, instead of using wrap-sexp etc.