<story><title>State of Clojure 2015: Survey Results</title><url>http://blog.cognitect.com/blog/2016/1/28/state-of-clojure-2015-survey-resultsv</url></story><parent_chain><item><author>muraiki</author><text>Clojure was one of the first languages I picked up when I started coding and I really enjoyed using it. The instarepl in Light Table was a huge boon for learning and helped to offset the infamous Clojure stack traces of doom. :) However, I&amp;#x27;d be very much interested in hearing more from people who have gone from Java, C#, or another statically typed language to Clojure, particularly in regards to designing, maintaining, and refactoring large codebases.&lt;p&gt;I don&amp;#x27;t mean to turn this into yet another static vs dynamic flamewar. I&amp;#x27;m just very interested in the patterns that professional Clojure programmers use to help manage this complexity. I know that code in Clojure is normally structured very differently than one would find in a more imperative or OO language, whether dynamic or static. I also realize there are things available, such as Prismatic Schema and Typed Clojure, to assist with these problems.&lt;p&gt;Really, I&amp;#x27;d love to come back to Clojure but the problems I run into in my day job often have me thinking, &amp;quot;types would have made this so much easier.&amp;quot; :( As a result, I haven&amp;#x27;t given Clojure the time to really delve deeply into it. As someone with limited time to try out whole new languages, I&amp;#x27;d love to be convinced to go further!</text></item></parent_chain><comment><author>anthonybsd</author><text>&amp;gt;Really, I&amp;#x27;d love to come back to Clojure but the problems I run into in my day job often have me thinking, &amp;quot;types would have made this so much easier.&amp;quot;&lt;p&gt;I&amp;#x27;ve gone back and forth on this one during the course of my career. My first professional language was Borland Delphi (strongly typed), then C (weakly typed), then Perl (dynamic), then Java (mostly strongly typed), Scala (very strongly typed) and now I&amp;#x27;m slowly trying to adopt Clojure at my place of work. Out of all those the worst kind of code I&amp;#x27;ve ever come across was in Perl, so for awhile I&amp;#x27;ve blamed the lack of typing as a contributing factor to this. However. Most of the Python code I&amp;#x27;ve seen since around 2001 has been fairly clean looking so that can&amp;#x27;t just be dynamic typing that was to blame. I suspect Perl&amp;#x27;s woes had more to do with the &amp;quot;there is more than one way to do it philosophy&amp;quot; as opposed to types. There&amp;#x27;s just no such thing as idiomatic Perl. In fact I&amp;#x27;m seeing some of this in some Scala code. There are nearly-religious level wars around what constitutes idiomatic Scala way of doing things. I&amp;#x27;ve seen completely insane spaghetti-style Scala classes, especially those that dealt with XML code and DSLs. So far, it seems that Clojure in Java ecosystem is more like Python than like Perl. I.e. only one way of doing things that is fairly clear from the onset.</text></comment>
<story><title>State of Clojure 2015: Survey Results</title><url>http://blog.cognitect.com/blog/2016/1/28/state-of-clojure-2015-survey-resultsv</url></story><parent_chain><item><author>muraiki</author><text>Clojure was one of the first languages I picked up when I started coding and I really enjoyed using it. The instarepl in Light Table was a huge boon for learning and helped to offset the infamous Clojure stack traces of doom. :) However, I&amp;#x27;d be very much interested in hearing more from people who have gone from Java, C#, or another statically typed language to Clojure, particularly in regards to designing, maintaining, and refactoring large codebases.&lt;p&gt;I don&amp;#x27;t mean to turn this into yet another static vs dynamic flamewar. I&amp;#x27;m just very interested in the patterns that professional Clojure programmers use to help manage this complexity. I know that code in Clojure is normally structured very differently than one would find in a more imperative or OO language, whether dynamic or static. I also realize there are things available, such as Prismatic Schema and Typed Clojure, to assist with these problems.&lt;p&gt;Really, I&amp;#x27;d love to come back to Clojure but the problems I run into in my day job often have me thinking, &amp;quot;types would have made this so much easier.&amp;quot; :( As a result, I haven&amp;#x27;t given Clojure the time to really delve deeply into it. As someone with limited time to try out whole new languages, I&amp;#x27;d love to be convinced to go further!</text></item></parent_chain><comment><author>evanspa</author><text>So I worked exclusively in the statically typed (and imperative &amp;#x2F; OO) world for the first 10 years of my professional career.  Several years ago I decided to learn functional programming.  I started with Scheme and moved to Clojure.  I really enjoy Clojure; it&amp;#x27;s a real joy coding in it using Emacs with paredit (or smartparens).&lt;p&gt;I wrote a REST API using Clojure; the code also has to interact with a Postgres database.  This is for a side project, but it&amp;#x27;s not a trivial code base.  I definitely miss Java&amp;#x2F;Eclipse style refactoring (right-click, rename, and EVERYTHING is properly updated).  Can&amp;#x27;t do that in Clojure.  Also, I find that I have to write more unit tests with Clojure in order to make up for the fact the compiler can&amp;#x27;t help me.  Not that I wouldn&amp;#x27;t write tests in Java; but I find I have to write &lt;i&gt;more&lt;/i&gt; in Clojure to keep the codebase manageable.&lt;p&gt;So again, for me, I use unit testing to make up for the fact I don&amp;#x27;t have the compiler helping me as much.</text></comment>