I think the real trick to all of that is always think about the data as being forever. One thing that we often do when we’re programming is we want things to be a little bit more concrete.
Thoughts on Functional Programming Podcast
An off-the-cuff stream of Functional Programming ideas, skills, patterns, and news from Functional Programming expert Eric Normand.
One of the questions that came up a couple times was what is a Web framework? What does that even mean? I don’t want to get into philosophical discussion about what a framework is. Is it a library or framework or any of those kinds of questions. I’ll tell you what I meant, what I still mean by this assertion that we need one.
What I want to talk about is this issue of what is an action and what is a calculation in terms of timeliness, because we know that deep down in the computer, everything is an action. Every operation depends on what is that particular locations in memory at the time that the operation is run.
I think a lot about what Clojure needs. Is there something that is sort of the bottleneck for growth? People talk about different things as their hypotheses for what would make it grow. I think that what Clojure needs — I’ll talk about my hypotheses — I think what we really need is to solve all of the boring problems that other languages have already solved.
I want to talk about how programming is a pop culture. It’s true, programming is a pop culture. There are big trends, fads, new frameworks coming out all the time. It’s all about attention and getting mind share and people watching your media about what framework or what language to use, or how to program.
There are different patterns that we use as functional programmers to reduce the possible states so that it becomes easier to reason about. I think that this is something that we should talk about a little bit more, because it’s actually something that isn’t talked about much in imperative programming.
Today, we’re going to be talking actions. Now, as counter-intuitive as it may be, functional programming has more to say about actions than it does about data and calculations. At least, more interesting stuff to say.
The data tradition goes back to the early days of writing, and functional programming largely tries to learn lessons from those instead of doing what object-oriented programming tries to do, which is attach code to the data, so the data is inert. It just is what it is.
In a general sense, every operation depends on when it is run and how many times it is run. Using our language or some other discipline, we can say, “Well, that memory or the register, it’s kind of special. We’re not going to store anything important in there so that at any point we can overwrite it.”