<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Charlie Gower</title>
    <description>The latest articles on DEV Community by Charlie Gower (@charliejrgower).</description>
    <link>https://dev.to/charliejrgower</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F322570%2F6e822fed-f70d-4396-b8da-7c97976792df.jpg</url>
      <title>DEV Community: Charlie Gower</title>
      <link>https://dev.to/charliejrgower</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/charliejrgower"/>
    <language>en</language>
    <item>
      <title>The best Functional Programming blogs, for beginners to professionals!</title>
      <dc:creator>Charlie Gower</dc:creator>
      <pubDate>Thu, 12 Mar 2020 22:12:18 +0000</pubDate>
      <link>https://dev.to/workshub/the-best-functional-programming-blogs-for-beginners-to-professionals-ln3</link>
      <guid>https://dev.to/workshub/the-best-functional-programming-blogs-for-beginners-to-professionals-ln3</guid>
      <description>&lt;p&gt;Functional Programming is lucky to have an incredibly passionate community behind both the methods and individual languages. We've rounded up the best bloggers for both general Functional Programming as well as specific languages. &lt;/p&gt;

&lt;p&gt;If you're a blogger and want to be included on this list, feel free to reach out! &lt;/p&gt;

&lt;h2&gt;
  
  
  Functional Programming
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://lambda-the-ultimate.org/"&gt;Lambda the Ultimate&lt;/a&gt;&lt;br&gt;
Loads of information here on different languages but also structures and techniques.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://byorgey.wordpress.com/"&gt;Brent -&amp;gt; String&lt;/a&gt;&lt;br&gt;
A functional programming blog with a long history. Definitely one to have on your tabs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://functional.works-hub.com/learn?utm_source=blog&amp;amp;utm_medium=organicsocial&amp;amp;utm_campaign=j.kaplan"&gt;WorksHub - Functional Works&lt;/a&gt;&lt;br&gt;
Us! Check out our other Functional Programming articles &lt;a href="https://functional.works-hub.com/learn?utm_source=blog&amp;amp;utm_medium=organicsocial&amp;amp;utm_campaign=j.kaplan"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are also looking for (paid) contributions so if you want your functional writing to be seen by our community please get in touch. &lt;/p&gt;

&lt;h2&gt;
  
  
  Scala
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.scala-lang.org/blog/"&gt;Scala Lang&lt;/a&gt;&lt;br&gt;
Where better to start then with the language itself? Managed by the people at EPFL, it has contributions from developers all over the world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/disney-streaming/this-week-in-scala-april-15-2019-a4da144d23bd"&gt;Disney Streaming&lt;/a&gt;&lt;br&gt;
A blog from the team behind Disney's streaming team, who just so happen to be Scala experts and they have an excellent blog and newsletter dedicated to all the latest news in Scala.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.lihaoyi.com/"&gt;Haoyi’s Programming Blog&lt;/a&gt;&lt;br&gt;
Musings on the language. We especially like the post on Scala.js.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://scalac.io/blog"&gt;ScalaC Blog&lt;/a&gt;&lt;br&gt;
Also a world class dev agency using Scala with all their clients. Tons of posts here on Scala, but also loads of other functional languages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clojure
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://juxt.pro/blog/index.html"&gt;Juxt Blog&lt;/a&gt;&lt;br&gt;
A fantastic blog that highlights all the companies and projects that Clojure is being used in.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.cognitect.com/"&gt;Cognitect&lt;/a&gt;&lt;br&gt;
Of course we couldn’t leave out Cognitect, the creators of Clojure. Regular posts from Rich Hickey and Clojure experts like Alex Miller.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://reborg.tumblr.com/"&gt;Reborg&lt;/a&gt;&lt;br&gt;
A weekly blog on everything Clojure.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://stevelosh.com/blog/"&gt;Steve losh&lt;/a&gt;&lt;br&gt;
An excellent blog page. Definitely read the Caves of Clojure series&lt;/p&gt;

