Understanding the Expression Problem: A Fundamental Software Design Challenge
By
ibobev
Pure flour-power. Hearty enough to carry you through lunch.
Summary
The article discusses "The Expression Problem" — a fundamental software design challenge concerning how to design abstractions for data types and operations. The author describes encountering this problem multiple times in their career but only recently discovering it has a formal name. The piece explores solutions to this problem, which involves the tension between adding new data types versus new operations on those types, and how different programming paradigms (object-oriented vs functional) handle this trade-off differently.
Key quotes
· 3 pulledThe craft of programming is almost universally concerned with different types of data and operations/algorithms that act on this data.
It's a problem so fundamental that I was quite surprised that I haven't seen it named before.
designing abstractions for data types and operations has been on the mind of software engineers and programming-language designers since... forever.
You might also wanna read
A Formal Proof That Jira Is Turing-Complete via Minsky Machine Implementation
This article provides a formal proof that Jira (Atlassian's project-tracking tool) is Turing-complete by demonstrating how to build a Minsky
A Formal Proof That Jira Is Turing-Complete via Minsky Machine Implementation
This article provides a formal proof that Jira (Atlassian's project-tracking tool) is Turing-complete by demonstrating how to build a Minsky
Why "Fits on a Floppy" remains a relevant measure of software quality in 2026
The article discusses the "Fits on a Floppy" manifesto, which advocates for small, compact, and comprehensible software in an era dominated
How Shamir's Secret Sharing Algorithm Enables Threshold Cryptography
This article explains Adi Shamir's Secret Sharing algorithm, a cryptographic method published in 1979 that splits a secret into multiple pie
Aperio: A Programming Language Optimized for LLM-Driven Workflows
This article introduces Aperio, a programming language designed specifically for LLM-driven workflows. It argues that languages designed bef
The History of Pipes, Forks, and Zombies in Unix Systems
This article discusses the history and concept of pipes in Unix systems, focusing on Doug McIlroy's original vision of coupling programs lik
