Learning path

The Limits of Computing

Five theorems that say "you cannot do this", in order of how much they hurt. Between them they explain why distributed systems are hard in a way that no amount of better engineering will fix.

AdvancedComputer ScienceLogic6 steps · about 120 minutes of reading

  1. The Halting Problem

    The first and cleanest impossibility. One machine, one question, and a proof that no program can answer it in general.

    No program can look at any other program and always correctly say whether it will finish running or loop forever. Turing proved it in 1936 by building a program that does the opposite of whatever it is told about itself.

    AdvancedImpossibility result20 min

  2. The Two Generals' Problem

    Add a second machine and an unreliable wire, and agreement itself becomes impossible. Two friends trying to fix a meeting time by passing notes that might get lost — that is the whole result.

    Two allies must agree on a time to attack, but every message between them might be lost. No matter how many confirmations they exchange, the last messenger is never confirmed — and agreement is provably unreachable.

    IntermediateImpossibility result18 min

  3. The Byzantine Generals Problem

    Now the messages arrive but some participants lie. The answer is a hard number: you need more than three times as many honest parties as dishonest ones.

    Loyal generals must agree on a plan while traitors among them send different stories to different people. With unsigned messages, agreement is impossible unless more than two-thirds are loyal — and signatures change the bound entirely.

    AdvancedImpossibility result22 min

  4. The FLP Impossibility Result

    The most quietly devastating of the five. Honest participants, reliable messages, and just one that might crash — and deterministic consensus is still impossible.

    In a network with no timing guarantees, no deterministic protocol can promise that a group of computers will ever agree on anything — if even one of them might crash. Not slow, not unlikely: impossible.

    ExpertImpossibility result23 min

  5. The CAP Theorem

    Where all of this reaches production. And where it is most often misquoted, so this entry spends as much time on what CAP does not say as on what it does.

    Almost everyone states it as "pick two of consistency, availability and partition tolerance". That is wrong. Partitions are not a choice, and the real trade-off only exists while the network is broken.

    AdvancedImpossibility result23 min

  6. Goodhart's Law

    An unexpected ending, and the point of it. Having learned that some things are provably impossible, finish with something worse: a system that achieves exactly the target you set and destroys what you wanted anyway.

    Pick a number that stands in for something you care about, then reward people for moving that number. They will move it. The thing you actually cared about is now free to drift away, and your number will not tell you that it has.

    IntermediateCounterintuitive result14 min

That is the path. Try another, orlet the site pick something for you.