A bit of Functional Programming
Submitted by Aniketh Gireesh (@aniketh01) on Monday, 4 December 2017
Technical level: Intermediate
This talk will cover a selection of topics related to functional programming, and how it can improve our day-to-day work, make our code safer, cleaner and more correct.
Target Audience: Any developers with a fair bit knowledge in programming and interested towards functional programming.
The talk dives into subjects such as:
- Categorisation of functional programming and functional programming languages.
- Elements of functional design:
- Immutable state.
- Characteristics of Functional programming:
- High-order functions.
- Lazy evaluation.
- Features/ advantage of functional programming:
- Reusability Through Higher Order Functions.
- Efficient Parallel Programming.
- Supports Nested Functions.
- Bugs-Free Code.
- Lazy Evaluation: supports Lazy Functional Constructs like Lazy Lists, Lazy Maps, etc.
- Efficiency of a functional program.
- As a downside, functional programming requires a large memory space. As it does not have state, you need to create new objects every time to perform actions.
What is functional programming?
Functional Programming is a programming paradigm. Functional programming is a style of building the structure and elements of a computer program. Such programs treat computation as the evaluation of mathematical Functions and uses Immutable data while it avoids changing-state. Thus being a declarative programming paradigm, programming is done with expressions or declarations instead of statements.
Necessity of functional programming?
Functional Programming keeps complexity at a manageable level because FP components can be divorced from their surrounding context and analysed independently. FP components can also be freely composed, an insanely useful property in an industry where software projects are seemingly built like houses of cards.
Why learn functional programming?
Functional programming is often said to be necessary in multi-threaded environments, but that is only one part of the story. Avoiding mutation helps avoid explicit synchronization of concurrent processes, but it can also be helpful in other circumstances.
functional programming matters, because it’s simply a superior method of creating theories of problem domains. The difference between the approaches of imperative and functional programming mirrors the difference between code with high and low resistance to change: a convoluted network of ad-hoc interdependent code parts versus a system composed hierarchically of building blocks, following simple rules of composition on every level.
I’m currently pursuing a B.Tech in Computer Science at Amrita School of Engineering, Amritapuri, Kerala, India. Being a meticulous learner and a determined mind, I always wish to explore different areas of computer science.
I started contributing to KDE in September 2016. I worked on the project Kstars as part of KDE Sok 2016-17. I was selected as a Google Summer of Code intern 2017 in my first year. My project was under Krita, which was aimed at improving the user capability via integrating with share.krita.org, a website used by designers to host their work using Libraries of the Open Source Organisation, KDE. The project helped to have a hassle-less method of transfer of data between the application and servers directly, making the life of people who depended on open source elements via KDE and through Krita way easier.Moreover, I have contributed to other projects of KDE to help make it better. I have given talks at few occasions like KDE India Conference 2017 edition.