S. D. V. Stephens

notes / Category Theory / chapter 1: Categories

1.1 Programming and Abstraction

Programming began in Assembly: low level, directly telling the computer what to do.

  • This can lead to a philosophy, as the imperative for programming: Turing machines are sufficient.
  • Turing. Objects: program the object.
  • Lambda calculus (Alonzo Church): math in terms of how it can be executed, but not very practical to scale for computer science. It came far before computers: Alonzo Church, by how things can be executed.
  • So the next level was needed to improve abstraction (procedural programming). The programs themselves run (they take arguments; you can change values).
  • Object-oriented programming is the next level of abstraction.

Alonzo Church, but not practical for scaling, so higher levels of abstraction were needed:

  1. procedural programming (values, arguments, #s can be edited);
  2. now bigger problems tackled: object-oriented programs, interfaces. You can go bigger.

So for more complex problems you have to be able to chop up the bigger ones. This is godly.

Mom, these computers are the ultimate subject of mathematical philosophy.

This abstraction is beautiful: these supersets of abstraction, complexity as emergent.