Tuesday, March 24, 2009

Laws and Rules

Saw a post on LtU about one of the first laws of computer science that I ever learned:

Zero, one, infinity rule [on going beyond public/private/protected/published/...]

This seems to be about change control boundaries. You start at level zero with a language that has no inner boundaries. Then you say: we need one change control boundary. You add the public/private distinction.

That is OK for a while, then you start thinking: I wish we had two levels of change control. Private, public, published. How plausible is it that two will be enough? Surely this is the point to move to a more general structure. - Alan Crowe

Recently, I've been starting talks with Amdahl's law (when you go parallel, you need to go all the way), Bell's law (laptops are being replaced by handhelds), or the Birthday Paradox (in a room of 23 people, there's a 50+% chance some folks share the same birthday).

I think the coolest one that I've picked up recently is about the difficulty of jumping from 2 to 3. Solving 2-SAT and 2-coloring is easy -- they're even the same problem -- but going to 3-SAT and 3-coloring is prize-money hard.

No comments: