<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Clojure vs Scala, Part 2</title>
	<atom:link href="http://codemonkeyism.com/clojure-scala-part-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://codemonkeyism.com/clojure-scala-part-2/</link>
	<description></description>
	<lastBuildDate>Wed, 09 May 2012 22:39:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Andrew W</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-287343</link>
		<dc:creator>Andrew W</dc:creator>
		<pubDate>Wed, 28 Apr 2010 23:31:05 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-287343</guid>
		<description>Base, 

Just to reiterate what the other Andrew said, learning the basics of Haskell is easy. It is only when you want to learn the advanced topics that it becomes more challenging. And, even then, most of the stuff is easy to learn to _use_, despite being difficult to _understand_.

However, the problem with it is the ability to distribute software to other people, as it generally requires them to have the entire Haskell toolkit installed. So, like you I am investigating JVM languages.

That said, if you are writing software for your own use, I can&#039;t recommend Haskell enough. It is the fastest and easiest language I have ever used, and I do all of my prototyping in it. And, when I don&#039;t have to worry about distributing software, I do all my large scale development in it also.</description>
		<content:encoded><![CDATA[<p>Base, </p>
<p>Just to reiterate what the other Andrew said, learning the basics of Haskell is easy. It is only when you want to learn the advanced topics that it becomes more challenging. And, even then, most of the stuff is easy to learn to _use_, despite being difficult to _understand_.</p>
<p>However, the problem with it is the ability to distribute software to other people, as it generally requires them to have the entire Haskell toolkit installed. So, like you I am investigating JVM languages.</p>
<p>That said, if you are writing software for your own use, I can&#8217;t recommend Haskell enough. It is the fastest and easiest language I have ever used, and I do all of my prototyping in it. And, when I don&#8217;t have to worry about distributing software, I do all my large scale development in it also.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Base</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-279410</link>
		<dc:creator>Base</dc:creator>
		<pubDate>Fri, 26 Mar 2010 20:28:53 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-279410</guid>
		<description>Hi Andrew -

Thanks for the comments.  You have to be the first person I have ever heard say that they thought Haskell was easy!  WOW - you are clearly WAY smarter than I am !  

So basically I had an app that was written in Java (using GWT) and wanted to modify and extend it.  So I wanted to use a JVM language to be able to interoperate and modify over time (it is sort of a side project for work and I cannot commit as much time as I want).  That is how I came across both Clojure and Scala.  For me interacting with Java was key.

I was - at the time - just starting to learn Lisp and really was amazed with it. I find it beautiful to look at.  Unlike so many programmers, the S-expressions were wondrous to me! Go figure.  I started reading some stuff about Lisp and got hooked (go to defmacro.org and read this guys stuff - if you werent interested in both Lisp and Haskell you will be after you read this stuff).  I am more of a hobby programmer and do a lot of prototyping for ideas that I have that, if adopted, get turned over the an enterprise development group for programming.  So Clojure is ideal for that sort of stuff.  

I do not have alot of experience working with the Scala community, but the Clojure community is SO amazingly helpful and friendly.  I ask myriads of stupid questions and people supply amazingly long and detailed answers - including Rich Hickey himself).  I think that has helped my transition to Clojure as well.

Thanks for the post.  Please feel free to provide into on your genetic programming experiences.  This is some confusing stuff for me!</description>
		<content:encoded><![CDATA[<p>Hi Andrew -</p>
<p>Thanks for the comments.  You have to be the first person I have ever heard say that they thought Haskell was easy!  WOW &#8211; you are clearly WAY smarter than I am !  </p>
<p>So basically I had an app that was written in Java (using GWT) and wanted to modify and extend it.  So I wanted to use a JVM language to be able to interoperate and modify over time (it is sort of a side project for work and I cannot commit as much time as I want).  That is how I came across both Clojure and Scala.  For me interacting with Java was key.</p>
<p>I was &#8211; at the time &#8211; just starting to learn Lisp and really was amazed with it. I find it beautiful to look at.  Unlike so many programmers, the S-expressions were wondrous to me! Go figure.  I started reading some stuff about Lisp and got hooked (go to defmacro.org and read this guys stuff &#8211; if you werent interested in both Lisp and Haskell you will be after you read this stuff).  I am more of a hobby programmer and do a lot of prototyping for ideas that I have that, if adopted, get turned over the an enterprise development group for programming.  So Clojure is ideal for that sort of stuff.  </p>
<p>I do not have alot of experience working with the Scala community, but the Clojure community is SO amazingly helpful and friendly.  I ask myriads of stupid questions and people supply amazingly long and detailed answers &#8211; including Rich Hickey himself).  I think that has helped my transition to Clojure as well.</p>
<p>Thanks for the post.  Please feel free to provide into on your genetic programming experiences.  This is some confusing stuff for me!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-279379</link>
		<dc:creator>Andrew</dc:creator>
		<pubDate>Fri, 26 Mar 2010 15:27:57 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-279379</guid>
		<description>Base, 

Much of what you say is true - people take one look at Lisp and think yuck. The fact is once you&#039;ve used it, as you have, the simple elegance of the homoiconicity leaves a lasting impression with you. 

Not only are macros possible but the interchangeability of code and data enables far more flexibility to programming. This is difficult for a Java programmer to grasp but imagine writing your programs in XML where some tags are are code and some are data that are passed in and you can control which are which and effortlessly extend where necessary. You have the expressiveness of XML with the power of a programming language behind it - unlike Java where they are two completely separate things. 

Anyone who is put off by prefix notation and hasn&#039;t tried it are doing themselves a disservice - with a decent editor you don&#039;t even see the parentheses.

I&#039;ve done genetic programming in Scheme (another Lisp) and in C - it was simple in Scheme but in C, I basically ended up building an entire Scheme interpeter to do it. The C code was much faster though after I&#039;d eventually fixed all the core dumps !

I&#039;ve also used Haskell which is a beautiful language that makes Scala look clunky and it&#039;s good to see that Clojure has adopted many Haskell influences like lazyness, purity and support for monads. Pure Haskell is pretty easy to learn if you know Lisp and the syntax is very succint. The type inferencing and automatic currying are fantastic. The problem comes when step outside purity as getting your head around monads takes some doing.

Now I&#039;m back on the JVM looking for a language for rapid prototyping that can integrate with enterprise libraries - hence coming across this blog. At the moment I&#039;m leaning towards Clojure because I will be able to use HOF&#039;s to compose functionality and can make immediate use of some Scheme macros that should port quite easily. 

I would prefer a Haskell-style static type inferencing system which Scala goes some way to provide but it is really just another OO language with a few functional sweeteners thrown in (a bit like Ruby) rather than a truly functional language. Scala is probably a good stepping stone for imperative programmers to experience some functional capabilities but I&#039;m already on the other side of the river - I don&#039;t want to go back.

Thanks for post - it was useful.</description>
		<content:encoded><![CDATA[<p>Base, </p>
<p>Much of what you say is true &#8211; people take one look at Lisp and think yuck. The fact is once you&#8217;ve used it, as you have, the simple elegance of the homoiconicity leaves a lasting impression with you. </p>
<p>Not only are macros possible but the interchangeability of code and data enables far more flexibility to programming. This is difficult for a Java programmer to grasp but imagine writing your programs in XML where some tags are are code and some are data that are passed in and you can control which are which and effortlessly extend where necessary. You have the expressiveness of XML with the power of a programming language behind it &#8211; unlike Java where they are two completely separate things. </p>
<p>Anyone who is put off by prefix notation and hasn&#8217;t tried it are doing themselves a disservice &#8211; with a decent editor you don&#8217;t even see the parentheses.</p>
<p>I&#8217;ve done genetic programming in Scheme (another Lisp) and in C &#8211; it was simple in Scheme but in C, I basically ended up building an entire Scheme interpeter to do it. The C code was much faster though after I&#8217;d eventually fixed all the core dumps !</p>
<p>I&#8217;ve also used Haskell which is a beautiful language that makes Scala look clunky and it&#8217;s good to see that Clojure has adopted many Haskell influences like lazyness, purity and support for monads. Pure Haskell is pretty easy to learn if you know Lisp and the syntax is very succint. The type inferencing and automatic currying are fantastic. The problem comes when step outside purity as getting your head around monads takes some doing.</p>
<p>Now I&#8217;m back on the JVM looking for a language for rapid prototyping that can integrate with enterprise libraries &#8211; hence coming across this blog. At the moment I&#8217;m leaning towards Clojure because I will be able to use HOF&#8217;s to compose functionality and can make immediate use of some Scheme macros that should port quite easily. </p>
<p>I would prefer a Haskell-style static type inferencing system which Scala goes some way to provide but it is really just another OO language with a few functional sweeteners thrown in (a bit like Ruby) rather than a truly functional language. Scala is probably a good stepping stone for imperative programmers to experience some functional capabilities but I&#8217;m already on the other side of the river &#8211; I don&#8217;t want to go back.</p>
<p>Thanks for post &#8211; it was useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Base</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-269399</link>
		<dc:creator>Base</dc:creator>
		<pubDate>Fri, 05 Feb 2010 01:09:13 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-269399</guid>
		<description>Thanks for this post.  I really appreciate how you didn&#039;t try to pull off the X is better than Y thing.  It is refreshing.

I have fiddled with both and think that both have their advantages and disadvantages (as do all things).  

I would like to add my 2 cents on this one point:

&quot;I do not buy the argument that Lisp is so much more powerful than e.g. Scala – so this doesn’t influence me much.&quot;

Lisp(s) (including Clojure) have some things going for them that most other languages do not have.

Lisps are incredibly expressive languages.  You can do so much with so little it is amazing.  This is more true IMHO than in Scala, though Scala is substantially better than Java (setting the bar low, I know...)

Also, the macro system is simply amazing.  To me that is the deal breaker.  It extends the power of the language in ways that you simply cannot do in other languages.

Finally, it took me a while to fully understand this one aspect, but when I came around it really hit me like a ton of bricks.  The homoiconicity of lisps makes for designing certain types of programs much easier.  I am starting to dabble in some genetic programming and I have to say that I cannot even really understand how one could do this in a non-lisp (or at least non-homo iconic) language.  To think that some people did this in C!!!  Holy Toledo!  

The more I read about Haskell the more I am interested, though it seems like a nightmare to learn.  However I am consistently amazed how much people can do in so few lines of code.  Maybe a Haskell implementation on the JVM is next???

While I am really impressed with Scala and love some things about it (patter matching!!) I have to say that programming in Clojure is the most fun I have had hacking away in front of a computer.  I am starting to get to the point where I am realizing the productivity gains of these languages.  

Life is good!</description>
		<content:encoded><![CDATA[<p>Thanks for this post.  I really appreciate how you didn&#8217;t try to pull off the X is better than Y thing.  It is refreshing.</p>
<p>I have fiddled with both and think that both have their advantages and disadvantages (as do all things).  </p>
<p>I would like to add my 2 cents on this one point:</p>
<p>&#8220;I do not buy the argument that Lisp is so much more powerful than e.g. Scala – so this doesn’t influence me much.&#8221;</p>
<p>Lisp(s) (including Clojure) have some things going for them that most other languages do not have.</p>
<p>Lisps are incredibly expressive languages.  You can do so much with so little it is amazing.  This is more true IMHO than in Scala, though Scala is substantially better than Java (setting the bar low, I know&#8230;)</p>
<p>Also, the macro system is simply amazing.  To me that is the deal breaker.  It extends the power of the language in ways that you simply cannot do in other languages.</p>
<p>Finally, it took me a while to fully understand this one aspect, but when I came around it really hit me like a ton of bricks.  The homoiconicity of lisps makes for designing certain types of programs much easier.  I am starting to dabble in some genetic programming and I have to say that I cannot even really understand how one could do this in a non-lisp (or at least non-homo iconic) language.  To think that some people did this in C!!!  Holy Toledo!  </p>
<p>The more I read about Haskell the more I am interested, though it seems like a nightmare to learn.  However I am consistently amazed how much people can do in so few lines of code.  Maybe a Haskell implementation on the JVM is next???</p>
<p>While I am really impressed with Scala and love some things about it (patter matching!!) I have to say that programming in Clojure is the most fun I have had hacking away in front of a computer.  I am starting to get to the point where I am realizing the productivity gains of these languages.  </p>
<p>Life is good!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ittay</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-259700</link>
		<dc:creator>Ittay</dc:creator>
		<pubDate>Wed, 23 Dec 2009 07:32:28 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-259700</guid>
		<description>One minor quible about the Foo example where the class in Scala is shorter. This is not so much a language feature as a built-in compiler plugin. See http://projectlombok.org/index.html for how this can be done in java. The java code is still longer, but not as much</description>
		<content:encoded><![CDATA[<p>One minor quible about the Foo example where the class in Scala is shorter. This is not so much a language feature as a built-in compiler plugin. See <a href="http://projectlombok.org/index.html" rel="nofollow">http://projectlombok.org/index.html</a> for how this can be done in java. The java code is still longer, but not as much</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mario</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-247980</link>
		<dc:creator>mario</dc:creator>
		<pubDate>Thu, 15 Oct 2009 03:29:57 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-247980</guid>
		<description>Clojure being Lisp-like is an obstacle for most developers. I remember Lisp in college and I can honestly say it is the one of the few languages whose syntax did not come easily to me. C, C++, Java, Javascript, C#, Ruby all are easy to pick up. I put my money on Scala between these two languages.</description>
		<content:encoded><![CDATA[<p>Clojure being Lisp-like is an obstacle for most developers. I remember Lisp in college and I can honestly say it is the one of the few languages whose syntax did not come easily to me. C, C++, Java, Javascript, C#, Ruby all are easy to pick up. I put my money on Scala between these two languages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Logan (patrickdlogan) 's status on Tuesday, 15-Sep-09 02:57:46 UTC - Identi.ca</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-243836</link>
		<dc:creator>Patrick Logan (patrickdlogan) 's status on Tuesday, 15-Sep-09 02:57:46 UTC - Identi.ca</dc:creator>
		<pubDate>Tue, 15 Sep 2009 03:11:52 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-243836</guid>
		<description>[...]  http://codemonkeyism.com/clojure-scala-part-2/        a few seconds ago  from web [...]</description>
		<content:encoded><![CDATA[<p>[...]  <a href="http://codemonkeyism.com/clojure-scala-part-2/" rel="nofollow">http://codemonkeyism.com/clojure-scala-part-2/</a>        a few seconds ago  from web [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-241715</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 31 Aug 2009 20:41:07 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-241715</guid>
		<description>@A developer: Thanks, fixed.

Cheers
Another developer</description>
		<content:encoded><![CDATA[<p>@A developer: Thanks, fixed.</p>
<p>Cheers<br />
Another developer</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ADeveloper</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-241691</link>
		<dc:creator>ADeveloper</dc:creator>
		<pubDate>Mon, 31 Aug 2009 18:42:09 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-241691</guid>
		<description>&quot;avandgarde&quot; =&gt; &quot;avant-garde&quot;.

&quot;cirlces&quot; =&gt; &quot;circles&quot;.

Thanks.</description>
		<content:encoded><![CDATA[<p>&#8220;avandgarde&#8221; =&gt; &#8220;avant-garde&#8221;.</p>
<p>&#8220;cirlces&#8221; =&gt; &#8220;circles&#8221;.</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-241644</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 31 Aug 2009 10:59:48 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-241644</guid>
		<description>@bob me: Hello bob, should this be your name. Thanks for reading more than one post of this blog. 

&quot;Your previous post supported Clojure… !?&quot;

I do not support either, but share my opinions of both. But I&#039;m mystified how you came to that conlusion as I did write:

&quot;I think the object oriented features of Scala make the language more usable for real world applications.&quot;

Everybody needs to decide for himself what language to chose. I chose to use one, I do not support one :-)</description>
		<content:encoded><![CDATA[<p>@bob me: Hello bob, should this be your name. Thanks for reading more than one post of this blog. </p>
<p>&#8220;Your previous post supported Clojure… !?&#8221;</p>
<p>I do not support either, but share my opinions of both. But I&#8217;m mystified how you came to that conlusion as I did write:</p>
<p>&#8220;I think the object oriented features of Scala make the language more usable for real world applications.&#8221;</p>
<p>Everybody needs to decide for himself what language to chose. I chose to use one, I do not support one :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bob me</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-2/#comment-241631</link>
		<dc:creator>bob me</dc:creator>
		<pubDate>Mon, 31 Aug 2009 07:44:08 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-241631</guid>
		<description>Haha Stephen!

Now ur supporting Scala !!! Your previous post supported Clojure... !?

See with time opinions change !!! 

I like people who have double life, mind and character.

Cheers,
Bob Me</description>
		<content:encoded><![CDATA[<p>Haha Stephen!</p>
<p>Now ur supporting Scala !!! Your previous post supported Clojure&#8230; !?</p>
<p>See with time opinions change !!! </p>
<p>I like people who have double life, mind and character.</p>
<p>Cheers,<br />
Bob Me</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jython nut</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-241027</link>
		<dc:creator>Jython nut</dc:creator>
		<pubDate>Wed, 26 Aug 2009 06:53:53 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-241027</guid>
		<description>Tom wrote: &quot;In 2009 I run into many ‘Java’ programmers that don’t know about Groovy.&quot;

Perhaps they&#039;re still using Jython, which was released 12 years ago. It hasn&#039;t advanced much, but it&#039;s still good enough for scripty things. They can even put &quot;Python&quot; on their CV&#039;s.</description>
		<content:encoded><![CDATA[<p>Tom wrote: &#8220;In 2009 I run into many ‘Java’ programmers that don’t know about Groovy.&#8221;</p>
<p>Perhaps they&#8217;re still using Jython, which was released 12 years ago. It hasn&#8217;t advanced much, but it&#8217;s still good enough for scripty things. They can even put &#8220;Python&#8221; on their CV&#8217;s.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rich</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240982</link>
		<dc:creator>Rich</dc:creator>
		<pubDate>Tue, 25 Aug 2009 20:18:28 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240982</guid>
		<description>An interesting read. The momentum for Scala is evident enough - think it was recently quoted that something like 3 of the top best selling books at the last &quot;Java symposium&quot; were Scala related. I managed to get through &quot;Programming in Scala&quot; by Odersky - very well presented book btw. It&#039;s a decent, terse language with some good, OO and functional programming capabilities. Couple of gripes from me though

1)definitely suffers from some warts due to having to cope with the Java heritage side of things.

2)IMHO, Python remains the best language I have ever come across syntactically in terms of being &quot;easy to understand, intuitive, powerful and pragmatic&quot;. I was somewhat disappointed just how much more work it was to get up to speed with Scala. Won&#039;t get into the typed argument etc - but rest assured if you have only a little time to get another language under your belt then i&#039;d recommend Python - Java and Python make a powerful punch combination for developers in the field.</description>
		<content:encoded><![CDATA[<p>An interesting read. The momentum for Scala is evident enough &#8211; think it was recently quoted that something like 3 of the top best selling books at the last &#8220;Java symposium&#8221; were Scala related. I managed to get through &#8220;Programming in Scala&#8221; by Odersky &#8211; very well presented book btw. It&#8217;s a decent, terse language with some good, OO and functional programming capabilities. Couple of gripes from me though</p>
<p>1)definitely suffers from some warts due to having to cope with the Java heritage side of things.</p>
<p>2)IMHO, Python remains the best language I have ever come across syntactically in terms of being &#8220;easy to understand, intuitive, powerful and pragmatic&#8221;. I was somewhat disappointed just how much more work it was to get up to speed with Scala. Won&#8217;t get into the typed argument etc &#8211; but rest assured if you have only a little time to get another language under your belt then i&#8217;d recommend Python &#8211; Java and Python make a powerful punch combination for developers in the field.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shantanu Kumar</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240934</link>
		<dc:creator>Shantanu Kumar</dc:creator>
		<pubDate>Tue, 25 Aug 2009 14:49:18 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240934</guid>
		<description>My experience with Clojure has been really neat - I feel evolved (or rather liberated).

One good approach may be to code the reusable core / generic (framework-like) stuff in Java, so that it can be easily used in any JVM-language. And the specific parts can be coded in any JVM-language you feel most productive with.

An example framework is here: http://bitbucket.org/kumarshantanu/jettify/

Just to show how easily Clojure integrates with Java frameworks (Hibernate and StringTemplate) source code for a tiny personal blog app is here: http://bitbucket.org/kumarshantanu/blogjure/</description>
		<content:encoded><![CDATA[<p>My experience with Clojure has been really neat &#8211; I feel evolved (or rather liberated).</p>
<p>One good approach may be to code the reusable core / generic (framework-like) stuff in Java, so that it can be easily used in any JVM-language. And the specific parts can be coded in any JVM-language you feel most productive with.</p>
<p>An example framework is here: <a href="http://bitbucket.org/kumarshantanu/jettify/" rel="nofollow">http://bitbucket.org/kumarshantanu/jettify/</a></p>
<p>Just to show how easily Clojure integrates with Java frameworks (Hibernate and StringTemplate) source code for a tiny personal blog app is here: <a href="http://bitbucket.org/kumarshantanu/blogjure/" rel="nofollow">http://bitbucket.org/kumarshantanu/blogjure/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: shaunxcode</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240746</link>
		<dc:creator>shaunxcode</dc:creator>
		<pubDate>Mon, 24 Aug 2009 18:54:33 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240746</guid>
		<description>It seems that you overlooked the power of clojures macro expansion system. The lack of user-defined reader macros sort of sucks (But makes sense for portability/readability) but the power of macros in general is insanely vast for extending the language in a direction that best suits your specific niche.</description>
		<content:encoded><![CDATA[<p>It seems that you overlooked the power of clojures macro expansion system. The lack of user-defined reader macros sort of sucks (But makes sense for portability/readability) but the power of macros in general is insanely vast for extending the language in a direction that best suits your specific niche.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Baine</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240728</link>
		<dc:creator>Andrew Baine</dc:creator>
		<pubDate>Mon, 24 Aug 2009 17:29:03 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240728</guid>
		<description>Correction: in clojure, everything is an object.  You can see what type of object with function type:
user&gt; (type 1)
java.lang.Integer
user&gt; (type (range 100))
clojure.lang.Range
user&gt; (type (make-array Integer 10))
[Ljava.lang.Integer;
user&gt; (type #{1 2 3})
clojure.lang.PersistentHashSet
user&gt; (type [1 2 3])
clojure.lang.LazilyPersistentVector
user&gt; (type nil)
nil</description>
		<content:encoded><![CDATA[<p>Correction: in clojure, everything is an object.  You can see what type of object with function type:<br />
user&gt; (type 1)<br />
java.lang.Integer<br />
user&gt; (type (range 100))<br />
clojure.lang.Range<br />
user&gt; (type (make-array Integer 10))<br />
[Ljava.lang.Integer;<br />
user&gt; (type #{1 2 3})<br />
clojure.lang.PersistentHashSet<br />
user&gt; (type [1 2 3])<br />
clojure.lang.LazilyPersistentVector<br />
user&gt; (type nil)<br />
nil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240726</link>
		<dc:creator>Tom</dc:creator>
		<pubDate>Mon, 24 Aug 2009 17:19:59 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240726</guid>
		<description>In 2009 I run into many &#039;Java&#039; programmers that don&#039;t know about Groovy.  I therefore am sceptical, like you, about Clojure with it&#039;s lisp syntax gaining much traction with the general developer crowd.</description>
		<content:encoded><![CDATA[<p>In 2009 I run into many &#8216;Java&#8217; programmers that don&#8217;t know about Groovy.  I therefore am sceptical, like you, about Clojure with it&#8217;s lisp syntax gaining much traction with the general developer crowd.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cedric</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240724</link>
		<dc:creator>Cedric</dc:creator>
		<pubDate>Mon, 24 Aug 2009 16:41:37 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240724</guid>
		<description>Hey Stephan,

A small request regarding your blog:  do you think you could stop posting Twitter mentions in your comments?  (or maybe have a separate section just for Tweets?)

I find value in reading both your posts and the comments that follow, but with all the Twitter mentions automatically posted as comments, it&#039;s very painful to find what the real comments are...

Just a thought.</description>
		<content:encoded><![CDATA[<p>Hey Stephan,</p>
<p>A small request regarding your blog:  do you think you could stop posting Twitter mentions in your comments?  (or maybe have a separate section just for Tweets?)</p>
<p>I find value in reading both your posts and the comments that follow, but with all the Twitter mentions automatically posted as comments, it&#8217;s very painful to find what the real comments are&#8230;</p>
<p>Just a thought.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240715</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Mon, 24 Aug 2009 15:05:39 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240715</guid>
		<description>@stephan

I have now re-read the article, and even though I caught a few more things (in retrospect, I did read everything but the conclusion fairly thoroughly the first time), I think I still would have posted the same comment as before.  Consider the following excerpts:

&gt; Scala has good, but compared to Clojure
&gt; a rather basic [Java] integration.

...

&gt; Scala isn’t tightly integrated on the
&gt; API side - only with some in this
&gt; context clumsy, unneeded Meta-Programming
&gt; with impliciets. Scala promises Clojure
&gt; like Collection integration with Java
&gt; in the future - we’ll see.

In this context, I thought (and still think) that you were referring to the conversions between Scala and Java collections (currently in scala.collection.jcl).  I agree(d) with you that this has been and will always be a sore point.  My comment about Scala getting better collections in future was in reference to this:

&gt; Some obvious reasons that speak for
&gt; Clojure:
&gt;
&gt; ...
&gt; * STM, software transactional memory,
&gt; an easy way to share data
&gt; * Very clever immutable datastructures

The &quot;very clever immutable data structures&quot; point is listed as an advantage for Clojure.  I was simply pointing out that advantage is going to be matched, if not superseded by Scala 2.8.  Martin Odersky has stated that he intends Scala to have the fastest persistent collections of any JVM language.

&gt; But as someone who is using Scala code
&gt; from inside Java, “From the Java side
&gt; things also do not look as nice, Scala
&gt; classes and traits have lots of ugly
&gt; named methods”

This comes out of the fact that Scala has very different idioms than Java.  Symbolic method names, name/name_= vs get/set, etc.  Scala also has some language features which don&#039;t map nicely into Java (traits with implementations, singleton objects, etc).  The point is that I don&#039;t see how Clojure is any better in this respect.  The only difference with Clojure is that you have to define the mapping into Java *explicitly*.  It&#039;s such a foreign syntax to create a class that you are almost forced to construct the API in a more Java-idiomatic fashion.  You&#039;re perfectly free to do this in Scala as well (keep your traits free of method implementations, use get/set instead of name/name_=, etc), the difference is that you don&#039;t really feel the need most of the time.

I can see how Groovy has better Java integration, since its idioms are drawn directly from Java and its features map nicely into that language, but I just don&#039;t understand the claim that *Clojure* has better Java integration than Scala.</description>
		<content:encoded><![CDATA[<p>@stephan</p>
<p>I have now re-read the article, and even though I caught a few more things (in retrospect, I did read everything but the conclusion fairly thoroughly the first time), I think I still would have posted the same comment as before.  Consider the following excerpts:</p>
<p>&gt; Scala has good, but compared to Clojure<br />
&gt; a rather basic [Java] integration.</p>
<p>&#8230;</p>
<p>&gt; Scala isn’t tightly integrated on the<br />
&gt; API side &#8211; only with some in this<br />
&gt; context clumsy, unneeded Meta-Programming<br />
&gt; with impliciets. Scala promises Clojure<br />
&gt; like Collection integration with Java<br />
&gt; in the future &#8211; we’ll see.</p>
<p>In this context, I thought (and still think) that you were referring to the conversions between Scala and Java collections (currently in scala.collection.jcl).  I agree(d) with you that this has been and will always be a sore point.  My comment about Scala getting better collections in future was in reference to this:</p>
<p>&gt; Some obvious reasons that speak for<br />
&gt; Clojure:<br />
&gt;<br />
&gt; &#8230;<br />
&gt; * STM, software transactional memory,<br />
&gt; an easy way to share data<br />
&gt; * Very clever immutable datastructures</p>
<p>The &#8220;very clever immutable data structures&#8221; point is listed as an advantage for Clojure.  I was simply pointing out that advantage is going to be matched, if not superseded by Scala 2.8.  Martin Odersky has stated that he intends Scala to have the fastest persistent collections of any JVM language.</p>
<p>&gt; But as someone who is using Scala code<br />
&gt; from inside Java, “From the Java side<br />
&gt; things also do not look as nice, Scala<br />
&gt; classes and traits have lots of ugly<br />
&gt; named methods”</p>
<p>This comes out of the fact that Scala has very different idioms than Java.  Symbolic method names, name/name_= vs get/set, etc.  Scala also has some language features which don&#8217;t map nicely into Java (traits with implementations, singleton objects, etc).  The point is that I don&#8217;t see how Clojure is any better in this respect.  The only difference with Clojure is that you have to define the mapping into Java *explicitly*.  It&#8217;s such a foreign syntax to create a class that you are almost forced to construct the API in a more Java-idiomatic fashion.  You&#8217;re perfectly free to do this in Scala as well (keep your traits free of method implementations, use get/set instead of name/name_=, etc), the difference is that you don&#8217;t really feel the need most of the time.</p>
<p>I can see how Groovy has better Java integration, since its idioms are drawn directly from Java and its features map nicely into that language, but I just don&#8217;t understand the claim that *Clojure* has better Java integration than Scala.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shawn</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240706</link>
		<dc:creator>Shawn</dc:creator>
		<pubDate>Mon, 24 Aug 2009 14:13:03 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240706</guid>
		<description>Since you mentioned it for Scala, I&#039;d like to point out that you can also implement Java interfaces in Clojure (proxy) and generate named classes consumable from Java (genclass).</description>
		<content:encoded><![CDATA[<p>Since you mentioned it for Scala, I&#8217;d like to point out that you can also implement Java interfaces in Clojure (proxy) and generate named classes consumable from Java (genclass).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240705</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 24 Aug 2009 14:11:22 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240705</guid>
		<description>@Daniel:

&quot;All Scala classes are Java classes. All Scala traits are Java interfaces.&quot;

Yes, I did say &quot;One can implement Java interfaces in Java, extend Java classes and vise versa.&quot; 

But as someone who is using Scala code from inside Java, &quot;From the Java side things also do not look as nice, Scala classes and traits have lots of ugly named methods&quot;

Perhaps you&#039;re mainly using Scala from Scala and Java from Scala, so this might not apply to you.

About &quot;As a side note, two of the advantages you listed for Clojure over Scala (STM and clever collections) are going to be rectified in upcoming Scala releases.&quot; does differ how from &quot;Scala promises Clojure like Collection integration with Java in the future - we’ll see.&quot;  (STM becoming part of Scala).

Daniel, I value your opinion very highly, but it looks like you have only scanned the post.</description>
		<content:encoded><![CDATA[<p>@Daniel:</p>
<p>&#8220;All Scala classes are Java classes. All Scala traits are Java interfaces.&#8221;</p>
<p>Yes, I did say &#8220;One can implement Java interfaces in Java, extend Java classes and vise versa.&#8221; </p>
<p>But as someone who is using Scala code from inside Java, &#8220;From the Java side things also do not look as nice, Scala classes and traits have lots of ugly named methods&#8221;</p>
<p>Perhaps you&#8217;re mainly using Scala from Scala and Java from Scala, so this might not apply to you.</p>
<p>About &#8220;As a side note, two of the advantages you listed for Clojure over Scala (STM and clever collections) are going to be rectified in upcoming Scala releases.&#8221; does differ how from &#8220;Scala promises Clojure like Collection integration with Java in the future &#8211; we’ll see.&#8221;  (STM becoming part of Scala).</p>
<p>Daniel, I value your opinion very highly, but it looks like you have only scanned the post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240700</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Mon, 24 Aug 2009 14:02:41 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240700</guid>
		<description>I don&#039;t buy it.  Your main argument for why Clojure has better Java integration than Scala is the fact that Clojure&#039;s collections all implement interfaces.  Scala&#039;s do too!

public int sumSeq(scala.Seq&lt;Int&gt; s) {
    int sum = 0;
    for (int i = 0; i &lt; s.length(); i++) {
        sum += s.apply(i);
    }
    return i;
}

Scala functions are also interfaces (no coercion necessary):

public &lt;T&gt; void foreach(scala.Seq&lt;T&gt; s, Function1&lt;T, ?&gt; f) {
    s.foreach(f);
}

Additionally, your one example of using Java methods within Clojure didn&#039;t actually have any Java methods whatsoever.  That was all pure Clojure.  A better example might be something like this:

(defn foreach [s f]
  (.foreach s (f)))

Finally, you&#039;re forgetting a *very* important aspect of Java integration: generating JVM classes and interfaces.  Clojure&#039;s integration with Java is very good, but the syntax to create a class is foreign and extremely unintuitive (doesn&#039;t fit with the rest of the language at all).  With Scala, creating a JVM class is as easy as:

class Foo { ... }

All Scala classes are Java classes.  All Scala traits are Java interfaces.  This level of integration is impossible to overestimate.  It means that you don&#039;t need special magic to do things like extend Scala classes in Java, or implement Java interfaces in Scala.  It all works together, seamlessly.

The one point of integration pain that I will give you is the fact that Scala&#039;s collections are not in the same hierarchy as Java&#039;s collections.  Seeing as Java&#039;s collections library is inherently broken though, I would consider that to be a &quot;good thing&quot; overall.  It does mean that conversions are required whenever passing a Scala Map to a method expecting a Java Map, but those conversions are not difficult to create (they&#039;re coming in Scala 2.8, and Jorge Ortiz has a very nice library which provides them now).

As a side note, two of the advantages you listed for Clojure over Scala (STM and clever collections) are going to be rectified in upcoming Scala releases.  Believe it or not, Rich Hickey didn&#039;t actually design Clojure&#039;s collections completely from scratch, he adapted them from some work done by Phil Bagwell (he doesn&#039;t hide this fact).  Phil Bagwell just happens to work at EPFL; and yes, he is working on Scala&#039;s collections library.

There are legitimate reasons to prefer Clojure over Scala.  It&#039;s much more concise, and the simple elegance of the language is very alluring.  However, your arguments are unpersuasive.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t buy it.  Your main argument for why Clojure has better Java integration than Scala is the fact that Clojure&#8217;s collections all implement interfaces.  Scala&#8217;s do too!</p>
<p>public int sumSeq(scala.Seq&lt;Int&gt; s) {<br />
    int sum = 0;<br />
    for (int i = 0; i &lt; s.length(); i++) {<br />
        sum += s.apply(i);<br />
    }<br />
    return i;<br />
}</p>
<p>Scala functions are also interfaces (no coercion necessary):</p>
<p>public &lt;T&gt; void foreach(scala.Seq&lt;T&gt; s, Function1&lt;T, ?&gt; f) {<br />
    s.foreach(f);<br />
}</p>
<p>Additionally, your one example of using Java methods within Clojure didn&#8217;t actually have any Java methods whatsoever.  That was all pure Clojure.  A better example might be something like this:</p>
<p>(defn foreach [s f]<br />
  (.foreach s (f)))</p>
<p>Finally, you&#8217;re forgetting a *very* important aspect of Java integration: generating JVM classes and interfaces.  Clojure&#8217;s integration with Java is very good, but the syntax to create a class is foreign and extremely unintuitive (doesn&#8217;t fit with the rest of the language at all).  With Scala, creating a JVM class is as easy as:</p>
<p>class Foo { &#8230; }</p>
<p>All Scala classes are Java classes.  All Scala traits are Java interfaces.  This level of integration is impossible to overestimate.  It means that you don&#8217;t need special magic to do things like extend Scala classes in Java, or implement Java interfaces in Scala.  It all works together, seamlessly.</p>
<p>The one point of integration pain that I will give you is the fact that Scala&#8217;s collections are not in the same hierarchy as Java&#8217;s collections.  Seeing as Java&#8217;s collections library is inherently broken though, I would consider that to be a &#8220;good thing&#8221; overall.  It does mean that conversions are required whenever passing a Scala Map to a method expecting a Java Map, but those conversions are not difficult to create (they&#8217;re coming in Scala 2.8, and Jorge Ortiz has a very nice library which provides them now).</p>
<p>As a side note, two of the advantages you listed for Clojure over Scala (STM and clever collections) are going to be rectified in upcoming Scala releases.  Believe it or not, Rich Hickey didn&#8217;t actually design Clojure&#8217;s collections completely from scratch, he adapted them from some work done by Phil Bagwell (he doesn&#8217;t hide this fact).  Phil Bagwell just happens to work at EPFL; and yes, he is working on Scala&#8217;s collections library.</p>
<p>There are legitimate reasons to prefer Clojure over Scala.  It&#8217;s much more concise, and the simple elegance of the language is very alluring.  However, your arguments are unpersuasive.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: poko</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240698</link>
		<dc:creator>poko</dc:creator>
		<pubDate>Mon, 24 Aug 2009 13:57:52 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240698</guid>
		<description>Hi  Stephan,

nice post! I am just surprised you did not mention typing differences as pluses/minuses. I am guessing that for many that&#039;s the real deal breaker (either way)</description>
		<content:encoded><![CDATA[<p>Hi  Stephan,</p>
<p>nice post! I am just surprised you did not mention typing differences as pluses/minuses. I am guessing that for many that&#8217;s the real deal breaker (either way)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240695</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 24 Aug 2009 13:49:50 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240695</guid>
		<description>@Thomas: &quot;polyglot programming is the name of the game these days&quot;

After some bad experiences, I&#039;m not a proponent of polyglot anymore.It does not scale, with the slightest developer turnover you end up with noone understanding that Clojure code.</description>
		<content:encoded><![CDATA[<p>@Thomas: &#8220;polyglot programming is the name of the game these days&#8221;</p>
<p>After some bad experiences, I&#8217;m not a proponent of polyglot anymore.It does not scale, with the slightest developer turnover you end up with noone understanding that Clojure code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240692</link>
		<dc:creator>Thomas</dc:creator>
		<pubDate>Mon, 24 Aug 2009 13:31:21 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240692</guid>
		<description>I think it&#039;s worth considering that it is not always going to be a this vs. that consideration. As many have said already, polyglot programming is the name of the game these days. I can easily envision a company that builds on top of the JVM using a combination of Java, Scala, Clojure, Groovy and even C/C++ all within one application. For instance, perhaps legacy code is in Java, while new libraries are written in Scala. Clojure might be used for data analysis needs. Groovy could be used via Gradle to power the builds (or perhaps extending on top of Ant), while C and/or C++ might be used for JNI integration with low-level hardware. Personally, I see nothing wrong with that picture and can readily see the utility of each language.

In our own company, we are currently using Java, Python, Ruby, C++ and PHP -- and this is all within the sphere of one products ecosystem. We generally only recruit for Java/C++ developers since that is our primary area of focues, but I make it a point to ask about other languages during our hiring process and hope to spread that around to the rest of the team.</description>
		<content:encoded><![CDATA[<p>I think it&#8217;s worth considering that it is not always going to be a this vs. that consideration. As many have said already, polyglot programming is the name of the game these days. I can easily envision a company that builds on top of the JVM using a combination of Java, Scala, Clojure, Groovy and even C/C++ all within one application. For instance, perhaps legacy code is in Java, while new libraries are written in Scala. Clojure might be used for data analysis needs. Groovy could be used via Gradle to power the builds (or perhaps extending on top of Ant), while C and/or C++ might be used for JNI integration with low-level hardware. Personally, I see nothing wrong with that picture and can readily see the utility of each language.</p>
<p>In our own company, we are currently using Java, Python, Ruby, C++ and PHP &#8212; and this is all within the sphere of one products ecosystem. We generally only recruit for Java/C++ developers since that is our primary area of focues, but I make it a point to ask about other languages during our hiring process and hope to spread that around to the rest of the team.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Itay Maman</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240691</link>
		<dc:creator>Itay Maman</dc:creator>
		<pubDate>Mon, 24 Aug 2009 13:22:31 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240691</guid>
		<description>Great post that raises a very important question.

My experience led me to the same conclusion as yours regarding Java integration: In Clojure the integration is indeed clean and almost seamless. I especailly noticed that when I developed &lt;a href=&quot;http://javadots.blogspot.com/2009/03/stroy-of-waterfront.html&quot; rel=&quot;nofollow&quot;&gt;Waterfront&lt;/a&gt; - A light-weight clojure based IDE. Although the code uses many Swing APIs (incl. subclassing, customization, etc.) the process was surprisingly painless.

On the other hand, in Scala, the naming scheme of methods/classes makes Java integration much less straight forward.

On the other hand, no one can deny Scala&#039;s impressive static typing capabilities. Seems like a great plus if you&#039;re a static typing kind of guy.

Anyway, my bottom line is this: both languages make it a bit too easy for a programmer to shoot his own foot.

In Scala this is due to the type system: It does go an extra mile (compared to Java) but the road is still long and I am not sure an extra mile buys you that much when compared to the the increased mental burden of using these constructs. 

In Clojure, the caveat is its flexibility. The number of choices the programmer already has, for almost any decision, is overwhelming. Again, this is essentially a good thing, but if the programmer is not careful enough he/she may find him/her self spending too much weighing the different options rather than getting things done.</description>
		<content:encoded><![CDATA[<p>Great post that raises a very important question.</p>
<p>My experience led me to the same conclusion as yours regarding Java integration: In Clojure the integration is indeed clean and almost seamless. I especailly noticed that when I developed <a href="http://javadots.blogspot.com/2009/03/stroy-of-waterfront.html" rel="nofollow">Waterfront</a> &#8211; A light-weight clojure based IDE. Although the code uses many Swing APIs (incl. subclassing, customization, etc.) the process was surprisingly painless.</p>
<p>On the other hand, in Scala, the naming scheme of methods/classes makes Java integration much less straight forward.</p>
<p>On the other hand, no one can deny Scala&#8217;s impressive static typing capabilities. Seems like a great plus if you&#8217;re a static typing kind of guy.</p>
<p>Anyway, my bottom line is this: both languages make it a bit too easy for a programmer to shoot his own foot.</p>
<p>In Scala this is due to the type system: It does go an extra mile (compared to Java) but the road is still long and I am not sure an extra mile buys you that much when compared to the the increased mental burden of using these constructs. </p>
<p>In Clojure, the caveat is its flexibility. The number of choices the programmer already has, for almost any decision, is overwhelming. Again, this is essentially a good thing, but if the programmer is not careful enough he/she may find him/her self spending too much weighing the different options rather than getting things done.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Mosmann</title>
		<link>http://codemonkeyism.com/clojure-scala-part-2/comment-page-1/#comment-240685</link>
		<dc:creator>Michael Mosmann</dc:creator>
		<pubDate>Mon, 24 Aug 2009 12:51:11 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1083#comment-240685</guid>
		<description>i will wait for scala 2.8 to use it in production ..</description>
		<content:encoded><![CDATA[<p>i will wait for scala 2.8 to use it in production ..</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Database Caching 11/41 queries in 0.065 seconds using disk

Served from: codemonkeyism.com @ 2012-05-17 09:46:41 -->
