CAP Theorem (Consistency, Availability, Partition)

CAP theorem states that it’s impossible for a distributed computer system to have all the following simultaneously

  • Consistency
    All part of the systems see the same data.
  • Availability
    A guarantee that each request receives a response regardless of success / failure.
  • Partition tolerance
    The whole system continue to work despite disconnection, message loss or any failure in the subsystems.

Eric Brewer said that a distributed computer system can only have 2 out of these 3 functions at a time.

Software Laws

I was looking for a specific theorem called CAP theorem, but came across these interesting, sort of funny but somewhat true, software laws.

I think these laws are useful to get better understanding of philosophy behind a software or computer science in general.

  • Atwood’s Law

    Any software that can be written in JavaScript will eventually be written in JavaScript.

  • Brooks’s Law

    Adding manpower to a late software project makes it later.

  • Conway’s law

    Any piece of software reflects the organizational structure that produced it.

  • Miller’s law

    To understand what another person is saying, you must assume that it is true and try to imagine what it could be true of.

  • Wirth’s law

    Software gets slower faster than hardware gets faster.