lucida
blog paper tags 中文

On the Criteria To Be Used in Decomposing Systems into Modules

1972 · D. L. Parnas

Using the KWIC example, Parnas shows that good modular decomposition hides change-prone design decisions rather than mirroring processing steps.

An Axiomatic Basis for Computer Programming

1969 · C. A. R. Hoare

Hoare presents an axiomatic framework for proving partial program correctness, then uses it to discuss proofs, language definition, documentation, and portability.

Programming as Theory Building

1985 · Peter Naur

Naur argues that programming is not mainly producing text, but building a theory around the problem and solution that can be explained, extended, and revised.

No Silver Bullet: Essence and Accidents of Software Engineering

1986 · Frederick P. Brooks, Jr.

Brooks distinguishes essential from accidental difficulties in software engineering and explains why no single technology can deliver an order-of-magnitude productivity jump.

The Rise of "Worse Is Better"

1991 · Richard P. Gabriel

Explains why "worse is better" wins in practice: simple implementations, rapid spread, and evolvability often beat perfect design.

Hints for Computer System Design

1983 · Butler W. Lampson

A set of system design heuristics on keeping interfaces simple, making systems faster, and balancing fault tolerance against complexity.

[Classic Reread][1/n] Worse Is Better

2026-04-25

A reread of Richard Gabriel's Worse Is Better: why systems that are less perfect but easier to implement and spread often win adoption first, and why mature ecosystems later need The Right Thing to repair them.

thoughts, notes, and writings