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.