Thursday, June 4, 2009

Bylaws of Programming and Technology


Amdahl's Law - "The speed-up of a program using multiple processors in parallel computing is limited by the time needed for the sequential fraction of the program."

Brooks's Law - "Adding manpower to a late software project makes it later."

Clarke's Three Laws
  3. Any sufficiently advanced technology is indistinguishable from magic.
(See So Quoted: Any sufficiently... for many corollaries to Clarke's Three Laws.)

Classen's Law - "In order to achieve a linear improvement in usefulness over time it's necessary to have an exponential increase in technology over time." Or more succinctly:

Usefulness = log(Technology)

Conway's Law - "Any piece of software reflects the organizational structure that produced it."

Gall's Law - "A complex system that works is invariably found to have derived from a simple system that worked."

Gates's Law - "The speed of commercial software generally slows by fifty percent every 18 months thereby negating all the benefits of Moore's Law."

Gilder's Law - "Bandwidth grows at least three times faster than computer power."

Goodheart's Law - "When a measure becomes a target, it ceases to be a good measure."

Greenspun's Tenth Rule of Programming - "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp."

Gustafson's Law - "Any sufficiently large problem can be efficiently parallelized."




Kranzberg's Six Laws of Technology
  2. Invention is the mother of necessity.
  3. Technology comes in packages, big and small.
Linus's Law - "Given enough eyeballs, all bugs are shallow."

Metcalfe's Law - "The value of a system grows as approximately the square of the number of users of the system."

Moore's Law - "The number of transistors that can be inexpensively placed on an integrated circuit doubles roughly every two years."

Norvig's Law - "Any technology that surpasses 50% penetration will never double again (in any number of months)."

Parkinson's Laws
  • Data expands to fill the space available for storage.
  • Programs expand to fill all available memory.
Parkinson's Law of Triviality - "Organizations give disproportionate weight to trivial issues."

Proebsting's Law - "Compiler advances double computing power every 18 years."

Reed's Law - "The utility of large networks, particularly social networks, can scale exponentially with the size of the network.

Schneier's Law - "Any person can invent a security system so clever that she or he can't think of how to break it."

Wirth's Law - "Software gets slower faster than hardware gets faster."



John said...

Nice post.

Here's a case study illustrating Gates's Law and Wirth's Law.

Bill the Lizard said...

Thanks, John. When I buy a new PC every two years or so, I'm rudely reminded that those two are more than enough to cancel out Moore.

Timm said...

Very clever how you compiled famous laws from many different leaders in computer science and engineering.

There were a few I've never heard of. This is my favorite, since it seems to apply well to my programming career:


You may also enjoy these 21 Laws of Computer Programming.

Josh Kelley said...

Regarding Gates, Wirth, and Moore, I found "Spending Moore's Dividend" to be a very interesting (and surprisingly charitable) explanation of why things keep getting slower.

Bill the Lizard said...

Thanks for the link. I noticed 2 or 3 of the quotes are already on my list. I'll have to search for the others to see if I can find who said them and maybe add a few to this list.

Bill the Lizard said...

Thanks for the report link. It looks like an interesting read. I'll have a look at it this weekend.

Anonymous said...

Page's Law:

Bill the Lizard said...

Hmmm...Page's Law seems suspiciously similar to Gates's Law. I call shenanigans.