Programming In Five Easy Pieces

Programming In Five Easy Pieces
  1.   A group of people have a goal. They use dialectic and language games to come to a tentative alignment on terms
  2.   For purposes of this specific goal of these specific people, these terms only have meaning inside a formal system they create together (a programming type system)
  3.   As this formal system is developed, the process is repeated and defined
  4.   The resulting technology (executable type system) is used to create and validate new hypotheses about the universe around us
  5.   Entire process repeats as desired
1. Social interactions, in a variety of contexts using some sort of rules of engagement, begin alignment
2. To begin to eliminate language "slipperiness", formal logic is used with key terms
3. Work in the formal system affects work in the human system, and vice-versa. Formal work can either be Test-Driven Development or Incremental Strong Typing
4. Programming is all about knowing something you didn't know before: how many users will sign up, what are the implications of ad-based revenue, etc. Your values are your own, the code keeps your terms coherent and logical, and we don't address metaphysics. Good coding, no matter what the project, is applied philosophy: learning
5. Different people, different context, different goals -> different project
5b. It's a mistake to think of this as a matter one thing that nobody has figured out yet. Even with the exact same information, you get different answers. It's a function of the intelligence of the creatures involved, not the external world (Semiotics)