28.06.2013 Views

Papers in PDF format

Papers in PDF format

Papers in PDF format

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

In this case, the Los Alamos National Laboratory's Advanced Comput<strong>in</strong>g Laboratory has concocted a highly specialized<br />

type of conference announcement that permits extensive automated process<strong>in</strong>g by Web clients throughout Los Alamos.<br />

However, should someone at MIT be look<strong>in</strong>g at the conference announcement, his Web client would fail to recognize<br />

the type and look at the field. As<br />

is a superclass of , all the th<strong>in</strong>gs that the<br />

MIT user's client is accustomed to do<strong>in</strong>g with conference announcements should work with this one.<br />

Nonhierarchical <strong>in</strong>heritance (also known as "multiple <strong>in</strong>heritance") is also important so that duplicate type hierarchies<br />

are not spawned. For example, the fact that a document is restricted to a group or company might possibly apply to any<br />

type of document. Should there be two identical trees, one rooted at and the other at<br />

? Then we might imag<strong>in</strong>e documents for which there is an access charge. Now we just<br />

need four identical trees, rooted at<br />

. There is a better way and it was<br />

demonstrated <strong>in</strong> the MIT Lisp Mach<strong>in</strong>e Flavor system (a Smalltalk-<strong>in</strong>spired object system grafted onto Lisp around<br />

1978): mix<strong>in</strong>s. Mix<strong>in</strong>s are orthogonal classes that can be comb<strong>in</strong>ed <strong>in</strong> any order and with any of the classes <strong>in</strong> the<br />

standard k<strong>in</strong>d-of hierarchy. Here are some example mix<strong>in</strong> classes:<br />

Class Name Fields Contributed Comments<br />

(expla<strong>in</strong>s who can access, possibly a doma<strong>in</strong> name or list<br />

of networks)<br />

User Agent displays<br />

"****DRAFT****"<br />

prom<strong>in</strong>ently, offers to look<br />

up previous version and<br />

show change bars.<br />

HTTP server watches for<br />

documents whose type<br />

<strong>in</strong>herits from this class and<br />

only delivers them to<br />

authorized users;<br />

non-authorized users sent<br />

an explanation with the<br />

name of a person who<br />

could authorize release.<br />

If there are N mix<strong>in</strong>s recognized <strong>in</strong> the public type registry, we might have to have 2^N classes for every class <strong>in</strong> the old<br />

k<strong>in</strong>d-of hierarchy. That's one for every possible subset of mix<strong>in</strong>s, so we'd have classes like<br />

,<br />

etc. This doesn't seem like a great improvement on the 2^N identical trees situation.<br />

However, if we allow documents to specify multiple types<br />

and build the f<strong>in</strong>al composite type at runtime <strong>in</strong> the content editor, HTTP server, and Web user agent, then we need only<br />

have one hierarchy plus a collection of <strong>in</strong>dependent orthogonal mix<strong>in</strong>s. This presents no problem for programmers us<strong>in</strong>g<br />

modern computer languages such as Smalltalk and Common Lisp. These allow new type def<strong>in</strong>itions at run-time and<br />

have had multiple <strong>in</strong>heritance for over a decade. A program implemented <strong>in</strong> a language that has purely static types, e.g,<br />

C++ or Java, is go<strong>in</strong>g to need to <strong>in</strong>clude its own dynamic type system, built from scratch and not based on the<br />

underly<strong>in</strong>g language's type system.<br />

We established then that we need multiple <strong>in</strong>heritance and distributed extensibility. A standard Internet approach to<br />

distributed ma<strong>in</strong>tenance of a hierarchy is found <strong>in</strong> the Doma<strong>in</strong> Name System (DNS), where authority for a zone is<br />

parcelled out and that authority <strong>in</strong>cludes the ability to parcel out subzones [Stevens 1994; Mockapetris 1987a ;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!