&lt;h2&gt;
  
  
  Haskell
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://neilmitchell.blogspot.com/"&gt;Neil Mitchell’s Blog&lt;/a&gt;&lt;br&gt;
Neil is an excellent Haskell engineer based in London. He praises and critiques Haskell quite well here.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.haskellforall.com/"&gt;Haskell for all&lt;/a&gt;&lt;br&gt;
Sink your teeth into this very technical blog.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://haskellweekly.news/"&gt;Haskell Weekly&lt;/a&gt;&lt;br&gt;
A very good compilation of weekly Haskell posts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bartoszmilewski.com/"&gt;Bartosz Milewski’s Programming Cafe&lt;/a&gt;&lt;br&gt;
Highly detailed blog covering aspects of Haskell.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://okmij.org/ftp/"&gt;okmij.org&lt;/a&gt;&lt;br&gt;
There’s a great section on Haskell here, but plenty more to dig into also.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://comonad.com/reader/"&gt;The Comonad.Reader&lt;/a&gt;&lt;br&gt;
Interesting blog that, among other posts, looks into the reasons Haskell hasn’t caught on mainstream yet, hasn't been updated since Jan 2018, but has a very strong archive&lt;/p&gt;

&lt;h2&gt;
  
  
  Elixir
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://elixirstatus.com/"&gt;Elixir Status&lt;/a&gt;&lt;br&gt;
Pulls in load of different comments about Elixir.&lt;/p&gt;

&lt;h2&gt;
  
  
  FSharp
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://sergeytihon.com/"&gt;Sergey Tihon’s Blog&lt;/a&gt;&lt;br&gt;
A weekly run through of the the weeks F# news.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.feedspot.com/?followfeedid=740453"&gt;Ploeh Blog by Mark Seeman&lt;/a&gt;&lt;br&gt;
Experienced programmer and international conference speaker, particularly interested in functional programming and object-oriented design with Haskell, F# and C#. Occasionally writes and speaks about various development topics. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.feedspot.com/?followfeedid=2067427"&gt;Tomas Petricek's blog&lt;/a&gt;&lt;br&gt;
Tomas Petricek writes about software development in F# and .NET, sharing materials from his F# trainings and talks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brandewinder.com/"&gt;Mathias Brandewiner&lt;/a&gt;&lt;br&gt;
Mathias Brandewinder has been developing software on .NET for about 10 years, and loving every minute of it, except maybe for a few release days. His language of choice was C#, until he discovered F# and fell in love with it. He enjoys arguing about code and how to make it better, and gets very excited when discussing TDD or F#.&lt;/p&gt;

&lt;h2&gt;
  
  
  Erlang
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://joearms.github.io/#Index"&gt;Joe Armstrong — Erlang and other stuff&lt;/a&gt;&lt;br&gt;
The languages designer and his thoughts on Erlang.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.erlang-solutions.com/blog.html"&gt;Erlang Solutions&lt;/a&gt;&lt;br&gt;
The main Erlang dev agency helping to grow the language&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://fsharpforfunandprofit.com/"&gt;F# for fun and profit&lt;/a&gt;&lt;br&gt;
Great blog that praises the merits of F# and guides any one looking to start using it. Keep up the good work!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.udemy.com/scala-tutorial-getting-started-with-scala/"&gt;Scala Tutorial: Getting Started with Scala&lt;/a&gt;&lt;br&gt;
Long read with excellent guidance on getting started with Scala.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.braveclojure.com/getting-started/"&gt;Building, Running, and the REPL&lt;/a&gt;&lt;br&gt;
Our friends at Brave Clojure explaining how to set up your first Clojure program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.twilio.com/blog/2016/02/getting-started-with-clojure.html"&gt;Getting Started with Clojure&lt;/a&gt;&lt;br&gt;
Excellent post on how engineers with JavaScript and Ruby background can get running with Clojure quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://learnyouahaskell.com/chapters"&gt;Learn You a Haskell for Great Good!&lt;/a&gt;&lt;br&gt;
A whole online book on how to get start with Haskell. Well laid out with some comical illustrations too!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@diamondgfx/getting-started-with-elm-11d7a53b1a78"&gt;Getting Started with Elm v0.17&lt;/a&gt;&lt;br&gt;
Elm is a language that is growing a huge following, and it’s a really excited language to know. Here’s the guide to get set up.&lt;/p&gt;

&lt;p&gt;Remember if you are looking for a job, interesting open source issues to contribute to using make sure you sign up below. &lt;/p&gt;

