(Stick figure courtesy of Wikipedia, created by Jleedev:
en.wikipedia.org/wiki/Stick_fig…)
2/39
It has two parts. As you will see later they are not necessarily software objects.
-The DOer is a thing that has a specific job that it Does.
3/39
4/39
The user is not part of the pattern.
5/39
7/39
Here we see that the pattern is hierarchical, and we are prompted to think, not of the artifact, but of its life cycle.
9/39
-The Operation Phase. The object code of the application is executing.
10/39
11/39
-The DOer is the Operation Phase of the application’s life cycle. The code is executing in an operational environment.
12/39
15/39
Definition: A Self-Revealing Parameter is a parameter equipped with sufficient viewer(s)/editor(s) for examining and/or specifying it.
(See )
16/39
(See melconway.com/Home/pdf/human…)
17/39
Here you see the power of Smalltalk in implementing the pattern.
18/39
Definitions:
-An Accessible API is a collection of one or more Self-revealing Services.
19/39
20/39
Systems are built by combining externally-built services. Therefore it should be possible to take a conventional service built elsewhere and have a way to turn it into a Self-revealing Service.
21/39
23/39
This example applies the Humane Dozen to tool building.
Definitions:
24/39
*Immediate-Turnaround Development*
every change to the source program is immediately reflected in the behavior of the object program. At the very least we need a very fast compiler or an alternative to the edit-compile-link-run-debug cycle.
25/39
*WYSIWYG development*
we further reduce the cognitive load on the developer with this requirement:
Eliminate the distinction in the artisan’s mind between an executable object language and a readable source language.
26/39
27/39
28/39
For the sake of brevity, we’ll call it a wTool. We need a name for the Application Under Construction, which we’ll call the App.
29/39
1. The Operation and Construction phase of the life cycle (namely, the DOer and SHOWer parts of the wTool) are running concurrently.
2. As you have seen many times above, their SHOWers are projecting their results side-by-side.
31/39
How to represent this? This is an interesting demonstration of the expressive power of the pattern. It also relies heavily on Humane Dozen #8, Isomorphic.
(See melconway.com/Working/WP_20.… for context)
32/39
You can see these elements in the walk-throughs in melconway.com/Working/WP_20.…:
33/39
34/39
-A new component instance can be dragged out from a component palette.
-A showing wire can be deleted.
35/39
-A new wire instance can be created (subject to compatibility constraints embodied in the components) by dragging between a source and a sink connector of two different showing components.
36/39
37/39
•The semantics of Artisan events in the App SHOWer are defined by the respective projector components.
38/39
A general conjecture will follow.
I believe that there are many examples, in multiple domains, that can be added to these six.
39/39