

ClojureScript, Lisp's Revenge [video] - tosh
https://www.youtube.com/watch?v=MTawgp3SKy8

======
amithgeorge
I happened upon the video through a different source yesterday. Saw it. Didn't
really get the title. Sure he quickly ran through the What-Why-How-Perf-
Examples of ClojureScript. Had I not already been interested in
Clojure/ClojureScript, I would have walked away from the talk thinking whats
the big deal? Other languages also compile to JS and vanilla JS isn't all that
bad once you get to know it. So yeah, just by watching the video, I didn't
understand what the title meant by 'Lisp's Revenge' or even 'Hoare's Revenge'.

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/](http://swannodette.github.io/2013/11/07/clojurescript-101/)

[2] - [http://swannodette.github.io/2013/07/12/communicating-
sequen...](http://swannodette.github.io/2013/07/12/communicating-sequential-
processes/)

[3] - [http://swannodette.github.io/2013/07/31/extracting-
processes...](http://swannodette.github.io/2013/07/31/extracting-processes/)

[4] - [http://swannodette.github.io/2013/08/31/asynchronous-
error-h...](http://swannodette.github.io/2013/08/31/asynchronous-error-
handling/)

~~~
andrewchambers
David is a great guy, but sometimes his talks don't get the point across in a
powerful way.

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.

~~~
klibertp
"macros that are so powerful"

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...

~~~
divs1210
Clojure has something better than CL reader-macros [1]. These are name-space
specific, and more composable than CL's reader macros.

And reader-macros can be achieved with a small hack [2].

[1] [http://www.infoq.com/interviews/hickey-clojure-
reader](http://www.infoq.com/interviews/hickey-clojure-reader)

[2] [http://briancarper.net/blog/449/clojure-reader-
macros](http://briancarper.net/blog/449/clojure-reader-macros)

~~~
lispm
That's a just small part of Lisp's reader macros.

------
mattdw
I really like Clojure (and have enjoyed David Nolen's CLJS tutorials and
guides), but I find ClojureScript to have terribly arcane tooling. Despite
being familiar with Clojure, it's still 10 minutes of cargo-culting and copy-
pasting before I can start actually working on a ClojureScript project.
Slightly ironic for a language which places such an emphasis on removing
"incidental complexity."

~~~
macmac
If Emacs is your thing, which it should be if you do Clojure, DPPs starter
project Spiffy, will give you very decent setup in a couple of minutes.
[https://github.com/dragonmark/spiffy](https://github.com/dragonmark/spiffy)

~~~
skrebbel
> _If Emacs is your thing, which it should be if you do Clojure,_

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.

~~~
ANTSANTS
That's more of a Lisp problem than a Clojure problem. All the Expert Lisp
Programmers settled on Emacs many moons ago (as in decades past) and no one
has bothered to write another (good) Lisp-friendly text editor since. And
well, you can't really write Lisp without a suitable text editor, so all the
Lisp neophytes either give up or learn to cope with emacs and eventually
forget about replacing it.

~~~
ode
Could you explain what you mean by a reasonable text editor? Thanks

~~~
lgas
I suspect he means one that has paredit.

~~~
ANTSANTS
Even before that, it's shocking how few text editors have basic Lisp
indentation and REPL support.

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.

------
elwell
David Nolen is passionate, bright, and brilliant. I watch some of his talks
every now and then when I want to get hyped up to get some coding done.

~~~
ChaoticGood
David Nolen inspires me with his grasp of programming concepts & paradigms.
Watching his talks and the other clojure geniuses truly inspire me. You are so
right about the passionate, bright, and brilliant part. I feel his enthusiasm
to iterate the world into a better place to code in.

------
borlum
Goto conference is pretty awesome. Saw this live in DK was really inspiring.

