JSJ 272: Functional Programming and ClojureScript with Eric Normand
[00:1:14] Introduction to Eric Normand
Eric works for purelyfunctional.tv. The main target market for his company is those people who want to transition into functional programming from their current job. He offers them support, shows them where to find jobs, and gives them the skills they need to do well.
[00:02:22] Address that quickly
Functional programming is used at big companies such as Wal-Mart, Amazon, EBay, Paypal, and banks. They all have Clojure but it is not used at the scale of Java or Ruby.
So yes, people are using it and it is influencing the mainstream programming industry.
[00:3:48] How do you build an application?
A common question Eric gets is, “How do I structure my application?” People are used to using frameworks. Most start from an existing app. People want a process to figure out how to take a set of features and turn it into code. Most that get into functional programming have development experience. The attitude in functional programming is that they do not want a framework. Clojure needs to be more beginner friendly. His talk is a four-step process on how to turn into code.
[00:05:56] Can you expand on that a little?
There are four steps to the process of structuring an application.
- Develop a metaphor for what you are trying to do. Developing the first implementation. How would you build it if you didn’t have code?
- Develop the operations. What are their properties? Example: will have to sort records chronological.
- Develop relationships between the operations.
- Run tests and refactor the program. Once you have that, you can write the prototype.
[00:13:13] Why can’t you always make the code better?
Rules can’t be refactored into new concepts. They have to be thrown away and started completely over. The most important step is to think before beginning to write code. It may be the hardest part of the process, but it will make the implementation easier.
[00:17:20] What are your thoughts on when people take it too far and it makes the code harder to read?
He personally has written many bad abstractions. Writing bad things is how you get better as a programmer. The ones that go too far are the ones that don’t have any basis or are making something new up. They are trying to be too big and use no math to back up their code.
[00:20:05] Is the hammock time when you decide if you want to make something abstract or should you wait until you see patterns develop?
He thinks people should think about it before, although always be making experiments that do not touch production.
[00:27:00:] Dave Thomas believes that the future of software is functional programming. Do you agree?
Eric thinks that it seems optimistic. He doesn’t see functional programming take over the world but does think that it has a lot to teach. The main reason to learn functional programming is to have more tools in your toolbox.
[00:31:40] If this is a better way to solve these problems, why aren’t people using it?
There is a prejudice against functional programming. When Eric was first getting into it, people would ask why he was wasting his time. Believes that people are jaded. Functional programming feels foreign because people are used to a familiar way of programming; they usually start with a language and get comfortable.
[00:40:58] If people want to get started with it, is there an easy way in?