Software with fewer concepts composes, scales, and evolves more easily.
Here's a long definition:
Consider using fewer concepts, data structures, and types in foundational software like programming languages and operating systems.
This style allows for more composition and ad hoc reuse. It scales in multiple dimensions. It evolves gracefully (and messily) over decades.
When introducing a new concept, define a way to reduce it to an existing concept.
• "Everything is an X"
O(M + N) code instead of
O(M * N). Huge difference!
• Coding the Perimeter vs. Coding the Area (from the Unix vs. Google video)
A software ecosystem that uses a narrow waist is following the Perlis-Thompson Principle in a particular way. The narrow waist idea relates to data: data structures, interchange formats, and network protocols. The Perlis-Thompson principle is arguably more general and refers to "concepts" like Unix processes and Emacs buffers that aren't quite data.
It's also known as:
• Thin Waist • Hourglass Model • Lowest Common Denominator • Networking Terms: "Distinguished Layer" or "Spanning Layer"
This idea spans operating systems, networking, and programming languages.
Perlis Thompson Principle
- In Eliyahu M. Goldratt's "Theory of Constraints", you...from ycombinator.com
- Deep and shallow modules: The best modules are deep: they allow a ...from John Ousterhout
- Nathan's four Laws of Software: 1. **Software is a gas** ...from Jeff Atwood
- few days ago I did something that I never thought I’d do again, and...from brandur.org
- Part of what makes LoRA so effective is that - like other forms of ...from Dylan Patel
- Amdahl's law is often used in parallel computing to predict the...from en.wikipedia.org
- But the thing about state-sponsored attacks is that they’re a bit l...from Matt Webb
- CAP theorem is perhaps the best-known statement of the tradeoffs in...from apenwarr.ca