Clojure and Scala are two of the most exciting next-generation languages for the JVM. They have each generated a lot of excitement, innovation and discussion and both have substantial communities and support companies behind them.

In some ways they are very different creatures: Scala uses strong types, has come from an academic background and is influenced by ML and Haskell; Clojure is a straight-forward port of LISP with Java compatibility added, it has come from a pragmatic background of real-world problems.

Adherents of both languages tend to be unable to get past the fundamental difference in approach regarding typing, checking and compilation. However both share some fundamental aspects: both represent a distillation of understanding from working with object-orientated code, both rely on first-order functions and functional paradigms to deliver their most distinctive advantages, both aim to leverage an ecosystem to bring functional programming to the mass audience it has consistently failed to do hitherto.

As someone who has and does work with both languages I want to try and point what the real differences are between the two, what they have to learn from one another and speculate about what the future might look like in the world of "Enterprise".