</description>
      <category>scala</category>
      <category>clojure</category>
      <category>haskell</category>
      <category>career</category>
    </item>
    <item>
      <title>Functional Programming Interview Questions</title>
      <dc:creator>Charlie Gower</dc:creator>
      <pubDate>Tue, 25 Feb 2020 14:58:13 +0000</pubDate>
      <link>https://dev.to/workshub/functional-programming-interview-questions-5gba</link>
      <guid>https://dev.to/workshub/functional-programming-interview-questions-5gba</guid>
      <description>&lt;p&gt;They liked your CV. You’ve got the date in your calendar. Very soon you’ll be sitting in a room about to do the interview.&lt;/p&gt;

&lt;p&gt;Multiple things can happen. Maybe you won’t be a culture fit. Maybe you’ll hit it off straight away. The main thing is that you nail the technical part. Of course there’s an infinite amount of questions that can be asked, but after asking our network and speaking with our own team, these are some of the more common questions that you should know…. or at least be aware of.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scala&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why does Scala prefer immutability?&lt;/li&gt;
&lt;li&gt;Explain ‘Scala higher order’ functions?&lt;/li&gt;
&lt;li&gt;What is Monad in Scala?&lt;/li&gt;
&lt;li&gt;What is String Interpolation?&lt;/li&gt;
&lt;li&gt;Explain the difference between ‘concurrency’ and ‘parallelism?&lt;/li&gt;
&lt;li&gt;Could you comfortably explain the difference between a Monad and an applicative functor?&lt;/li&gt;
&lt;li&gt;Could you explain the actor model and what problem it solves?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Haskell&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mention what are the benefits of Haskell expression?&lt;/li&gt;
&lt;li&gt;What are Monads in Haskell?&lt;/li&gt;
&lt;li&gt;Why is“lazy evaluation” useful in Haskell?&lt;/li&gt;
&lt;li&gt;Explain Haskell Compilation, Debugging, Performance Analysis?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Erlang&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain how messages are sent and received in Erlang?&lt;/li&gt;
&lt;li&gt;List out the pre-defined Macros in Erlang?&lt;/li&gt;
&lt;li&gt;Explain what is a record and how you can define records in Erlang?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Clojure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where do Clojure projects use multimethods?&lt;/li&gt;
&lt;li&gt;When do you use Macros in Clojure?&lt;/li&gt;
&lt;li&gt;How you can filter/map/reduce?&lt;/li&gt;
&lt;li&gt;Tell me the Pros/Cons of Immutability.&lt;/li&gt;
&lt;li&gt;What’s the difference and when would you use a ref/agent/atom/var?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;JVM&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are some different types of memory used by JVM?&lt;/li&gt;
&lt;li&gt;What are the different class loaders used by JVM?&lt;/li&gt;
&lt;li&gt;Is JVM a compiler or interpreter ?&lt;/li&gt;
&lt;li&gt;How does JVM perform Garbage Collection?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;General&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When is it okay to get rid of efficiency for readability?&lt;/li&gt;
&lt;li&gt;Can an Impure Function be Referentially Transparent?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now who wants to write all the answers for us?? &lt;/p&gt;

&lt;p&gt;You could also practice some Clojure on WorksHub Open Source Issues feature - &lt;a href="https://www.works-hub.com/issue/f59afe47-5961-4dc1-8005-2a1a2a0df519"&gt;https://www.works-hub.com/issue/f59afe47-5961-4dc1-8005-2a1a2a0df519&lt;/a&gt;&lt;/p&gt;

</description>
      <category>functional</category>
      <category>clojure</category>
      <category>scala</category>
      <category>haskell</category>
    </item>
    <item>
      <title>What Is Functional Programming + Why It (could) Make You A Better Programmer?</title>
      <dc:creator>Charlie Gower</dc:creator>
      <pubDate>Mon, 27 Jan 2020 08:26:02 +0000</pubDate>
      <link>https://dev.to/workshub/what-is-functional-programming-why-it-could-make-you-a-better-programmer-2o28</link>
      <guid>https://dev.to/workshub/what-is-functional-programming-why-it-could-make-you-a-better-programmer-2o28</guid>
      <description>&lt;h2&gt;
  
  
  What is a programming style?
&lt;/h2&gt;

