On Tunes infrastructure

Lynn H. Maxson Lynn H. Maxson" <lmaxson@pacbell.net
Fri May 30 21:02:02 2003


"Reflection is the ability of systems to know enough about 
themselves so as to dynamically metaprogram their own 
behavior, so as to adapt themselves to changing 
circumstances, so as to relieve programmers and 
administrators from so many tasks that currently need to be 
done manually.

Metaprogramming is the activity of manipulating programs that 
in turn manipulate programs. It is the most general technique 
whereby the programming activity can be automated, 
enhanced, and made to go where no programming has gone 
before. ..."

I really don't mind someone saying that a project like Tunes 
requires some preparation prior the readiness of any individual 
to participate in its development.  I do mind if the preparation 
itself, that which we must first traverse, spouts nonsense, 
something which has not, does not, and will not ever occur.

Programs cannot automate themselves through the use of 
other programs beyond the programmed boundaries contained 
in them.  If we as programmers dictate those boundaries by 
our writing of them, no program that we ever write will ever 
extend beyond those boundaries.  In short no program can 
operate outside its own logic.  No program as meta-program 
can either.  Changing the name does not change the limits.

Moreover we are ultimately bound by the instruction set of 
the executing machine.  No instruction set thus far (or even 
proposed) has the capability of extension, of creating an 
instruction or instruction set, not derivable from the existing 
instructions.

Thus concepts like "reflection" and "meta-programming" 
whatever the esoteric imaginings of certain authors simply 
means that programs cannot go to certain places that authors 
can.  If a program goes where no program has gone before, 
it's not due to some mystical nor magical achievement but 
only that a particular sequence of instructions occurred for 
the first time.

We cannot in short imbue programs with "intelligence".  
Instead we must use our own to impart the results of 
intelligent thinking into the logic of programs.  Programs, past, 
present, and future, based on what logic we have imparted 
will never themselves possess intelligence.

If we postulate a self-programming machine, it will create its 
own instruction set for its own purposes based on the 
sub-instruction-level logic circuits available to it.  In any case 
we have no means, not even the threat of extermination, to 
insure that such a machine gives a damn about executing our 
program when it is free to consider more interesting ones of 
its own.

The author of the opening statements on reflection and 
meta-programming states them toward a realm beyond the 
possible.  In going beyond the limits, the space of what is 
possible but not yet explored, he implicitly drags Tunes into 
this fantasy.  By touting them into the impossible, he demeans 
their value within the realm of useful possibilities.

He cannot make good on the delivery.  Tunes cannot.  So why 
not stay within the realm of the possible, which has much yet 
unexplored, instead of going where no program (nor 
programmer) will ever go?

We can only automate clerical, i.e. defined, processes.  
Certainly we want to do this, to relieve manual effort, to 
allow more time for creative pursuits, which we cannot 
automate.  In short let people do what software cannot and 
software what people need not.  The more we allow each to 
do what it does best the more "profitable" the symbiotic 
behavior.

We don't have to gussy up reflection and meta-programming 
in order to see them as valuable pursuits.