Each week, we discuss a different topic about Clojure and functional programming.
If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast
channel on the Clojurians Slack.
This week, the topic is: "freedom through constraints." We bump into limiting constraints and learn to love their freedoms.
Our discussion includes:
- Why expressiveness isn't everything.
- Causes of combinatorial complexity.
- The long-term benefits of decreased complexity.
- Problems Clojure eliminates with its language design.
- Why complexity feels so good when you're problem solving.
- How the right limits create freedom.
- Why Clojure's limiting constraints make it hard to switch from object-oriented programming.
- Reasons software teams start using microservices.
- Integrating around behavior vs integrating around data.
- Awesome hair.
Selected quotes:
- "Complexity really adds up the more you load it into your application."
- "Clojure eliminates the time sink related to combinatorial complexity while giving you the ability to craft things faster."
- "When you're inside a method of an object, there's all those delicious member variables, instance variables, that are just sitting there ready to be touched--ready to be modified--and you have to be super disciplined not do that."
- "You feel so good because of all the systems you come up with, and all the structure, and all the rules. You notice patterns in the different rules, and you publish books about them, and you think, 'Wow! Look how productive we've been in coming up with all these ways of managing all this complexity! Programming is so hard!'"
- "Limiting constraints create freedom through limitation."
- "Sorry, I mutated it out from underneath us."
- "Eventually, over time, [the OO system] grows and then it becomes unmanageable. It becomes ungovernable. There are no rules that you can actually have, so the only solution is to rewrite."
- "You know it's a good metaphor when you can take it to the level where it starts falling apart."
- "This is a big downside of Clojure: you don't just pick it up like your last four programming languages that were all from imperative land."
- "It's not just a functional style that hangs out as a little part of your program. This is functional: top to bottom, ceiling to floor."
- "You think of zucchini bread as a naturally mom-shaped problem."
- "You have to discover another way to do it, and that can take time."
- "It appeared again! Great! It's for me!"
- "I just want my program to work, and some guy, with awesome hair, has told me that this is better, but I don't know how to get there!"
Links: