In the popular mindset, programming is often associated with math and science, but we spend much more of our time on more philosophical problems -- specifically, categorization and hierarchy. In fact, we joke about how "naming things" is one of the two truly hard problems in computer science. Much of our toolbox -- types, classes, protocols -- are all about naming and categorization; likewise, our most vicious arguments (that aren't about whitespace) are over the ontological frameworks we use for naming our code.
In this talk, we'll see how the systems of categorization in OOP relate to other familiar ontologies, from database schemata to twitter hashtags, and and how taxonomy in programming languages relates to how categories form in our brains. We'll use our new knowledge to answer some of the tough questions around categorization: What's the difference between a class and a type? Why does inheritance cause us so much trouble? And the most controversial of them all: is a hot dog a sandwich?