Functional Programming: What’s It All About?

Originally confined to computer science academia, functional programming has seen what you could describe as a bit of a renaissance over the past few years. In light of this, let's take a look at what’s at the core of functional programming, some of the predominant functional languages and the main benefits of the approach.

Functional Programming: What Is It?

Functional programming is a programming paradigm. There are a handful of definitions floating around and it can be difficult to define in simple terms. At the heart of it, they build the structure and elements of a computer program through the evaluation of mathematical functions, hence; they’re ‘functional’. It’s a style of programming that emphasises the evaluation of expressions rather than the execution of commands, focusing on computing results.

It’s been stated that functional programming’s renaissance can be largely attributed to its utility in distributed systems. This style of programming has also received a lot of attention from front-end developers who wish to be granted the seal of approval; functional programming has gained a sort of prestigious title due to its reputation of being notoriously difficult to conquer. There seems to be a huge interest formed around being able to crack functional programming languages such as Haskell.

Strict functional programming languages are typically used when a system’s performance and integrity are critical. If your program needs to do exactly what you expect every time and operate in an environment where tasks can be shared across thousands of networked computers, this is where functional programming proves to be extremely valuable.

Some Prominent Functional Programming Languages…

Of course, there are a number of programming languages which support functional programming. We’ll just cover a few of these to take a look into the sorts of features which are inherent to functional programming.

  • Haskell: Defined as a modern, standard, non-strict, purely functional programming language. Haskell is one of the more popular choices of functional language out there.
  • Erlang: Erlang is a general purpose programming language and run-time environment which is also available in open-source. It’s been famously used to write software in telecommunications systems by Ericsson; however it has also been utilised by a number of notable companies such as Smarkets, Whatsapp and Facebook.
  • F#: This language embodies all that is expected in a functional programming language. It’s a strongly typed, multi-paradigm programming language that successfully encompasses functional, imperative and object-oriented programming methods.
  • Scala: Despite its fairly conventional syntax, Scala is also a full-blown functional language. It possesses everything you would anticipate as necessary; first-class functions, a library with immutable data structures and it’s built for efficiency with a general preference for immutability over mutation (so it encourages creating new data structures rather than modifying existing ones). In recent years, Twitter has adopted Scala for its most performance intensive components thanks to its ability to gain the same, reliable result each time.

What Are the Benefits of the Approach?

Although functional programming languages have been labelled as difficult to get to grips with and some have even described learning them like taking on coding from scratch, there are a whole host of benefits that spring from taking on the approach.

From a developer’s perspective, there are a load of advantages towards embracing functional programming. It’s able to break down programs into smaller, simpler chunks that are much more reliable. Functional programs are also usually relatively simple to maintain due to the code being shorter and clearer, the rigorous control of side effects eliminates a huge class of unforeseen interactions, which in turn, saves time and enhances productivity.

Generally, the code produced by functional languages is actually easier to understand and is possible to gather its meaning at a glance due to its simplicity. Perhaps the biggest advantage is the brevity of functional programming?

Although learning a functioning programming language can be incredibly difficult, it seems it’s definitely worth considering due to the recent rise in its popularity and the benefits which are provided for developers and for the outcome of the software. If anything, taking on the challenge of learning a functional language can be a great way of improving your skills and reputation as a developer through improving your current coding skills and giving you a new skill to add to your resume.  

https://www.smashingmagazine.com/2014/07/dont-be-scared-of-functional-programming/