

Imperative programming describes the "flow of control" (think flowcharts) where program execution moves computation forward by manipulating values in place (PLOP - Place-Oriented Programming)įunctional Programming advances computation by creating new values through the transformation of existing values ( value-oriented programming). This highlights why FP seems so different: Like comment: Like comment: 8 likesįall back on this anytime FP feels different enough to seem difficult-you're just not familiar enough with it yet. If I were looking to use something that uses some ideas from functional programming in production, I would learn rust. If you want to learn functional programming, I would start with Elm, then clojure, and then go on to Haskell (or purescript if you want a more recent, fewer standard library warts version of Haskell). Some elements of node and reactjs have pushed industry slightly away from imperative or oo for everything, but I don't know if it will extend further. In such an environment, it almost doesn't even matter that functional programming exists or if it's better or not. Huge ecosystems use and enormous numbers of engineers have been trained to use oo and imperative programming.


For most other situations, where you are building something large but simple, I would only use functional languages if they were the dominant paradigm some day, because otherwise you will get small gains in exchange for sacrificing access to large sets of libraries or spending lots of time adapting libraries written with other paradigms to work within your functional programs. I would use a functional programming language if I were building something deeply complex such as a compiler or if I was building something which aimed for bulletproof correctness such as safety critical systems or systems dealing with financial transactions.
