November 2000
- Walking Philip Loguinov, Draymoor
- MUD-Dev digest, Vol 1 #231 - 4 msgs Dr. Cat
- MUD-Dev digest, Vol 1 #231 - 4 msgs J C Lawrence
- MUD-Dev digest, Vol 1 #231 - 4 msgs Koster, Raph
- Atomic functions Felix A. Croes
- Atomic functions Ben
- Atomic functions Christopher Allen
- Atomic functions Ben
- Atomic functions Felix A. Croes
- Atomic functions KevinL
- Atomic functions Felix A. Croes
- Atomic functions KevinL
- Atomic functions KevinL
- Mud Dev FAQ part II Marian Griffith
- Walking Robert Zubek
- Opinions (even harsh) on Castle Marrach by Skotos? Christopher Allen
- Articles & Columns at Skotos Christopher Allen
- skotos David Zimet
- skotos Christopher Allen
- "An essay on d00dism and the MMORPG" Koster, Raph
- "An essay on d00dism and the MMORPG" Marian Griffith
- "An essay on d00dism and the MMORPG" birgit.schulte@philips.com
- "An essay on d00dism and the MMORPG" Norman Short
- "An essay on d00dism and the MMORPG" Jeff Freeman
- "An essay on d00dism and the MMORPG" gmiller@classic-games.com
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Lars Duening
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Lars Duening
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Lars Duening
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Paul Schwanz - Enterprise Services
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" Peter
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" KevinL
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" KevinL
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Xuri
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" KevinL
- "An essay on d00dism and the MMORPG" Rhys
- "An essay on d00dism and the MMORPG" Justin Rogers
- "An essay on d00dism and the MMORPG" Ted Milker
- "An essay on d00dism and the MMORPG" Steve {Bloo} Daniels
- "An essay on d00dism and the MMORPG" Zak Jarvis
- "An essay on d00dism and the MMORPG" Patrick Dughi
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Madrona Tree
- "An essay on d00dism and the MMORPG" Hans-Henrik Staerfeldt
- "An essay on d00dism and the MMORPG" Madrona Tree
- "An essay on d00dism and the MMORPG" Michael Tresca
- "An essay on d00dism and the MMORPG" Jeff Freeman
- "An essay on d00dism and the MMORPG" Jon Lambert
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" |Eric|
- "An essay on d00dism and the MMORPG" Miroslav Silovic
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Corey Crawford
- "An essay on d00dism and the MMORPG" ghovs@ghovs.moo.ca
- "An essay on d00dism and the MMORPG" Corey Crawford
- "An essay on d00dism and the MMORPG" Marian Griffith
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Richard Tew
- "An essay on d00dism and the MMORPG" Chris Gray
- "An essay on d00dism and the MMORPG" Steve {Bloo} Daniels
- "An essay on d00dism and the MMORPG" Richard Tew
- "An essay on d00dism and the MMORPG" msew
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" the_logos@www.achaea.com
- "An essay on d00dism and the MMORPG" geoffrey@yorku.ca
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" the_logos@www.achaea.com
- "An essay on d00dism and the MMORPG" Geoffrey@yorku.ca
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" Jason Belhumeur
- "An essay on d00dism and the MMORPG" Val Trullinger
- "An essay on d00dism and the MMORPG" Lee Sheldon
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Robert Zubek
- "An essay on d00dism and the MMORPG" Eric Rhea
- "An essay on d00dism and the MMORPG" Wells, Thomas
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Richard Tew
- "An essay on d00dism and the MMORPG" Koster, Raph
- "Virtual" What? Dave Rickey
- Object Models Ben
- Object Models J C Lawrence
- Object Models Dmitri Zagidulin
- Object Models KevinL
- Object Models Tony Wooster
- Object Models david.l.smith@home.com
- Object Models KevinL
- Object Models Gavin Doughtie
- Object Models John Robert Arras
- Object Models KevinL
- Object Models Bruce
- Object Models Ben Chambers
- Object Models Bruce
- Object Models KevinL
- Object Models Gavin Doughtie
- Object Models KevinL
- Object Models Travis Casey
- Object Models John Buehler
- Object Models Travis Casey
- Object Models John Buehler
> Travis Casey writes:
> Monday, November 27, 2000, 1:44:49 AM, John Buehler
> <johnbue@msn.com> wrote:
> > Loose contracts give you room to add behaviors, but it also limits the
> > things that the client of a contract can rely on. If you have
> a component
> > that has temperature and a component that doesn't, yet the 'sharpen'
> > contract makes no statement about the need for temperature
> information, you
> > may get some unusual behaviors that you don't want.
>
> I think this is getting to a different point than I was talking about.
> Let me see if I can be clearer:
>
> A contract specifies what must be supplied and what must be returned
> -- but there's nothing in the idea of a contract that requires that
> everything that is supplied be explicitly passed as a parameter. This
> leaves room for later revision of contracts without necessarily
> changing the code interfaces.
I agree that a contract does not implicitly require that everything be
available as a parameter. But a strict contract will usually make as useful
a statement about what the method does as is possible, regardless of where
the method goes for its information.
> For example, the original "sharpen" contract might have been something
> like what follows.
[example snipped]
The contracts that we were writing were very precise. English language only
explained the intent of the precise contract, which was actually expressed
in a kind of contract code language. All components are represented by a
logical data structure (regardless of the actual implementation), and the
contracts expressed themselves as a series of preconditions and
postconditions to its operation. The actual algorithm used by the method
was very intentionally left out. That's because the way that the component
does its thing is the very crux of why we want components - we want to swap
out one way of doing that something with another way. We want to be able to
change the way that something is accomplished, without changing the before
and after, which are assumed to be stable by the system designer. Changing
the before and after means a change of contract.
I'm still leery of getting into the design of a skill system as an example.
I'm not sure how I'd structure it.
Some comments on your example:
1. You have an error handling case where an object cannot be sharpened.
This is an example where strict contracts and strong typing prevent the
possibility of that happening. A component that cannot be sharpened can't
even represent itself to the sharpener. The sharpen method requires that
the component passed to it be an 'edge' component. This would be checked at
compile time, not runtime. This is one reason why weakly typed languages
are a pain in the backside. Error handling was called "One of the four
unsolved problems in software engineering" by one of our consultant types.
I forget what the other three are ;)
2. As I mentioend above, specifying the algorithm used by a method is
generally a very restrictive thing to do. If there's a standard algorithm
that must be used, that's more of a process issue with your development
organization. A contract might impose space or performance restrictions on
the algorithm, but rarely would you want to say that a specific algorithm
must be used. If the algorithm has observable (and required) side-effects,
then those side-effects should be part of the contract.
> I would think that this is a "tight contract" for the sharpening
> method -- it specifies what will be passed in, what will be passed
> out, and what will be done, with no exceptions or changes allowed.
> However, there is still "looseness" in the interface -- if, for
> example, the contract were changed so that the sharpener's Dexterity
> score were also required, it would be accessed through the pointer to
> the sharpener, so a new parameter in the method call would not be
> necessary. Similarly, adding the temperature requirement does not
> affect the calling interface.
Querying for additional information from a parameter is really really
dangerous. Meaning 'related' information. The question is one of whether
you can represent the availability of that additional information in the
static type of that parameter. Is the type of the parameter 'Object', where
you go querying it for possible capabilities, or is the type of the
parameter 'ObjectWithRelatedDescriptor'. In the latter case, you MUST have
that related descriptor. Eliminating the runtime querying and possibility
of failure ensures that the system doesn't start degrading when you forget
to upgrade such-and-such a component. Sure, the system keeps working in a
degraded fashion. Lots of people think that's the cat's meow - I have a
system that isn't built correctly, but it still runs. Oh goodie. Just what
I wanted to deploy to my customers. Wouldn't you rather know that your
system isn't going to work the way you thought it was?
> This is what I meant -- that sometimes, changing what's done does not
> require changing the interface that's exposed to other modules. This
> is true even with a tight contract.
That statement alone is certainly one I can agree with. The line of what is
significant to the contract and what is not is far too subtle to discuss in
a mailing list.
> Exactly -- but a tight contract doesn't require that all values used
> be passed in as parameters via the standard calling interface -- they
> may be accessed through calls to objects that are passed in, like the
> "sharpening" skill and "sharpening-assist" value in the above
> contract.
Agreed.
JB - Object Models Chris Gray
- Object Models John Buehler
- Object Models Chris Gray
- Object Models olag@ifi.uio.no
- Object Models Miroslav Silovic
- Object Models Joe Andrieu
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models KevinL
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models Bruce
- Object Models John Buehler
- Object Models Bruce
- Object Models John Buehler
- Object Models Phillip Lenhardt
- Object Models John Buehler
- Object Models olag@ifi.uio.no
- Object Models Travis Casey
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models msew
- Object Models Russ Lewis
- Object Models John Buehler
- Object Models Phillip Lenhardt
- Object Models Travis Nixon
- Object Models John Buehler
- Object Models msew
- Object Models Andy
- Object Models Christopher Allen
- Object Models Chris Gray
- Object Models Travis Casey
- Object Models Marc Bowden
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Bruce
- Object Models John Buehler
- ADMIN: Lost posts J C Lawrence
- Multiple Inheritance (was: Object Models) Bruce
- Fanfic (Or: Why we can't all get along) Brian 'Psychochild' Green
- Fanfic (Or: Why we can't all get along) John Buehler
- Participatory Content (was Opinions (even harsh) on Castle Marrach by Skotos?) Christopher Allen
- Object Models (OO 101) Gavin Doughtie
- Consistent Characters (Was Remote client connection) John W Pierce
- Consistent Characters (Was Remote client connection) Marian Griffith
- (no subject) John Buehler
- (no subject) Mordengaard
- (no subject) John Buehler
- (no subject) Marian Griffith
- (no subject) John Buehler
- (no subject) John Buehler
- (no subject) KevinL
- (no subject) John Buehler
- (no subject) Joe Andrieu
- (no subject) Bruce
- (no subject) John Buehler
- (no subject) KevinL
- (no subject) John Buehler
- (no subject) KevinL
- (no subject) Dan Merillat
- (no subject) John Buehler
- (no subject) Brian 'Psychochild' Green
- facist marketers / content controllers msew
- facist marketers / content controllers Dave Rickey
- And the lines blur between rl and games!!! msew
- "gossip" Josh Rollyson {dracus}
- Official announce of nevrax.org www site Vincent Archer
- Intersection of Fanfic & Participatory Content Christopher Allen
- A list of Content Creation Eric Rhea
- Refactoring (was Object Models) Gavin Doughtie
- PDA-esque devices used in gaming |Eric|
- Weather and Multiple Planets Greg Mitchell
- Weather and Multiple Planets rayzam
- Interesting EQ rant (very long quote) Brian 'Psychochild' Green
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) Koster, Raph
- Interesting EQ rant (very long quote) rayzam
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) McQuaid, Brad
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) rayzam
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) Davian
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) McQuaid, Brad
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Phillip Lenhardt
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Ananda Dawnsinger
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Ananda Dawnsinger
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Marian Griffith
- Interesting EQ rant (very long quote) Tamzen Cannoy
- Interesting EQ rant (very long quote) Timothy Dang
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Nathan F.Yospe
- Interesting EQ rant (very long quote) Phillip Lenhardt
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) rayzam
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Koster, Raph
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) Klyde Beattie
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Hulbert, Leland
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Willowreed@aol.com
- Interesting EQ rant (very long quote) Willowreed@aol.com
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) Zak Jarvis
- Interesting EQ rant (very long quote) Hulbert, Leland
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) J. Coleman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Chris Lloyd
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Chris Lloyd
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Marian Griffith
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Jon Lambert
- Interesting EQ rant (very long quote) Koster, Raph
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Chris Lloyd
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Dan Shiovitz
- Interesting EQ rant (very long quote) shren
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) shren
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) twm139@its.to
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Timothy Dang
- Interesting EQ rant (very long quote) Michael Tresca
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) Holly Sommer
- Interesting EQ rant (very long quote) Marian Griffith
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Joe Andrieu
- Interesting EQ rant (very long quote) S. Patrick Gallaty
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Brian 'Psychochild' Green
- Interesting EQ rant (very long quote) Zak Jarvis
- Interesting EQ rant (very long quote) John Vanderbeck
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) McQuaid, Brad
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Brian 'Psychochild' Green
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Richard Tew
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Jon Lambert
- Dynamic Timelines Lord Ashon
- Dynamic Timelines |Eric|
- Dynamic Timelines Bruce
- Dynamic Timelines James Thomas
- Dynamic Timelines Travis Casey
- Neopets Matthew Mihaly
- Threads Ben Chambers
- Consistent Characters Jeremy Hovance
- Consistent Characters Travis Casey