Explaining Functional Programming
≺≻ What Is Functional Programming ≺≻ Good Explanations ≺≻ Programming Concepts ≺≻ Which Functional Programming Language Should I Start With
Abstract
Most of us have been there—explaining functional programming is hard.
This talk first gathers the prerequisites for understanding functional programming and then provides a template for explaining it. In the meantime, it touches on the history of programming, programming languages, coupling, complexity and some general concepts.
End
- What constitutes a good explanation?
- It should actually make you able to predict things you couldn’t predict before: No Mysterious Answers to Mysterious Questions
- It should provide context to embed it in—you should be able to regenerate the explanation from the context given. And maybe even able to explain other stuff? Regenerate the Knowledge
- It should have enough open threads to make you curious for more.
- It should be hard-to-vary: If it can explain anything, it really explains nothing.
-
Depends on the context, but "Math" probably isn’t one.
-
Those paradigm names are bad: No one would name a whole field of stuff after one of the main elements—well, it turns out that people do, and always did. (Computer Science, Algebra)
- Those paradigms would be more adequately named Machine State Programming, Machine State programming independent from the machine, Object Oriented Programming—this one’s okay, it describes things quite well, I think—and decoupled programming.
-
Replace the symbol with the substance:
functional programming-> [Low Coupling, Declarative Coding, Immutability] -
What is a programming language? -> Programming languages as sets of features
-
What is the history of Coupling?
-
FP?
-
Lambda Calculus and Turing Machines: The two families of Programming Languages
-
Jump from OO to FP: Behavior Data Time
-
Interpreting the History of Coupling: The complexity of our programs and systems rises, our working memory is constant, so it’s really, really useful if the incidential complexity of our code goes down.
So, what is Functional Programming? A style you can write programs in that has these chracteristics/uses these features:
- Low Coupling
- Immutability
- pure Functions
Start
Most of us have been there:
- What are you doing for a job?
- What is this meetup you go to?
- You’re interested in that?
And then we try to explain. We use crutches: We say in which language we write code in.
We say “It’s ilke math”, we call it “simple”, but nothing of it really clicks. And we can see it.
So, how can we make it click?
In the next couple of minutes, let’s go through my attempts to explain functional programming, and maybe that even offers one or two perspectives along the way.
Proceed
I regularly try to explain the point of functional programming to people, but it’s hard.
Read a lot of Yudkowsky: We need to Replace the Symbol with the Substance.
Remember, you need to understand Programming languages as sets of features: Then, things will be way more clear.
For every of these features, there is a spectrum from high Coupling to low Coupling.
Coupling is bad. You should not complect. ≺≻ Simple Made Easy
Now it’s way easier to understand programming paradigms: They are sets of programming languages that have sets of features which are on similar points on the coupling spectrum.
To program functionally then means to draw from the features programmers in the languages of the functional programming paradigm set use.
-> to use features on a certain level of abstraction, and on a certain level of coupling.
- Replace the symbol with the substance