You have heard your grandmother tell you many times: parallel programming is hard. In 2022, does it still have to be? Back in grandma’s heyday, they knew a cool and breezy way to do parallelism: pure functional programming. They knew that pure functions are parallel by default, being free of pesky concurrency bugs and all. But, parallel functional programming remained slow and steady, resisting practical efficiency for decades. This post shows the way towards solving the performance problems of functional programming.
How can we refocus and modernize the undergraduate “programming paradigms” course?
Sometimes functions are not enough.
Calculating a greedy algorithm for an optimization problem, functionally.
Why reason *about* algorithms, when you can reason *with* them?