&lt;p&gt;When a programmer sits down to start a new project they have a few decisions to make, the chief one being how they should write the program. Coding is a lot more creative than it is given credit for. Programs can be written in many different languages and styles (known as Paradigms) from novel length scripts to one-liners as comprehensible as wingdings.&lt;/p&gt;

&lt;p&gt;This is the main reason for debate in programming circles. There is no one answer. There are many ways of solving problems and ultimately as long as the project is completed, it doesn’t matter how it was done. The choice of style is based on a programmer’s experience and the details of the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h0GQDNtg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b52d1kpvd4zelpyxd8p3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h0GQDNtg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b52d1kpvd4zelpyxd8p3.jpeg" alt="Alt Text" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The only good project is a completed project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Functional Programming (FP) is one of these styles. More common styles are Imperative Programming and Object Oriented Programming. These styles lay out a set of guidelines you have to follow. If a programming language allows you to follow [x] style guidelines, that language is said to be a [x] style language. Languages can include multiple styles (e.g. Python) or focus only on one style, known as pure languages. However, these guidelines are not generally enforced (only certain pure languages enforce) leaving it up to the discipline of the programmer to abide by them, similar to a writer’s responsibility for good grammar.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Functional Programming?
&lt;/h2&gt;

&lt;p&gt;Analogy time: Imagine the inside of a large factory space. Big, completely empty, sunlight streaming in through tall windows. This space is going to be used to make cars. Specifically Tesla cars.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sOYdv20D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/btirc6p0xtocpfbot5kw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sOYdv20D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/btirc6p0xtocpfbot5kw.jpeg" alt="Alt Text" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Because Tesla cars are cool&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The factory overseer (our stand in for the programmer) realizes there are several options for laying out the factory machines and workers.&lt;/p&gt;

&lt;p&gt;An Imperative overseer would produce the car using a factory line. The components start at one end of the line and a car comes out the other. Along the way, workers carry out each construction step. The next worker is reliant on, and waiting for, the previous worker to finish up. The slowly growing car progresses along the line as the workers finish. With smaller projects, this is fine, but with larger projects this factory line becomes slow and wastes a lot of the worker’s time.&lt;/p&gt;

&lt;p&gt;An Object Oriented overseer would split the workers into groups and have the car be built on a central stage. Each group is responsible for a component of the car. One group does the wheels, another does the undercarriage, another the paint. This method of working does mean less time waiting. While one worker puts the wheels on, paint can still be mixed and metal welded. It also means the source of errors can be located more easily. You don’t have to stop the factory line and check each worker’s output. If the spokes are crooked, you check the wheel group, headlamp failing, check the electrics group etc. However the workers are still reliant on each other to a degree, shouting across the factory floor. They need to know the current state of the car, after all you can’t apply the paint until the chassis is on.&lt;/p&gt;

&lt;p&gt;A Functional overseer would split the factory floor into soundproof rooms connected by conveyor belts. Workers in one room are completely unaware of the rest of the floor. They receive components at one end and they feed the result out the other end. The workers don’t have to be aware of the changing state of the car. They are only aware of what’s happening in the local vicinity. They take pride in producing one thing well, no side projects or alterations, just the vanilla product. They never get to see the finished car. Error sourcing is even easier with such a regimented and simple task. An overseer could check errors just by counting the number of rooms outputting correctly. Additionally, a new overseer could visit and be able to understand the purpose of each room, and flow of the factory floor, without any explanation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is one of the reasons why academics love functional programming. They can conduct experiments in each of the rooms, treating each as a testing environment, with no confounding factors. They can work towards causation rather than correlation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why should you use it?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Greater Productivity
&lt;/h3&gt;

&lt;p&gt;The functional programming style produces shorter programs in a quicker time, due to:&lt;/p&gt;

&lt;h3&gt;
  
  
  Greater Modularity
&lt;/h3&gt;

&lt;p&gt;Building a factory floor of segregated rooms requires splitting the car-making process into small and simple pieces. This makes it faster and easier to create the rooms, and easier to have another overseer check the reasoning behind room choice and placement. And due to each rooms singular use, they can be reused easily in later projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easier Testing
&lt;/h3&gt;

