Comparing Three Notions of Software Complexity

2025-06-15

This article compares three distinct definitions of software complexity from Rich Hickey, John Ousterhout, and Zach Tellman. Hickey defines simplicity as oneness, emphasizing objectivity; Ousterhout defines complexity as anything making a system hard to understand and modify, highlighting dependencies and obscurity; Tellman defines complexity as the sum of every explanation, emphasizing audience-dependent surprisal. The article weighs the strengths and weaknesses of each, exploring their application to real-world problems. Ultimately, it argues that Tellman's explanation-based approach is superior for capturing subjective developer experience and guiding practical decisions.

Read more
Development software complexity

Error Models for Systems Programming Languages: An Epic Treatise

2025-03-08

This 15,000+ word blog post delves deep into error models for systems programming languages. The author approaches error representation, propagation, and handling from multiple perspectives: product, type system, and language design. A hypothetical language, 'Everr', and its error model are proposed, aiming for a balance between graceful degradation, performance optimization, and interoperability between libraries. The post compares error models across various programming languages and explores programmers' understanding and handling of errors.

Read more
Development