

Some musings on Scala and Clojure by a long time Scala dude - nuriaion
http://skillsmatter.com/podcast/java-jee/some-musings-on-scala-and-clojure-by-a-long-time-scala-dude

======
eranation
To anyone deciding between Scala and Clojure:

If you want a simple and concise syntax, hate long compile times, don't mind
polish notation, want purer functional programming, don't need an IDE, and
prefer dynamic typing, Clojure might be your cup of tea.

If you like using an IDE, autocompletion, refactoring and almost 1:1 Java
interoperability, want a statically typed language with both functional
programming and OO and still be able to do things you can't do in Java (like
duck typing, "pimp my library", and dynamic method names), need a language
that has high adoption chances in both Startups and Enterprise Java shops -
and don't mind LONG COMPILATION TIMES, (and fine with never really fully
understanding CanBuildFrom) Scala might be your better choice.

If you didn't choose Scala ONLY because of long compilation times, make sure
to give Kotlin a look. If you didn't choose Clojure because it's dynamically
typed or because (not (like you polish_notation)) then try Haskell

~~~
profquail
Clojure has _core.contracts_ now, which can be used to get some of the same
correctness guarantees you can get from a strong type system.

[https://github.com/clojure/core.contracts](https://github.com/clojure/core.contracts)

~~~
stewbrew
Just for the records: strong != static typing && Runtime contracts !=
compile.time type checking

~~~
danneu
Also, there's
[https://github.com/clojure/core.typed](https://github.com/clojure/core.typed).

I don't have much experience with static typing outside of basic Java interop,
but I gave it a shot on a recent project and it was pretty cool once I got the
ball rolling and it caught my first actual bug.

~~~
stewbrew
Yes (though I find it painfully slow) and there is more but making use of
those would most often require you to duplicate type information.

------
mattdeboard
Where the hell is the actual content on this website? Everything is an ad.

~~~
gus_massa
I stared to it for 10 minutes too! The real content is the
podcast/presentation on the top right. It’s a vimeo video that has a ship and
a press.

------
dkhenry
I thought Pollak went on to Haskell after scala moved on without him.
Hopefully the clojure community will learn from the mistakes of scala and not
give him too big of a platform to try and monetize.

~~~
wpietri
Could you say more about the background here? Scala's been on my "maybe" list
for years, and I'm still trying to figure out how popular it's going to end up
being.

~~~
stewbrew
David Pollak is the author of the lift framework. Typesafe chose Play as its
web framework.

~~~
dkhenry
In addition he ran scala-tools.com which he opended up ( kindly) as a nexus
host for lots of early scala tooling. However when Typesafe snubbed him he
decided to divest himself of it, but not before asking someone to give him
some money for the domain name ( we don't know how much he never said ). The
community then needed to scramble for alternative hosting. Also on his way out
he wrote some very negative posts about the language.

------
stormcrowsx
Scala and Clojure are built for two different purposes, both were made with
different goals and problems in mind. This type of comparison is the same as
comparing two different shop tools. On one hand you have a scrollsaw and on
the other you have a tabletop saw. They are for two different purposes, and
you won't find many people comparing the two. Programmers need to learn this,
use a language for what its good with.

Language designers should also keep it in mind when describing their language.
"I made this language with these problems in mind, and these goals in mind".

~~~
jaxytee
He actually touched on this towards the end of the presentation. To simplify,
he states that Clojure is about data and Scala is about types. When
accommodating dynamic data, it's easier to use Clojure because of the ubiquity
of Maps as the primary data type and the nice handling if Null values via
Clojure's Nil type. In Scala, dynamic data is dealt with using the Option
Monad, and this adds layers of complication to your code.

~~~
stormcrowsx
Yeah but by and whole the talk was more about cons of Scala than pros. If your
going to describe a language in terms of another you should list what both are
good and bad for. It was a very biased talk that makes it sound like Clojure
fixes just about everything, in reality Clojure works well in a band of
problems that Scala is not well suited for.

This talk is actually better than most but in general when people compare two
languages they bash one and praise the other excessively. I'd like to see an
end to that trend and for speakers to start saying what a tool is meant for
and what its not meant for.

~~~
jaxytee
Very true that this talk did seem to be bias to Clojure. As and Scala user
myself, I think his critique of Scala was fair.

------
jadyoyster
Anyone know if the "Programming with hand tools" Conj talk will be available
somewhere?

Totally agree on Clojure's documentation problem (being used to Racket's
amazing docs), but at the same time it's very easy to just read the source of
the library you're trying to use. Especially with Emacs' quick source code
navigation.

~~~
Skinney
Agree what you're saying about reading the source. It's actually something
I've become accustomed too, as well as just testing things out in the repl.
This is a little daunting to new programmers though :/

------
lmm
And there I was hoping he was finally getting out of the way and letting Scala
succeed with more... diplomatic people doing the advocacy.

~~~
wpietri
Could you say more about this?

I went to a 1-day Scala unconference and generally liked it, but this guy was
a giant dick to me when I asked what I thought was a pretty reasonable
question.

The experience definitely made me wonder about the Scala community.

~~~
lmm
I get the impression he's a giant dick, yeah. He seems to be technically
skilled and he wrote what used to be the only real web framework available for
Scala, which gave him a certain amount of standing in the community (such as
it was); IMO the negatives of his attitude outweigh the positives of his
technical contributions and I think the community gradually came to feel the
same way - at the same time, a better alternative web framework (Play, along
with a number of more "microframework" type projects) was written, and Pollack
had seemed to be fading from view in the last few years.

~~~
frowaway001
That's my impression, too. He seems to be one of those persons who never ever
can't be wrong at all and if evidence is provided which shows that he's
clearly wrong, he gets angry/insults people/threatens lawsuits¹.

I just hope he adopts another language and drops Scala, because his behavior
seems to become an increasing burden to the community.

¹ The last one is only hearsay, the two others certainly not.

~~~
asdasf
He isn't really relevant in the scala community any more, the burden is
decreasing, not increasing. Nobody uses lift, nobody talks about lift, nobody
cares about lift. Play is the scala framework now.

~~~
taeric
Is it really that bad? From what I remember of it, it is still one of the more
interesting frameworks I have ever seen. I certainly like it more than I did
Play.

~~~
asdasf
Is what that bad, lift or its relevance? Lift is no worse than it ever was, I
feel it was pretty much terrible outside of templates. Nobody uses it because
the community around it is so terrible and the official scala people labeled
play as the official scala framework.

~~~
taeric
I meant the community. Looking briefly at the mailing list, it isn't a
wasteland. Certainly gets more traffic than many well regarded libraries.
(Apache Shiro, for example, gets less traffic and is a well regarded library.)

------
reactor
Video suddenly became private?

