(Actually everything is an object. But that does not mean that everything must be an object. A little ontology check. Ref: MostlyHarmless. --AlistairCockburn)
TILT! Alistair, are you talking about programs or the world?
Nouns:Verbs::Systems:Processes::Objects:Functions::Bodies:Forces
… and adjectives are called “attributes” or “properties” or "features". And the mathematics behind some physical process is one example of an adverb. The experts in every domain create an ontology that follows this general pattern, usually unaware (at least explicitly) that they're just creating one ontology out of the many possible ontologies.
Everything's also a verb. Everything's also a relationship. Probably stated with the wrong grammar... For anything you can name, there's a way of looking at it as a noun / verb / relationship. In "Using natural language as a metaphoric base for OO modeling" I ended up deriving most things as relationships, much to my surprise.
Given that you can look at anything (and at this instant I don't know if there is an exception to this rule, demonstrating the rule that there is an exception to every rule, or whether this is the rule that has no exceptions, thus demonstrating that there is an exception to every rule) as a noun, then you can certainly model it as an object. If you can look at it as a relationship, you can stuff it into a relational database. If you can look at it as a verb, you can model it as a function.
At least in English, anything you can think can be put into a noun position simply by saying, "I'm thinking about <that>." Away you go. And you can create a relationship between any two things you can nominate (Hat. Water. Class of Hats with something to do with Water. Class of Hats with nothing to do with Water.) And suddenly you're classifying garbage like a giant recycling center.
Verb? You want verbs to go with your classified nouns? Just anthropomorphize and add a little ResponsibilityDrivenDesign, and your Unwaterworthy-Hats will soon be putting themselves on peoples order forms, dialing phones, and sending themselves to the recycling center.
Don't like objects? Well, Smalltalk got it's start by mimicking LISP. Just shift paradigms and start the dance all over again from a verb's point of view. For me, the whackiest of them all is the FunctionalProgramming group constructing a maths in which effects on the real world are some sort of aberrant giant memory with strange functional properties.
You can tell I DidntGetMuchSleep. But I hope the point is clear enough. If not, have this relationship between us, which has no well-defined boundary, clip itself over to a new page, make sure it adds the reference to the WholeSortOfGeneralMishMash, and I'll add your heart's content
Seriously, though, when I teach this stuff, besides bending people's minds and introducing them to high literature, my point is that the designer has almost unlimited power to construct the boundaries and form of the world, and that we, as designers, could use some rules to guide our movements. We have no choice - we will design a world. Now, how do we choose what sort of world we'll create? --AlistairCockburn
p.s. I mentioned this to Deanna, my wife. She just smiled and said, "Of course." Of course, she's a woman, and a sculptor, so perhaps she's used to viewing the world alternately as made of objects / relationships. My coffee buddy also found this pretty straightforward. Must just be the people I hang around with. Anybody else with me on this? Anybody lost? --Alistair
Alistair: this is good stuff. I'm right in there with you, I think.
Is there some particular high literature you're thinking of? E. E. Cummings, EdwardEstlinCummings maybe?
Increasingly I tend to think about objects as collections of relations, all mapping the object identity onto members of other domains. This started when I realised that there's no intrinsic difference between an attribute and an association (this can be very difficult to get accross to people who's minds have been poisoined by the UML), and not much of a one between an attribute and a method that returns a value, but takes no arguments. But a method that returns a value and does take arguments is very much like a qualified association. --KeithBraithwaite
Right on, about collections of relations, attributes and states and functions, etc. It's gets worse, because all you can hang onto in the end is the identity of an object, but then identity starts multiplying all over the place ("Do you want to track the person or the role of the person?").
The reading material for my course on OO design consists of excerpts from the HuntingOfTheSnark (by LewisCarroll), the TaoTeChing, and MostlyHarmless (by DouglasAdams). Most of the people in my classes haven't heard of any of those, which makes it High Literature to them. --Alistair
Really? What sort of illiterates are you teaching here? ;-) ...<- mostly programmers, probably just like the ones reading this :-), so careful what you say!!
(p.s. haven't yet found the e.e cummings to use in the class. Besides, I don't want to hurt them, just bend things around a little)
How about this. This can be found on pp77 of Selected Poems Faber and Faber, ISBN 0571089860 which does not appear on Amazon.com, (or somewhere else in the W W Norton & Co edition ISBN 0871401541 which does)
By the way, I note with interest that Faber and Faber print his name as E.E. Cummings throughout, as does the Academy of American Poets. I have followed that convention here. See http://members.tripod.com/~DWipf/cummings.html#OK for more discussion.
I like it. Thank you. - Alistair
but i notice he spells it e.e.cummings on his own book. which mostly tells be that AcademyOfAmericanPoets? uses his legal name, not his pen name. --ac
All this reminded me of why I got out of hardware: I realized that any digital circuit can be emulated by a truth table, and wrongly decided that hardware was not where I needed to be. Turns out that software is where I needed to be, but I got there via the wrong answer, sort of, well, you get it. - Ted
To be is to be the value of a bound variable --WillardVanOrmanQuine
See NodesAndArcs