<story><title>Fun vs. Computer Science (2016)</title><url>http://prog21.dadgum.com/221.html</url></story><parent_chain><item><author>hesselink</author><text>I feel like this is a false dichotomy: you can have a fast iteration cycle, &lt;i&gt;and&lt;/i&gt; have statically checked guarantees. I&amp;#x27;ve worked in Haskell for 7 years and had exactly this. I could load my entire app in GHCi, make changes, reload and test. Now I&amp;#x27;m working in Java and in IntelliJ I can have something similar with hot-swap. And in the browser with typescript I have a strong type-system and can reload my app in seconds.&lt;p&gt;I agree that it&amp;#x27;s easy to build a slow, batch based build system and just tell people that&amp;#x27;s how it is. Fast iteration is important and requires effort to keep working. It might even be more important than a static type system, at least for some apps. But you can have both.</text></item></parent_chain><comment><author>falcolas</author><text>This has not been my experience with strongly and statically typed systems. The biggest problem is the coding is not fast; especially if you make a change that requires &amp;quot;shaking the tree&amp;quot;. Turnaround to me is as much about the code you write as it is the results you get from that code.&lt;p&gt;For example, I start my program thinking that I need a duck for all of my various waterfowl systems. However, four days into the coding process, I realize I need to allow for an ugly duckling to be passed around as well. Now I have four days worth of code to comb through and re-type. I could just use a refactoring tool to change all of the existing &amp;#x27;duck&amp;#x27; types, but some of that code actually does need a duck, and won&amp;#x27;t work with an ugly duckling. So I have to come up with a more abstract type which can encompass both an ugly duckling and a duck, and refactor that into my program.&lt;p&gt;Eventually my code will be correct again, at least until I realize that a platypus needs to be included into my now-renamed aquatic_ecosystem as well.&lt;p&gt;The nice thing about strong and dynamically typed systems - I just start treating the incoming object as what I need it to be. No error chasing, no wading through four days worth of code. Yes, I&amp;#x27;m more likely to have incorrect code, and it&amp;#x27;s probably going to show up while the code is running, and not before. Many times, that&amp;#x27;s a tradeoff I&amp;#x27;m willing to accept.&lt;p&gt;My ideal system? I don&amp;#x27;t think at all about types. I just write code, and the (still fast) compiler will tell me when I&amp;#x27;m passing something that doesn&amp;#x27;t quack to a function which expects quacks.</text></comment>
<story><title>Fun vs. Computer Science (2016)</title><url>http://prog21.dadgum.com/221.html</url></story><parent_chain><item><author>hesselink</author><text>I feel like this is a false dichotomy: you can have a fast iteration cycle, &lt;i&gt;and&lt;/i&gt; have statically checked guarantees. I&amp;#x27;ve worked in Haskell for 7 years and had exactly this. I could load my entire app in GHCi, make changes, reload and test. Now I&amp;#x27;m working in Java and in IntelliJ I can have something similar with hot-swap. And in the browser with typescript I have a strong type-system and can reload my app in seconds.&lt;p&gt;I agree that it&amp;#x27;s easy to build a slow, batch based build system and just tell people that&amp;#x27;s how it is. Fast iteration is important and requires effort to keep working. It might even be more important than a static type system, at least for some apps. But you can have both.</text></item></parent_chain><comment><author>CJefferson</author><text>One very common complaint I&amp;#x27;ve heard about Haskell is slow compile times, see this discussion for example with a bunch of GHC developers:&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.reddit.com&amp;#x2F;r&amp;#x2F;haskell&amp;#x2F;comments&amp;#x2F;45q90s&amp;#x2F;is_anything_being_done_to_remedy_the_soul&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.reddit.com&amp;#x2F;r&amp;#x2F;haskell&amp;#x2F;comments&amp;#x2F;45q90s&amp;#x2F;is_anything...&lt;/a&gt;</text></comment>