Channels ▼

Mike Riley

Dr. Dobb's Bloggers

Clojure vs. Scala

August 22, 2009

After reviewing Pragmatic Bookshelf's Programming Clojure and Programming Scala, some Dobbs Codetalk readers may be wondering which of these languages will be the dominant one.  Here is my opinion.

After spending time with both Clojure and Scala, my personal preference is trending more toward Scala as being the mindshare leader in the JVM-hosted concurrent language arena.  In fact, it is possible that as these two languages mature, they may even become the new Perl/Python of the VM multicore world (though let us not forget Parrot, whenever that sees the production-capable light of day).  But for now, I believe Scala has the edge thanks to more high-profile web properties advocating its use coupled with its closer association with Java as a reincarnation of Java as a concurrency modeled scripting language.

Clojure is an elegantly designed language, much the way Lisp was at the time of its creation.  However, no matter how often I tried to use Lisp in a deadline-driven app construction opportunity, I didn't have desire or patience to do so.  I have read several Lisp books and respect what Lisp advocates like Paul Graham, who made his personal fortune off his Lisp-based Viaweb sale to Yahoo, have to say about the language.  While I do consider myself a pretty good programmer, I tend to be a generalist when it comes to languages.  Alas, I will probably never attain extreme, deep, technical mastery of any programming language as a result, but having a good basis of understanding what each dialect can do has helped me remain successful in making the best choice for the job at hand.  Clojure's video tutorials go a long way toward marketing the language to developers and they put on a convincing show.  But how many remember Sean Kelly's convincing Plone video that made it look far more technically superior to other Python-based web frameworks?  I suspect the same may lie ahead for Clojure unless the Clojure community can promote its use on high profile websites (though Clojure did make a ripple with the revelation that flight delay prediction website FlightCaster bases some of its code on Clojure) much the way the Scala community is marketing Twitter's conclusion in that language choice.  Incidentally, as of today, Amazon is selling four Scala books compared to only two for Clojure, though there are several more Scala and Clojure books in the works.

From a real-life, corporate computing competitive vantage point, Clojure will likely meet more resistance compared to Scala due to its current lack of CIO and/or CTO Fortune 500 marketing power.  However, whichever of these relatively new JVM-hosted languages is the first to advertise that it has become a major player in the financial, healthcare or communications space, that could be the inflection point ultimately winning the mindshare of developers and IT business leaders alike.  For now, discerning early adopters shouldn't just take my word for it.  Take the time to investigate both languages, write a few small applications and form your own conclusions.  For those of you who already have, I encourage you to participate in the conversation by posting your opinion below.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.