&lt;p&gt;When a room performs one function, and produces one vanilla output, it becomes trivial to test whether this output is the same as previous outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easier Debugging
&lt;/h3&gt;

&lt;p&gt;As each room only receives the input it requires, the number of other outputs it depends on is smaller. When there are only a few paths to trace back along, bugs are located faster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6Aj4HJRI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cqe8zeea1lnein9tcpd1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6Aj4HJRI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cqe8zeea1lnein9tcpd1.png" alt="Alt Text" width="856" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Specflow. Not a Functional (C#) Project. Good luck finding an error in there.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mQXurM3P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5i6f11poos9n623mjiak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mQXurM3P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5i6f11poos9n623mjiak.png" alt="Alt Text" width="648" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TickSpeck. Equivalent Functional (F#) Project. Much simpler dependencies. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  It's Future Ready
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Parallel Programming
&lt;/h3&gt;

&lt;p&gt;As CPU speeds start to flatten out, programs will have to be distributed across multiple CPUs (or CPUs with multiple cores) to keep increasing their speed. The modularisation and lack of communication across the factory floor mean that there is very little interference, something which otherwise prevents CPUs from working well together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Asynchronous Programming
&lt;/h3&gt;

&lt;p&gt;As the number of data sources, and amount of online hosting (e.g. Internet of Things connected devices, accessible APIs, and cloud-hosted databases), increases the chance of a long wait time for an input will increase. The FP style of composition means that this wait time doesn’t act as a bottleneck. While a room waits for input, the rest can function as per normal building components for the next car. The delayed room then becomes the final step in the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's Good For you
&lt;/h2&gt;

&lt;h3&gt;
  
  
  As a programmer
&lt;/h3&gt;

&lt;p&gt;Learning a new paradigm will make you better at what you do. It gives you a new tool to work with and a new perspective, which can help you make you better understand the nuances of styles and languages. And being more productive will allow you more time to work on other things, allowing you to develop in other areas. As with any skill, continuing to challenge yourself is the only way to grow as a programmer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;[people] cannot understand the perfection and imperfections of his chosen art if he cannot see the value in other arts … To just study the sword will make you narrow-minded and will not permit you to grow outward.&lt;/p&gt;

&lt;p&gt;Miyamoto Musashi — 17th Century Samurai. Author of The Book of Five Rings&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  As a person
&lt;/h3&gt;

&lt;p&gt;Being more productive will help reduce stress and pressure at work. It will allow you more free time, which can be spent on things that make you happy. Continuing to learn is also good for your mental wellbeing, a way of making progress and getting positive feedback that you can control. This helps develop long term happiness.&lt;/p&gt;

&lt;h3&gt;
  
  
  Start Using FP Now
&lt;/h3&gt;

&lt;p&gt;In recent years, each new release of major programming languages has brought them closer to the FP guidelines. Both pure and mostly FP focused languages are on the rise. Competitive startups are choosing FP for their new codebase and existing companies are switching over to help solve large problems.&lt;/p&gt;

&lt;p&gt;What’s stopping you to jump in?&lt;/p&gt;

&lt;h3&gt;
  
  
  Further Reading
&lt;/h3&gt;

&lt;p&gt;The original source for the comparisons is &lt;a href="https://twitter.com/ScottWlaschin/"&gt;Scott Wlaschin&lt;/a&gt;, see his article &lt;a href="http://fsharpforfunandprofit.com/posts/cycles-and-modularity-in-the-wild/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For a more technical read, have a look at the academic paper &lt;a href="https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf"&gt;Why Functional Programming Matters&lt;/a&gt; (John Hughes, University of Glasgow).&lt;/p&gt;

&lt;p&gt;. . .&lt;/p&gt;

&lt;p&gt;Thanks for finishing the post. If you liked it, follow us on &lt;a href="https://twitter.com/functionalworks"&gt;twitter&lt;/a&gt; or &lt;a href="https://functional.works-hub.com/"&gt;sign up to&lt;/a&gt; to be kept up to date.&lt;/p&gt;

&lt;p&gt;If you would like a career in Functional Programming, &lt;a href="https://functional.works-hub.com/"&gt;check out Functional Works&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>functional</category>
      <category>career</category>
      <category>workshub</category>
    </item>
  </channel>
</rss>
