FANDOM


Welcome to the Functional Wikia

Functional wiki page is a page to discuss functional programming. I want to talk about every single goal that functional programming helps achieve. How to adapt and simplify it to the level of everyday use will also be discussed.

Goals

Let me begin by asking what are the goals of this type of programming. The goals are

  • Modularity / Reusability
  • Parallel performance
  • Simplicity of Programming
  • Productivity

Discussion

Programming is a very complex process. It involves collaboration from a lot of people to build a program. Involving so many people has benefits as well as pitfalls. Lack of communication or miscommunication can creep in errors, which are hard to track, thus slowing down or failing the entire process. Imagine if work could be distributed among teams in a way that problems in one team doesn't directly affect others. That would make things much more manageable. Every program consists of Data and a Function that acts on that data. I believe that the modular functions into which a program is divided and they way they interact with each other is way more important than what these functions actually do. This is metadata of functions.

One set of developers describe the actual statements of functions. The other set of people, those with a better understanding of the software and its goals, would compose the functions. It is the duty of function composers to identify the modularity required and decide the task of each function.

Now coming to the actual statements of a function and the data that is being worked upon. Data can be organized like structs. But then there are some functions which are quite unique to that data set and are commonly used. Data and metadata update functions. So walking away from strictly following functional programming, object-oriented like approach can be brought into organizing the data.

Computation is generally divided into categories:

  • SISD [Single instruction, single data]
  • SIMD [Single instruction, multiple data]
  • MISD [Multiple instruction, single data]
  • MIMD [Multiple instruction, multiple data]

SISD is about one instruction at a time working on a single set of data. MIMD is a direct scale of SISD where multiple functions operate on different sets of data in parallel. Thus, different functions working on different sets of data can be executed in parallel. SIMD is extending a single function to multiple sets of data, which can also be executed in parallel. MISD is Multiple functions working on a single set of data, but due to synchronization requirements, it can be said to be a special case of SISD.

Functional programming is centered around dividing a program around functions. These functions are re-usable, and can also be passed around as parameters to other functions.

[WORK IN PROGRESS]

Latest activity

Photos and videos are a great way to add visuals to your wiki. Find videos about your topic by exploring Wikia's Video Library.

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.