RM: In the Mindreading demo (http://www.mindreadings.com/ControlDemo/Mindread.html) for example the computer does a very good job (if you are good at controlling the position of the avatars) of determining which of three possible definitions of q.i – moving Homer, Bart or Lisa – corresponds to the perception that is actually under control ,p.
PY: I encourage everyone to test out the demo to see how good of a job RM has done to demonstrate the TCV.
PY: Rick describes three possible definitions of q.i – Homer, Bart, and Lisa. H, B, and L are what you would call “different instances of the same object”. They all have the same abstract data structure.
PY: In code, we would declare H, B, and L as data of the same “type”. For example, just as you would declare
int: a
int: b
int: c
to create three objects of the integer type, you would declare
avatar: Homer
avatar: Bart
avatar: Lisa
to create three objects of the avatar type.
PY: The avatar type looks something like this:
abstract data type: avatar
{
DATA
int: x_coordinate
int: y_coordinate
boolean: state
METHODS
function: change_state
//this is a definition of an object method inside the //object type definition
{
if state = normal
state = mr_burns
else
state = normal
} // end of function declaration
} // end of type declaration
PY: Note, objects are defined as data and method. These definitions tell the compiler how to implement the object when its instances are declared in the program. The actual program would look like this:
main()
{
avatar: H, B, L // declare object instances
for (t = 0; t < time_limit; t++) // the “for” loop
{ // every instant is a loop
H,B,L += cursor movement
// apply the same action to each avatar
H += rand(1)
B += rand(2)
L += rand(3)
// apply a different disturbance to each avatar
if correlation(H) < 0.05
H.change_state // object.method syntax
if correlation(B) < 0.05
B.change_state // same method, different instance
if correlation(L) < 0.05
L.change_state // ditto
} // end for loop
} // end main function
PY: This program doesn’t actually work, but it has all the main components (except the donuts).
PY: We see that different instances of the same abstract data type object can be considered different definitions of qi because the disturbance affects each avatar independently.
PY: We also see that Bart can turn into mr burns without even touching the mouse. It’s a peculiarity of Bart’s disturbance function ( which is the same on each trial) and the initial conditions. Bart takes long diagonal strides which can accidentally dodge many rows of donuts in a row. Since the computer code doesn’t distinguish between action and disturbance, it can incorrectly determine that Bart is being controlled.
PY: This reminds me of the last chapter follow up question to ch.1 (B:CP). If a person is controlling an RC vehicle, and the vehicle spontaneously takes the correct turn (i.e. drifts into an optimal orientation) at every instant, what role would the controller’s actions play?
PY: Do you think it’s valid to count different instances of the same object as different definitions of qi? There is something I don’t like about it, but which I can’t describe in detail at the moment. Suffice it to say, that different “instances” of an object are certainly not different “aspects” of the object. But are they different aspects of the perceptual experience as a whole? RM accepts this without hesitation.
PY: All we can say right now is that each instance of an object contains all of its different aspects (which are enumerated as data types during object definition). Controlling between B, H, and L amounts to the control of the same aspect of a different instance of the same object.
PY: Note, RM programs in JavaScript, which doesn’t implement abstract data types. Any more detailed discussion of class(abstract data type)-based object-oriented programming must be deferred until I receive adequate feedback to know where everyone stands in terms of understanding my C++ coding.